@@ -554,7 +554,6 @@ \subsection{Contribution}\label{configuration-comp}
554
554
-I/UefiPackages/EfiPkg
555
555
-I/UefiPackages/EfiPkg/Include
556
556
-I/UefiPackages/EfiPkg/Include/X64
557
- -I/UefiPackages/AptioFixPkg/Include
558
557
-I/UefiPackages/AppleSupportPkg/Include
559
558
-I/UefiPackages/OpenCorePkg/Include
560
559
-I/UefiPackages/OcSupportPkg/Include
@@ -939,6 +938,59 @@ \subsection{Introduction}\label{booterintro}
939
938
which is no longer maintained. See \hyperref [troubleshootingtricks]{Tips and Tricks}
940
939
section for migration steps.
941
940
941
+ If you are using this for the first time on a customised firmware, there is a
942
+ list of checks to do first. Prior to starting please ensure that you have:
943
+
944
+ \begin {itemize }
945
+ \tightlist
946
+ \item Most up-to-date UEFI firmware (check your motherboard vendor website).
947
+ \item \texttt {Fast Boot } and \texttt {Hardware Fast Boot } disabled in firmware
948
+ settings if present.
949
+ \item \texttt {Above 4G Decoding } or similar enabled in firmware
950
+ settings if present. Note, that on some motherboards (notably ASUS WS-X299-PRO) this
951
+ option causes adverse effects, and must be disabled. While no other motherboards
952
+ with the same issue are known, consider this option to be first to check if you
953
+ have erratic boot failures.
954
+ \item \texttt {DisableIoMapper } quirk enabled, or \texttt {VT-d } disabled in
955
+ firmware settings if present, or ACPI DMAR table dropped.
956
+ \item \textbf {No } `slide` boot argument present in NVRAM or anywhere else.
957
+ It is not necessary unless you cannot boot at all or see
958
+ \texttt {No slide values are usable! Use custom slide! } message in the log.
959
+ \item \texttt {CFG Lock } (MSR \texttt {0xE2 } write protection) disabled in
960
+ firmware settings if present. Cconsider
961
+ \href {https://github.com/LongSoft/UEFITool/blob/master/UEFIPatch/patches.txt}{patching it}
962
+ if you have enough skills and no option is available. See
963
+ \href {https://github.com/acidanthera/AppleSupportPkg#verifymsre2}{VerifyMsrE2}
964
+ nots for more details.
965
+ \item \texttt {CSM } (Compatibility Support Module) disabled in firmware settings
966
+ if present. You may need to flash GOP ROM on NVIDIA 6xx/AMD 2xx or older. Use
967
+ \href {https://www.win-raid.com/t892f16-AMD-and-Nvidia-GOP-update-No-requests-DIY.html#msg15730}{GopUpdate}
968
+ or \href {http://www.insanelymac.com/forum/topic/299614-asus-eah6450-video-bios-uefi-gop-upgrade-and-gop-uefi-binary-in-efi-for-many-ati-cards/page-1#entry2042163}{AMD UEFI GOP MAKER}
969
+ in case you are not sure how.
970
+ \item \texttt {EHCI/XHCI Hand-off } enabled in firmware settings \texttt {only } if boot
971
+ stalls unless USB devices are disconnected.
972
+ \item \texttt {VT-x }, \texttt {Hyper Threading }, \texttt {Execute Disable Bit } enabled
973
+ in firmware settings if present.
974
+ \item While it may not be required, sometimes you have to disable
975
+ \texttt {Thunderbolt support }, \texttt {Intel SGX }, and \texttt {Intel Platform Trust }
976
+ in firmware settings present.
977
+ \end {itemize }
978
+
979
+ When debugging sleep issues you may want to (temporarily) disable Power Nap and
980
+ automatic power off, which appear to sometimes cause wake to black screen or boot loop
981
+ issues on older platforms. The particular issues may vary, but in general you should
982
+ check ACPI tables first. Here is an example of a bug found in some
983
+ \href {http://www.insanelymac.com/forum/topic/329624-need-cmos-reset-after-sleep-only-after-login/#entry2534645}{Z68 motherboards}.
984
+ To turn Power Nap and the others off run the following commands in Terminal:
985
+ \ begin{lstlisting} [label=powernap, style=ocbash]
986
+ sudo pmset autopoweroff 0
987
+ sudo pmset powernap 0
988
+ sudo pmset standby 0
989
+ \end {lstlisting }
990
+
991
+ \emph {Note }: these settings may reset at hardware change and in certain other circumstances.
992
+ To view their current state use \texttt {pmset -g } command in Terminal.
993
+
942
994
\subsection {Properties }\label {booterprops }
943
995
944
996
\begin {enumerate }
@@ -1094,7 +1146,8 @@ \subsection{Quirks Properties}\label{booterpropsquirks}
1094
1146
contiguous slots of similar types to prevent boot failures.
1095
1147
1096
1148
\emph {Note }: The necessity of this quirk is determined by early boot failures.
1097
- Do not use this unless you fully understand the consequences.
1149
+ It is rare to need this quirk on Haswell or newer. Do not use unless you fully
1150
+ understand the consequences.
1098
1151
1099
1152
\end {enumerate }
1100
1153
@@ -1263,7 +1316,7 @@ \subsection{Add Properties}\label{kernelpropsadd}
1263
1316
\texttt {MatchKernel }\\
1264
1317
\textbf {Type }: \texttt {plist\ string }\\
1265
1318
\textbf {Failsafe }: Empty string\\
1266
- \textbf {Description }: Blocks kernel driver on selected macOS version only.
1319
+ \textbf {Description }: Adds kernel driver on selected macOS version only.
1267
1320
The selection happens based on prefix match with the kernel version, i.e.
1268
1321
\texttt {16.7.0 } will match macOS 10.12.6 and \texttt {16. } will match
1269
1322
any macOS 10.12.x version.
@@ -1558,12 +1611,33 @@ \subsection{Properties}\label{miscprops}
1558
1611
\textbf {Description }: Apply boot configuration described in
1559
1612
\hyperref [miscbootprops]{Boot Properties} section below.
1560
1613
1614
+ \item
1615
+ \texttt {BlessOverride }\\
1616
+ \textbf {Type }: \texttt {plist\ array }\\
1617
+ \textbf {Description }: Add custom scanning paths through bless model.
1618
+
1619
+ Designed to be filled with \texttt {plist\ string } entries containing
1620
+ absolute UEFI paths to customised bootloaders, for example,
1621
+ \texttt {\textbackslash EFI\textbackslash Microsoft\textbackslash bootmgfw.efi }
1622
+ for Microsoft bootloader. This allows unusual boot paths to be automaticlly
1623
+ discovered by the boot picker. Designwise they are equivalent to predefined blessed path, such as
1624
+ \texttt {\textbackslash System\textbackslash Library\textbackslash CoreServices\textbackslash boot.efi },
1625
+ but unlike predefined bless paths they have highest priority.
1626
+
1561
1627
\item
1562
1628
\texttt {Debug }\\
1563
1629
\textbf {Type }: \texttt {plist\ dict }\\
1564
1630
\textbf {Description }: Apply debug configuration described in
1565
1631
\hyperref [miscdebugprops]{Debug Properties} section below.
1566
1632
1633
+ \item
1634
+ \texttt {Entries }\\
1635
+ \textbf {Type }: \texttt {plist\ array }\\
1636
+ \textbf {Description }: Add boot entries to boot picker.
1637
+
1638
+ Designed to be filled with \texttt {plist\ dict } values, describing each load entry.
1639
+ See \hyperref [miscentryprops]{Entry Properties} section below.
1640
+
1567
1641
\item
1568
1642
\texttt {Security }\\
1569
1643
\textbf {Type }: \texttt {plist\ dict }\\
@@ -1573,10 +1647,10 @@ \subsection{Properties}\label{miscprops}
1573
1647
\item
1574
1648
\texttt {Tools }\\
1575
1649
\textbf {Type }: \texttt {plist\ array }\\
1576
- \textbf {Description }: Add new entries to boot picker.
1650
+ \textbf {Description }: Add tool entries to boot picker.
1577
1651
1578
- Designed to be filled with \texttt {plist\ dict } values, describing each block entry.
1579
- See \hyperref [misctoolprops]{Tools Properties} section below.
1652
+ Designed to be filled with \texttt {plist\ dict } values, describing each load entry.
1653
+ See \hyperref [miscentryprops]{Entry Properties} section below.
1580
1654
1581
1655
\emph {Note }: Select tools, for example,
1582
1656
\href {https://github.com/acidanthera/OpenCoreShell}{UEFI Shell} or
@@ -1684,7 +1758,7 @@ \subsection{Boot Properties}\label{miscbootprops}
1684
1758
1685
1759
\begin {itemize }
1686
1760
\tightlist
1687
- \item Set to \texttt {WxH@Bpp } (e.g. \texttt {1920x1080@32 }) \texttt {WxH }
1761
+ \item Set to \texttt {WxH@Bpp } (e.g. \texttt {1920x1080@32 }) or \texttt {WxH }
1688
1762
(e.g. \texttt {1920x1080 }) formatted string to request custom resolution
1689
1763
from GOP if available.
1690
1764
\item Set to empty string not to change screen resolution.
@@ -2020,7 +2094,7 @@ \subsection{Security Properties}\label{miscsecurityprops}
2020
2094
2021
2095
\end {enumerate }
2022
2096
2023
- \subsection {Tools Properties }\label {misctoolprops }
2097
+ \subsection {Entry Properties }\label {miscentryprops }
2024
2098
2025
2099
\begin {enumerate }
2026
2100
\item
@@ -2035,21 +2109,30 @@ \subsection{Tools Properties}\label{misctoolprops}
2035
2109
\texttt {Enabled }\\
2036
2110
\textbf {Type }: \texttt {plist\ boolean }\\
2037
2111
\textbf {Failsafe }: \texttt {false }\\
2038
- \textbf {Description }: This tool will not be listed unless set to
2112
+ \textbf {Description }: This entry will not be listed unless set to
2039
2113
\texttt {true }.
2040
2114
2041
2115
\item
2042
2116
\texttt {Name }\\
2043
2117
\textbf {Type }: \texttt {plist\ string }\\
2044
2118
\textbf {Failsafe }: Empty string\\
2045
- \textbf {Description }: Human readable tool name displayed in boot picker.
2119
+ \textbf {Description }: Human readable entry name displayed in boot picker.
2046
2120
2047
2121
\item
2048
2122
\texttt {Path }\\
2049
2123
\textbf {Type }: \texttt {plist\ string }\\
2050
2124
\textbf {Failsafe }: Empty string\\
2051
- \textbf {Description }: File path to select UEFI tool relative to \texttt {OC/Tools }
2052
- directory.
2125
+ \textbf {Description }: Entry location depending on entry type.
2126
+
2127
+ \begin {itemize }
2128
+ \tightlist
2129
+ \item \texttt {Entries } specify external boot options, and therefore take device
2130
+ paths in \texttt {Path } key. These values are not checked, thus be extremely careful.
2131
+ Example: \texttt {PciRoot(0x0)/Pci(0x1,0x1)/.../\textbackslash EFI\textbackslash COOL.EFI }
2132
+ \item \texttt {Tools } specify internal boot options, which are part of bootloader
2133
+ vault, and therefore take file paths relative to \texttt {OC/Tools } directory.
2134
+ Example: \texttt {CleanNvram.efi }.
2135
+ \end {itemize }
2053
2136
2054
2137
\end {enumerate }
2055
2138
@@ -2281,21 +2364,31 @@ \subsection{Other Variables}\label{nvramvarsother}
2281
2364
\item \texttt {acpi\_ level=0xFFFF5F } (implies
2282
2365
\href {https://github.com/acpica/acpica/blob/master/source/include/acoutput.h}
2283
2366
{\texttt {ACPI\_ ALL\_ COMPONENTS }})
2284
- \item \texttt {cpus=VALUE }
2285
- \item \texttt {debug=VALUE }
2286
- \item \texttt {io=VALUE }
2287
- \item \texttt {keepsyms=1 }
2288
- \item \texttt {kextlog=VALUE }
2289
- \item \texttt {nvda\_ drv=1 }
2367
+ \item \texttt {batman=VALUE } (\texttt {AppleSmartBatteryManager } debug mask)
2368
+ \item \texttt {batman-nosmc=1 } (disable \texttt {AppleSmartBatteryManager } SMC interface)
2369
+ \item \texttt {cpus=VALUE } (maximum number of CPUs used)
2370
+ \item \texttt {debug=VALUE } (debug mask)
2371
+ \item \texttt {io=VALUE } (\texttt {IOKit } debug mask)
2372
+ \item \texttt {keepsyms=1 } (show panic log debug symbols)
2373
+ \item \texttt {kextlog=VALUE } (kernel extension loading debug mask)
2374
+ \item \texttt {nv\_ disable=1 } (disables NVIDIA GPU acceleration)
2375
+ \item \texttt {nvda\_ drv=1 } (legacy way to enable NVIDIA web driver, removed in 10.12)
2376
+ \item \texttt {npci=0x2000 } (\href {https://www.insanelymac.com/forum/topic/260539-1068-officially-released/?do=findComment&comment=1707972}{legacy}, disables \texttt {kIOPCIConfiguratorPFM64 })
2290
2377
\item \texttt {lapic\_ dont\_ panic=1 }
2291
- \item \texttt {slide=VALUE }
2378
+ \item \texttt {slide=VALUE } (manually set KASLR slide)
2379
+ \item \texttt {smcdebug=VALUE } (\texttt {AppleSMC } debug mask)
2380
+ \item \texttt {-amd\_ no\_ dgpu\_ accel } (alternative to \href {https://github.com/acidanthera/WhateverGreen}{WhateverGreen}'s \texttt {-radvesa } for new GPUs)
2292
2381
\item \texttt {-nehalem\_ error\_ disable }
2293
- \item \texttt {-no\_ compat\_ check }
2294
- \item \texttt {-s }
2295
- \item \texttt {-v }
2296
- \item \texttt {-x }
2382
+ \item \texttt {-no\_ compat\_ check } (disable model checking)
2383
+ \item \texttt {-s } (single mode)
2384
+ \item \texttt {-v } (verbose mode)
2385
+ \item \texttt {-x } (safe mode)
2297
2386
\end {itemize }
2298
2387
2388
+ There are multiple external places summarising macOS argument lists:
2389
+ \href {https://osxeon.wordpress.com/2015/08/10/boot-argument-options-in-os-x}{example 1},
2390
+ \href {https://superuser.com/questions/255176/is-there-a-list-of-available-boot-args-for-darwin-os-x}{example 2}.
2391
+
2299
2392
\item
2300
2393
\texttt {7C436110-AB2A-4BBB-A880-FE41995C9F82:bootercfg }
2301
2394
\break
@@ -3033,23 +3126,18 @@ \subsection{Properties}\label{uefiprops}
3033
3126
quirks, like \texttt {RequestBootVarRouting }, require this driver for proper function.
3034
3127
Due to the nature of being a runtime driver, i.e. functioning in parallel with the
3035
3128
target operating system, it cannot be implemented within OpenCore itself.
3036
- \item \href {https://github.com/tianocore/edk2/tree/UDK2018}{\texttt {EmuVariableRuntimeDxe }}
3037
- --- NVRAM emulation driver from \texttt {MdeModulePkg }. NVRAM is supported by most
3038
- modern firmwares. For firmwares with macOS incompatible NVRAM implementation an
3039
- emulated driver may be used. This driver will not preserve NVRAM contents across the
3040
- reboots.
3041
- \item \href {https://github.com/tianocore/edk2/tree/UDK2018}{\texttt {EnglishDxe }}
3129
+ \item \href {https://github.com/acidanthera/audk}{\texttt {EnglishDxe }}
3042
3130
--- Unicode collation driver from \texttt {MdeModulePkg }. This driver is a lightweight
3043
3131
alternative to \texttt {AppleUiSupport }, which contains no Apple-specific code, and
3044
3132
only provides unicode collation support. The driver is not recommended for use
3045
3133
on any hardware but few original Macs.
3046
- \item \href {https://github.com/tianocore/edk2/tree/UDK2018 }{\texttt {EnhancedFatDxe }}
3134
+ \item \href {https://github.com/acidanthera/audk }{\texttt {EnhancedFatDxe }}
3047
3135
--- FAT filesystem driver from \texttt {FatPkg }. This driver is embedded in all
3048
3136
UEFI firmwares, and cannot be used from OpenCore. It is known that multiple firmwares
3049
3137
have a bug in their FAT support implementation, which leads to corrupted filesystems
3050
3138
on write attempt. Embedding this driver within the firmware may be required in case
3051
3139
writing to EFI partition is needed during the boot process.
3052
- \item \href {https://github.com/tianocore/edk2/tree/UDK2018 }{\texttt {NvmExpressDxe }}
3140
+ \item \href {https://github.com/acidanthera/audk }{\texttt {NvmExpressDxe }}
3053
3141
--- NVMe support driver from \texttt {MdeModulePkg }. This driver is included in most
3054
3142
firmwares starting with Broadwell generation. For Haswell and earlier embedding it
3055
3143
within the firmware may be more favourable in case a NVMe SSD drive is installed.
@@ -3068,16 +3156,16 @@ \subsection{Properties}\label{uefiprops}
3068
3156
a closed source \texttt {HFSPlus } driver commonly found in Apple firmwares. While
3069
3157
it is feature complete, it is approximately 3~times slower and is yet to undergo
3070
3158
a security audit.
3071
- \item \href {https://github.com/tianocore/edk2/tree/UDK2018 }{\texttt {XhciDxe }}
3159
+ \item \href {https://github.com/acidanthera/audk }{\texttt {XhciDxe }}
3072
3160
--- XHCI USB controller support driver from \texttt {MdeModulePkg }. This driver is
3073
3161
included in most firmwares starting with Sandy Bridge generation. For earlier firmwares
3074
3162
or legacy systems it may be used to support external USB 3.0 PCI cards.
3075
3163
\end {itemize }
3076
3164
3077
- To compile the drivers from TianoCore UDK use the same command you do normally use
3165
+ To compile the drivers from UDK (EDK II) use the same command you do normally use
3078
3166
for OpenCore compilation, but choose a corresponding package:
3079
3167
\ begin{lstlisting} [label=compileudk, style=ocbash]
3080
- git clone https://github.com/tianocore/edk2 -b UDK2018 UDK
3168
+ git clone https://github.com/acidanthera/audk UDK
3081
3169
cd UDK
3082
3170
source edksetup.sh
3083
3171
make -C BaseTools
@@ -3154,8 +3242,11 @@ \subsection{Quirks Properties}\label{uefiquirkprops}
3154
3242
\textbf {Description }: Advises allocators to avoid allocations above first 4 GBs of RAM.
3155
3243
3156
3244
This is a workaround for select board firmwares, namely GA-Z77P-D3 (rev. 1.1), failing
3157
- to properly access higher memory in UEFI Boot Services. Not recommended unless required
3158
- for booting. May cause recovery boot failures on unaffected boards.
3245
+ to properly access higher memory in UEFI Boot Services. On these boards this quirk is
3246
+ required for booting entries that need to allocate large memory chunks, such as macOS DMG
3247
+ recovery entries. On unaffected boards it may cause boot failures, and thus strongly not
3248
+ recommended. For known issues refer to
3249
+ \href {https://github.com/acidanthera/bugtracker/issues/449}{\texttt {acidanthera/bugtracker\# 449 }}.
3159
3250
3160
3251
\item
3161
3252
\texttt {ExitBootServicesDelay }\\
@@ -3247,11 +3338,13 @@ \subsection{Windows support}\label{troubleshootingwin}
3247
3338
above) prepared with Boot Camp are supposed to work. Third-party UEFI installations
3248
3339
as well as systems partially supporting UEFI boot, like Windows 7, might work with
3249
3340
some extra precautions. Things to keep in mind:
3250
-
3341
+
3251
3342
\begin {itemize }
3252
3343
\item MBR (Master Boot Record) installations are legacy and will not be supported.
3253
- \item Installing Windows and macOS on the same drive is currently unsupported but
3254
- will be addressed later.
3344
+ \item To install Windows, macOS, and OpenCore on the same drive you can specify
3345
+ Windows bootloader path
3346
+ (\texttt {\textbackslash EFI\textbackslash Microsoft\textbackslash bootmgfw.efi })
3347
+ in \texttt {BlessOverride } section.
3255
3348
\item All the modifications applied (to ACPI, NVRAM, SMBIOS, etc.) are supposed
3256
3349
to be operating system agnostic, i.e. apply equally regardless of the OS booted.
3257
3350
This enables Boot Camp software experience on Windows.
@@ -3288,7 +3381,7 @@ \subsection{Windows support}\label{troubleshootingwin}
3288
3381
3289
3382
While Windows support software from Boot Camp solves most of compatibility problems,
3290
3383
sometimes you may have to address some of them manually:
3291
-
3384
+
3292
3385
\begin {itemize }
3293
3386
\item To invert mouse wheel scroll direction \texttt {FlipFlopWheel } must be set
3294
3387
to \texttt {1 } as explained on \href {https://superuser.com/a/364353}{SuperUser}.
@@ -3461,6 +3554,27 @@ \subsection{Tips and Tricks}\label{troubleshootingtricks}
3461
3554
thus not implemented. More detailed explanation can be found on
3462
3555
\href {https://applelife.ru/posts/819790}{AppleLife.ru}.
3463
3556
3557
+ \item
3558
+ \textbf {How can I migrate from \texttt {AptioMemoryFix }? }
3559
+
3560
+ Behaviour similar to that of \texttt {AptioMemoryFix } can be obtained by
3561
+ installing \texttt {FwRuntimeServices } driver and enabling the quirks listed below.
3562
+ Please note, that most of these are not necessary to be enabled. Refer to their
3563
+ individual descriptions in this document for more details.
3564
+ \begin {itemize }
3565
+ \tightlist
3566
+ \item \texttt {ProvideConsoleGop } (UEFI quirk)
3567
+ \item \texttt {AvoidRuntimeDefrag }
3568
+ \item \texttt {DiscardHibernateMap }
3569
+ \item \texttt {EnableSafeModeSlide }
3570
+ \item \texttt {EnableWriteUnprotector }
3571
+ \item \texttt {ForceExitBootServices }
3572
+ \item \texttt {ProtectCsmRegion }
3573
+ \item \texttt {ProvideCustomSlide }
3574
+ \item \texttt {SetupVirtualMap }
3575
+ \item \texttt {ShrinkMemoryMap }
3576
+ \end {itemize }
3577
+
3464
3578
\end {enumerate }
3465
3579
3466
3580
\end {document }
0 commit comments