Reference Manual (2021.06.04) : Opencore
Reference Manual (2021.06.04) : Opencore
Reference Manual (2021.06.04) : Opencore
[2021.06.04]
Note 4 : Be aware that the following configurations are unsupported by XCPM (at least out of the box):
• Consumer Ivy Bridge (0x0306A9) as Apple disabled XCPM for Ivy Bridge and recommends legacy power
management for these CPUs. _xcpm_bootstrap should manually be patched to enforce XCPM on these
CPUs instead of this option.
• Low-end CPUs (e.g. Haswell+ Pentium) as they are not supported properly by macOS. Legacy workarounds
for older models can be found in the Special NOTES section of acidanthera/bugtracker#365.
2. Cpuid1Mask
Type: plist data, 16 bytes
Failsafe: All zero
Description: Bit mask of active bits in Cpuid1Data.
When each Cpuid1Mask bit is set to 0, the original CPU bit is used, otherwise set bits take the value of Cpuid1Data.
3. DummyPowerManagement
Type: plist boolean
Failsafe: false
Requirement: 10.4
Description: Disables AppleIntelCpuPowerManagement.
Note 1 : This option is a preferred alternative to NullCpuPowerManagement.kext for CPUs without native power
management driver in macOS.
Note 2 : While this option is typically needed to disable AppleIntelCpuPowerManagement on unsupported
platforms, it can also be used to disable this kext in other situations (e.g. with Cpuid1Data left blank).
4. MaxKernel
Type: plist string
Failsafe: Empty
Description: Emulates CPUID and applies DummyPowerManagement on specified macOS version or older.
Note: Refer to the Add MaxKernel description for matching logic.
5. MinKernel
Type: plist string
Failsafe: Empty
Description: Emulates CPUID and applies DummyPowerManagement on specified macOS version or newer.
Note: Refer to the Add MaxKernel description for matching logic.
27
Failsafe: false
Requirement: 11
Description: Force x86 scheme for IMG4 verification.
Note: This option is required on virtual machines when using SecureBootModel different from x86legacy.
12. IncreasePciBarSize
Type: plist boolean
Failsafe: false
Requirement: 10.10
Description: Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GBs.
Note: This option should be avoided whenever possible. A need for this option indicates misconfigured or defective
firmware.
13. LapicKernelPanic
Type: plist boolean
Failsafe: false
Requirement: 10.6 (64-bit)
Description: Disables kernel panic on LAPIC interrupts.
14. LegacyCommpage
Type: plist boolean
Failsafe: false
Requirement: 10.4 - 10.6
Description: Replaces the default 64-bit commpage bcopy implementation with one that does not require
SSSE3, useful for legacy platforms. This prevents a commpage no match for last panic due to no available
64-bit bcopy functions that do not require SSSE3.
15. PanicNoKextDump
Type: plist boolean
Failsafe: false
Requirement: 10.13 (not required for older)
Description: Prevent kernel from printing kext dump in the panic log preventing from observing panic details.
Affects 10.13 and above.
16. PowerTimeoutKernelPanic
Type: plist boolean
Failsafe: false
Requirement: 10.15 (not required for older)
Description: Disables kernel panic on setPowerState timeout.
An additional security measure was added to macOS Catalina (10.15) causing kernel panic on power change
timeout for Apple drivers. Sometimes it may cause issues on misconfigured hardware, notably digital audio, which
sometimes fails to wake up. For debug kernels setpowerstate_panic=0 boot argument should be used, which is
otherwise equivalent to this quirk.
17. ::::::::::::::::::::::
ProvideCurrentCpuInfo
Type: plist boolean
::::::::::::::::::::
Failsafe: false
::::::::::::::
Requirement: 10.8
::::::::::::::::::
Description: Provides current CPU info to the kernel.
::::::::::::::::::::::::::::::::::::::::::::::::::
This quirk currently provides the correct TSC and FSB values to the kernel, as well as disables CPU topology
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
validation.
::::::::::
Note: These patches currently target Microsoft Hyper-V and may need to be extended for other purposes.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
18. SetApfsTrimTimeout
Type: plist integer
Failsafe: -1
Requirement: 10.14 (not required for older)
Description: Set trim timeout in microseconds for APFS filesystems on SSDs.
32
An entry is considered auxiliary when at least one of the following applies:
• Entry is macOS recovery.
• Entry is macOS Time Machine.
• Entry is explicitly marked as Auxiliary.
• Entry is system (e.g. Reset NVRAM).
To display all entries, the picker menu can be reloaded into “Extended Mode” by pressing the Spacebar key.
Hiding auxiliary entries may increase boot performance on multi-disk systems.
4. LauncherOption
Type: plist string
Failsafe: Disabled
Description: Register the launcher option in the firmware preferences for persistence.
Valid values:
• Disabled — do nothing.
• Full — create or update the top priority boot option in UEFI variable storage at bootloader startup.
– For this option to work, RequestBootVarRouting is required to be enabled.
• Short — create a short boot option instead of a complete one.
– This variant is useful for some older types of firmware, typically from Insyde, that are unable to manage
full device paths.
• System — create no boot option but assume specified custom option is blessed.
– This variant is useful when relying on ForceBooterSignature quirk and OpenCore launcher path
management happens through bless utilities without involving OpenCore.
This option allows integration with third-party operating system installation and upgrades (which may overwrite
the \EFI\BOOT\BOOTx64.efi file). The BOOTx64.efi file is no longer used for bootstrapping OpenCore if a
custom option is created. The custom path used for bootstrapping can be specified by using the LauncherPath
option.
Note 1 : Some types of firmware may have NVRAM implementation flaws, no boot option support, or other
incompatibilities. While unlikely, the use of this option may result in boot failures and should only be used
exclusively on boards known to be compatible. Refer to acidanthera/bugtracker#1222 for some known issues
affecting Haswell and other boards.
Note 2 : While NVRAM resets executed from OpenCore would not typically erase the boot option created in
Bootstrap, executing NVRAM resets prior to loading OpenCore will erase the boot option. Therefore, for
significant implementation updates, such as was the case with OpenCore 0.6.4, an NVRAM reset should be
executed with Bootstrap disabled, after which it can be re-enabled.
5. LauncherPath
Type: plist string
Failsafe: Default
Description: Launch path for the LauncherOption property.
Default points to OpenCore.efi. User specified paths, e.g. \EFI\SomeLauncher.efi, can be used to provide
custom loaders, which are supposed to load OpenCore.efi themselves.
6. PickerAttributes
Type: plist integer
Failsafe: 0
Description: Sets specific attributes for the OpenCore picker.
Different OpenCore pickers may be configured through the attribute mask containing OpenCore-reserved
(BIT0~BIT15) and OEM-specific (BIT16~BIT31) values.
Current OpenCore values include:
• 0x0001 — OC_ATTR_USE_VOLUME_ICON, provides custom icons for boot entries:
For Tools, OpenCore will attempt loading a custom icon and fallback to a default icon on failure:
– ResetNVRAM — Resources\Image\ResetNVRAM.icns — ResetNVRAM.icns from icons directory.
– Tools\<TOOL_RELATIVE_PATH>.icns — icon near the tool file with appended .icns extension.
39
For custom boot Entries, OpenCore will attempt loading a custom icon and fallback to the volume icon
or the default icon on failure:
– <ENTRY_PATH>.icns — icon near the entry file with appended .icns extension.
For all other entries, OpenCore will attempt loading a volume icon volume icon by searching as follows, and
:::::::::::
will fallback to the default icon on failure:
– .VolumeIcon.icns file at Preboot volume in per-volume directory (/System/Volumes/Preboot/{GUID}/
when mounted at the default location within macOS) for APFS (if present).
– .VolumeIcon.icns file at the Preboot volume root (/System/Volumes/Preboot/, when mounted at
the default location within macOS) for APFS (otherwise).
– .VolumeIcon.icns file at the volume root for other filesystems.
Note 1 : The Apple picker partially supports placing a volume icon file at the operating system’s Data
volume root, /System/Volumes/Data/, when mounted at the default location within macOS. This approach
is flawed: the file is neither accessible to OpenCanopy nor to the Apple picker when FileVault 2, which is
meant to be the default choice, is enabled. Therefore, OpenCanopy does not attempt supporting Apple’s
approach. A volume icon file may be placed at the root of the Preboot volume for compatibility with both
OpenCanopy and the Apple picker, or use the Preboot per-volume location as above with OpenCanopy as a
preferred alternative to Apple’s approach.
Note 2 : Be aware that using a volume icon on any drive overrides the normal OpenCore picker behaviour
for that drive of selecting the appropriate icon depending on whether the drive is internal or external.
• 0x0002 — OC_ATTR_USE_DISK_LABEL_FILE, provides custom rendered prerendered :::::::::::
titles for boot entries :
• from
:::::
.disk_label (.disk_label_2x) file near next to the
::::::::::
bootloader for all filesystems.
• <TOOL_NAME>.lbl (<TOOL_NAME>.l2x) file near tool for Tools. Prerendered labels can be generated via
the disklabel utility or the bless command. When disabled or missingtext labels, :, ::::: label:::::
text ::
in
(.contentDetails or .disk_label.contentDetails) are to be rendered insteadwill be rendered if present
::::::::::::::::::::::
instead, otherwise the entry name itself will be rendered.
:::::::::::::::::::::::::::::::::::::::::::::::::
• 0x0004 — OC_ATTR_USE_GENERIC_LABEL_IMAGE, provides predefined label images for boot entries without
custom entries. This may however give less detail for the actual boot entry.
• 0x0008 — OC_ATTR_HIDE_THEMED_ICONS, prefers builtin icons for certain icon categories to match the theme
style. For example, this could force displaying the builtin Time Machine icon. Requires OC_ATTR_USE_VOLUME_ICON.
• 0x0010 — OC_ATTR_USE_POINTER_CONTROL, enables pointer control in the OpenCore picker when available.
For example, this could make use of mouse or trackpad to control UI elements.
• 0x0020 — OC_ATTR_SHOW_DEBUG_DISPLAY, enable display of additional timing and debug information, in
Builtin picker in DEBUG and NOOPT builds only.
• 0x0040 — OC_ATTR_USE_MINIMAL_UI, use minimal UI display, no Shutdown or Restart buttons, affects
OpenCanopy and builtin picker.
• 0x0080 — OC_ATTR_USE_FLAVOUR_ICON, provides flexible boot entry content description, suitable for picking
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
the best media across different content sets:
:::::::::::::::::::::::::::::::::::::::
When enabled, the entry icon in OpenCanopy and the audio assist entry sound in OpenCanopy and builtin
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
boot picker are chosen by something called content flavour. To determine content flavour the following
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
algorithm is
::::::::::::::::
used:
– For a Tool the value is read from Flavour field.
::::::::::::::::::::::::::::::::::::: :::::
– For an automatically discovered entry it is read from the .contentFlavour file next to the bootloader,
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if present.
::::::::::
– For a custom entry it is read from the .contentFlavour file next to the bootloader if Flavour is Auto,
::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: :::::::
otherwise specified via the Flavour value itself.
::::::::::::::::::::::::::::::: :::::::::::
– If read flavour is Auto or there is no .contentFlavour, entry flavour is chosen based on the entry type
::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
(e.g. Windows automatically gets Windows flavour).
:::::::::::::::::::::::::::::::::::::::::::::::
The Flavour value is a sequence of : separated names limited to 64 characters of printable 7-bit ASCII. This
::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
is designed to support up to approximately five names. Each name refers to a flavour, with the first name
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
having the highest priority and the last name having the lowest priority. Such a structure allows describing
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
an entry in a more specific way, with icons selected flexibly depending on support by the audio-visual
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
pack. A missing audio or icon file means the next flavour should be tried, and if all are missing the choice
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
happens based on the type of the entry. Example flavour values: BigSur:Apple, Windows10:Windows.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
OpenShell:UEFIShell:Shell
::::::::::::::::::::::::::::
.
Using flavours means that you can switch between icon sets easily, with the flavour selecting the best
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
available icons from each set. E.g. specifying icon flavour Debian:Linux will use the icon Debian.icns if
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::: :
40
provided, then will try Linux.icns, then will fall back to the default for an OS, which is HardDrive.icns.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
7. PickerAudioAssist
Type: plist boolean
Failsafe: false
Description: Enable screen reader by default in the OpenCore picker.
For the macOS bootloader, screen reader preference is set in the preferences.efires archive in the isVOEnabled.int32
file and is controlled by the operating system. For OpenCore screen reader support, this option is an independent
equivalent. Toggling screen reader support in both the OpenCore picker and the macOS bootloader FileVault 2
login window can also be done by using the Command + F5 key combination.
Note: The screen reader requires working audio support. Refer to the UEFI Audio Properties section for details.
8. PollAppleHotKeys
Type: plist boolean
Failsafe: false
Description: Enable modifier hotkey handling in the OpenCore picker.
In addition to action hotkeys, which are partially described in the PickerMode section and are typically handled
by Apple BDS, modifier keys handled by the operating system bootloader (boot.efi) also exist. These keys
allow changing the behaviour of the operating system by providing different boot modes.
On certain firmware, using modifier keys may be problematic due to driver incompatibilities. To workaround this
problem, this option allows registering certain hotkeys in a more permissive manner from within the OpenCore
picker. Such extensions include support for tapping on key combinations before selecting the boot item, and for
reliable detection of the Shift key when selecting the boot item, in order to work around the fact that hotkeys
which are continuously held during boot cannot be reliably detected on many PS/2 keyboards.
This list of known modifier hotkeys includes:
• CMD+C+MINUS — disable board compatibility checking.
• CMD+K — boot release kernel, similar to kcsuffix=release.
• CMD+S — single user mode.
• CMD+S+MINUS — disable KASLR slide, requires disabled SIP.
• CMD+V — verbose mode.
• Shift+Enter, Shift+Index — safe mode, may be used in combination with CTRL+Enter, CTRL+Index.
9. ShowPicker
Type: plist boolean
Failsafe: false
Description: Show a simple picker to allow boot entry selection.
10. TakeoffDelay
Type: plist integer, 32 bit
Failsafe: 0
Description: Delay in microseconds executed before handling the OpenCore picker startup and action hotkeys.
Introducing a delay may give extra time to hold the right action hotkey sequence to, for instance, boot into
recovery mode. On some platforms, setting this option to a minimum of 5000-10000 microseconds may be
required to access action hotkeys due to the nature of the keyboard driver.
41
Type: plist string
Failsafe: Auto
Description: Choose specific icon set to be used for boot management.
The following values are supported:::
An::::
icon:::
set::
is::
a::::::::
directory:::::
path:::::::
relative:::
to ::::::::::::::::
Resources\Image,::::::
where::::
the :::::
icons
and an optional manifest are located. It is recommended for the artists to use provide their sets
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
in the Vendor\Set
format, e.g. Acidanthera\GoldenGate.
:::::::::::::::::::::::::::::::::::
Sample resources provided as a part of OcBinaryData repository provide the following icon set:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
• Auto:::::::::::::::::::::::
Acidanthera\GoldenGate — Automatically select one setof icons based on the DefaultBackground
colour:::::::
macOS ::11::::::
styled::::
icon:::
set.
• Default::::::::::::::::::
Acidanthera\Syrah — Normal icon set(without prefix):::::::
macOS :::::
10.10 ::::::
styled ::::
icon :::
set.
• Old:::::::::::::::::::::::
Acidanthera\Chardonnay — Vintage icon set(Old filename prefix). :::::::
macOS ::::
10.4 ::::::
styled ::::
icon :::
set.:
For convenience purposes there also are predefined aliases:
::::::::::::::::::::::::::::::::::::::::::::::::::::
• Modern:::::
Auto — Nouveau icon set (::::::::::::
Automatically::::::
select :::
one:::
set::
of:::::
icons :::::
based:::
on :::
the ModernDefaultBackground
::::::::::::::::::
filename prefix)colour: Acidanthera\GoldenGate for Syrah Black and Acidanthera\Chardonnay
::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::: :::::::
for Light
Gray.
::::
• Other value Default
:::::::
— Custom icon set if supported by installed resources:::::::::::::::::::::::
Acidanthera\GoldenGate.
3. DisableWatchDog
Type: plist boolean
Failsafe: false
Description: Some types of firmware may not succeed in booting the operating system quickly, especially in
debug mode. This results in the watchdog timer aborting the process. This option turns off the watchdog timer.
4. DisplayDelay
Type: plist integer
Failsafe: 0
Description: Delay in microseconds executed after every printed line visible onscreen (i.e. console).
43
UEFI variable log does not include some messages and has no performance data. To maintain system integrity,
the log size is limited to 32 kilobytes. Some types of firmware may truncate it much earlier or drop completely if
they have no memory. Using the non-volatile flag will cause the log to be written to NVRAM flash after every
printed line.
To obtain UEFI variable logs, use the following command in macOS:
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-log |
awk '{gsub(/%0d%0a%00/,"");gsub(/%0d%0a/,"\n")}1'
Warning: Certain firmware appear to have defective NVRAM garbage collection. As a result, they may not be
able to always free space after variable deletion. Do not enable non-volatile NVRAM logging on such devices
unless specifically required.
While the OpenCore boot log already contains basic version information including build type and date, this
information may also be found in the opencore-version NVRAM variable even when boot logging is disabled.
File logging will create a file named opencore-YYYY-MM-DD-HHMMSS.txt (in UTC) under the EFI volume root with
log contents (the upper case letter sequence is replaced with date and time from the firmware). Please be warned
that some file system drivers present in firmware are not reliable and may corrupt data when writing files through
UEFI. Log writing is attempted in the safest manner and thus, is very slow. Ensure that DisableWatchDog is set
to true when a slow drive is used. Try to avoid frequent use of this option when dealing with flash drives as large
I/O amounts may speed up memory wear and render the flash drive unusable quicker.
When interpreting the log, note that the lines are prefixed with a tag describing the relevant location (module) of
the log line allowing better attribution of the line to the functionality.
The list of currently used tags is as follows.
Drivers and tools:
• BMF — OpenCanopy, bitmap font
• BS — Bootstrap
• GSTT — GoptStop
• HDA — AudioDxe
• KKT — KeyTester
• MMDD — MmapDump
• OCPAVP — PavpProvision
• OCRST — ResetSystem
• OCUI — OpenCanopy
• OC — OpenCore main, also OcMainLib
• VMOPT — VerifyMemOpt
Libraries:
• AAPL — OcDebugLogLib, Apple EfiBoot logging
• OCABC — OcAfterBootCompatLib
• OCAE — OcAppleEventLib
• OCAK — OcAppleKernelLib
• OCAU — OcAudioLib
• OCA —- OcAcpiLib
• OCBP — OcAppleBootPolicyLib
• OCB — OcBootManagementLib
• OCLBT — OcBlitLib
::::: ::::::::::::
• OCCL — OcAppleChunkListLib
• OCCPU — OcCpuLib
• OCC — OcConsoleLib
• OCDC — OcDriverConnectionLib
• OCDH — OcDataHubLib
• OCDI — OcAppleDiskImageLib
• OCDM — OcDeviceMiscLib
• OCFS — OcFileLib
45
• OCFV — OcFirmwareVolumeLib
• OCHS — OcHashServicesLib
• OCI4 — OcAppleImg4Lib
• OCIC — OcImageConversionLib
• OCII — OcInputLib
• OCJS — OcApfsLib
• OCKM — OcAppleKeyMapLib
• OCL — OcDebugLogLib
• OCM — OcMiscLib
• OCMCO — OcMachoLib
• OCME — OcHeciLib
• OCMM — OcMemoryLib
• OCPE — OcPeCoffLib, OcPeCoffExtLib
• OCPI — OcFileLib, partition info
• OCPNG — OcPngLib
• OCRAM — OcAppleRamDiskLib
• OCRTC — OcRtcLib
• OCSB — OcAppleSecureBootLib
• OCSMB — OcSmbiosLib
• OCSMC — OcSmcLib
• OCST — OcStorageLib
• OCS — OcSerializedLib
• OCTPL — OcTemplateLib
• OCUC — OcUnicodeCollationLib
• OCUT — OcAppleUserInterfaceThemeLib
• OCXML — OcXmlLib
This will toggle Apple NVRAM variable csr-active-config between 0 for SIP Enabled and a practical default
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
value for SIP Disabled (currently 0x26F).
:::::::::::::::::::::::::::::::::::::
Note1: It is strongly recommended not to make a habit of running macOS with SIP disabled. Use of this boot
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
option may make it easier to quickly disable SIP protection when genuinely needed - it should be re-enabled
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
46
again afterwards.
::::::::::::::::
Note2 : OC uses 0x26F even though csrutil disable on Big Sur sets 0x7F. To explain the choice:
::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::
• :::::::
csrutil:::::::::
disable :: --no-internal actually sets 0x6F, and this is preferable because CSR_ALLOW_APPLE_INTERNAL
:::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
(0x10) prevents updates (unless you are running an internal build of macOS).
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
• :::::::::::::::::::::::::::
CSR_ALLOW_UNAPPROVED_KEXTS :(::::: 0x200:)::is:::::::::
generally:::::::
useful, ::
in::::
the::::
case:::::::
where ::::
you :::
do :::::
need ::
to:::::
have::::
SIP
disabled, as it allows installing unsigned kexts without manual approval in System Preferences.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
• ::::::::::::::::::::::::::::::::
CSR_ALLOW_UNAUTHENTICATED_ROOT :(:::::: 0x800):::
is ::::
not ::::::::
practical:::
as ::
it:::::::::
prevents :::::::::::
incremental :::::::::
(non-full):::::
OTA
updates.
::::::::
Note3 : For any other value which you may need to use, it is possible to configure CsrUtil.efi as a TextMode
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::
Tools entry to configure a different value, e.g. use toggle 0x6F in Arguments to toggle the SIP disabled value
::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::: ::::::::::::::::::::::::::::
set by default by csrutil disable --no-internal in Big Sur.
:::::::::::::::::::::::::::::::::::::::::::::: ::::::::::
4. ApECID
Type: plist integer, 64 bit
Failsafe: 0
Description: Apple Enclave Identifier.
Setting this value to any non-zero 64-bit integer will allow using personalised Apple Secure Boot identifiers. To
use this setting, generate a random 64-bit number with a cryptographically secure random number generator.
As an alternative, the first 8 bytes of SystemUUID can be used for ApECID, this is found in macOS 11 for Macs
without the T2 chip.
With this value set and SecureBootModel valid (and not Disabled), it is possible to achieve Full Security of
Apple Secure Boot.
To start using personalised Apple Secure Boot, the operating system must be reinstalled or personalised. Unless
the operating system is personalised, macOS DMG recovery cannot be loaded. In cases where DMG recovery
is missing, it can be downloaded by using the macrecovery utility and saved in com.apple.recovery.boot as
explained in the Tips and Tricks section. Note that DMG loading needs to be set to Signed to use any DMG
with Apple Secure Boot.
To personalise an existing operating system, use the bless command after loading to macOS DMG recovery.
Mount the system volume partition, unless it has already been mounted, and execute the following command:
bless bless --folder "/Volumes/Macintosh HD/System/Library/CoreServices" \
--bootefi --personalize
On macOS versions before macOS 11, which introduced a dedicated x86legacy model for models without the T2
chip, personalised Apple Secure Boot may not work as expected. When reinstalling the operating system, the
macOS Installer from macOS 10.15 and older will often run out of free memory on the /var/tmp partition when
trying to install macOS with the personalised Apple Secure Boot. Soon after downloading the macOS installer
image, an Unable to verify macOS error message will appear.
To workaround this issue, allocate a dedicated RAM disk of 2 MBs for macOS personalisation by entering the
following commands in the macOS recovery terminal before starting the installation:
disk=$(hdiutil attach -nomount ram://4096)
diskutil erasevolume HFS+ SecureBoot $disk
diskutil unmount $disk
mkdir /var/tmp/OSPersonalizationTemp
diskutil mount -mountpoint /var/tmp/OSPersonalizationTemp $disk
5. AuthRestart
Type: plist boolean
Failsafe: false
Description: Enable VirtualSMC-compatible authenticated restart.
Authenticated restart is a way to reboot FileVault 2 enabled macOS without entering the password. A dedicated
terminal command can be used to perform authenticated restarts: sudo fdesetup authrestart. It is also used
when installing operating system updates.
47
(h) Installing macOS with Apple Secure Boot enabled is not possible while using HFS+ target volumes. This
may include HFS+ formatted drives when no spare APFS drive is available.
The installed operating system may have sometimes outdated Apple Secure Boot manifests on the Preboot
partition, resulting in boot failures. This is likely to be the case when an “OCB: Apple Secure Boot prohibits this
boot entry, enforcing!” message is logged.
When this happens, either reinstall the operating system or copy the manifests (files with .im4m extension, such as
boot.efi.j137.im4m) from /usr/standalone/i386 to /Volumes/Preboot/<UUID>/System/Library/CoreServices.
Here, <UUID> is the system volume identifier. On HFS+ installations, the manifests should be copied to
/System/Library/CoreServices on the system volume.
For more details on how to configure Apple Secure Boot with UEFI Secure Boot, refer to the UEFI Secure Boot
section.
6. Name
Type: plist string
Failsafe: Empty
Description: Human readable entry name displayed in the OpenCore picker.
7. Path
Type: plist string
Failsafe: Empty
Description: Entry location depending on entry type.
• Entries specify external boot options, and therefore take device paths in the Path key. Care should be
exercised as these values are not checked. Example: PciRoot(0x0)/Pci(0x1,0x1)/.../\EFI\COOL.EFI
• Tools specify internal boot options, which are part of the bootloader vault, and therefore take file paths
relative to the OC/Tools directory. Example: OpenShell.efi.
8. RealPath
Type: plist boolean
52
• 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeatures
Combined FirmwareFeatures and ExtendedFirmwareFeatures. Present on newer Macs to avoid extra parsing
of SMBIOS tables.
• 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeaturesMask
Combined FirmwareFeaturesMask and ExtendedFirmwareFeaturesMask. Present on newer Macs to avoid
extra parsing of SMBIOS tables.
• 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_BID
Hardware BoardProduct (e.g. Mac-35C1E88140C3E6CF). Not present on real Macs, but used to avoid extra
parsing of SMBIOS tables, especially in boot.efi.
• 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_MLB
Hardware BoardSerialNumber. Override for MLB. Present on newer Macs (2013+ at least).
• 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_ROM
Hardware ROM. Override for ROM. Present on newer Macs (2013+ at least).
• 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:SSN
Serial number. Present on newer Macs (2013+ at least).
• 7C436110-AB2A-4BBB-A880-FE41995C9F82:prev-lang:kbd
ASCII string defining default keyboard layout. Format is lang-COUNTRY:keyboard, e.g. ru-RU:252 for Russian
locale and ABC keyboard. Also accepts short forms: ru:252 or ru:0 (U.S. keyboard, compatible with 10.9). Full
decoded keyboard list from AppleKeyboardLayouts-L.dat can be found here. Using non-latin keyboard on 10.14
will not enable ABC keyboard, unlike previous and subsequent macOS versions, and is thus not recommended in
case 10.14 is needed.
• 7C436110-AB2A-4BBB-A880-FE41995C9F82:security-mode
ASCII string defining FireWire security mode. Legacy, can be found in IOFireWireFamily source code in
IOFireWireController.cpp. It is recommended not to set this variable, which may speedup system startup. Setting
to full is equivalent to not setting the variable and none disables FireWire security.
• 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:UIScale
One-byte data defining boot.efi user interface scaling. Should be 01 for normal screens and 02 for HiDPI
screens.
• 7C436110-AB2A-4BBB-A880-FE41995C9F82:ForceDisplayRotationInEFI
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
32-bit integer defining display rotation. Can be 0 for no rotation or any of 90, 180, 270 for matching rotation in
::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: :::::::::::::::::::::
degrees.
::::::::
• 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:DefaultBackgroundColor
Four-byte BGRA data defining boot.efi user interface background colour. Standard colours include BF BF BF
00 (Light Gray) and 00 00 00 00 (Syrah Black). Other colours may be set at user’s preference.
56
and related. Set to 1MB (0x100000) by default, can be tuned for faster booting.
– log-level=VALUE — log level bitmask.
∗ 0x01 — enables trace logging (default).
– serial=VALUE — enables serial logging.
∗ 0 — disables serial logging (default).
∗ 1 — enables serial logging for EXITBS:END onwards.
∗ 2 — enables serial logging for EXITBS:START onwards.
∗ 3 — enables serial logging when debug protocol is missing.
∗ 4 — enables serial logging unconditionally.
– timestamps=VALUE — enables timestamp logging.
∗ 0 — disables timestamp logging.
∗ 1 — enables timestamp logging (default).
– log=VALUE — deprecated starting from 10.15.
∗ 1 — AppleLoggingConOutOrErrSet/AppleLoggingConOutOrErrPrint (classical ConOut/StdErr)
∗ 2 — AppleLoggingStdErrSet/AppleLoggingStdErrPrint (StdErr or serial?)
∗ 4 — AppleLoggingFileSet/AppleLoggingFilePrint (BOOTER.LOG/BOOTER.OLD file on EFI partition)
– debug=VALUE — deprecated starting from 10.15.
∗ 1 — enables print something to BOOTER.LOG (stripped code implies there may be a crash)
∗ 2 — enables perf logging to /efi/debug-log in the device three
∗ 4 — enables timestamp printing for styled printf calls
– level=VALUE — deprecated starting from 10.15. Verbosity level of DEBUG output. Everything but
0x80000000 is stripped from the binary, and this is the default value.
Note: Enable the AppleDebug option to display verbose output from boot.efi on modern macOS versions. This
will save the log to the general OpenCore log file. For versions before 10.15.4, set bootercfg to log=1. This will
print verbose output onscreen.
• 7C436110-AB2A-4BBB-A880-FE41995C9F82:bootercfg-once
Booter arguments override removed after first launch. Otherwise equivalent to bootercfg.
• 7C436110-AB2A-4BBB-A880-FE41995C9F82:csr-data
:::::::::::::::::::::::::::::::::::::::::::::::
Specify sources of kexts which will be approved regardless of SIP CSR_ALLOW_UNAPPROVED_KEXTS value.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::
Example contents:
::::::::::::::::
<dict><key>kext-allowed-teams</key><array><string>{DEVELOPER-TEAM-ID}</string></array></dict>%00
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
• 7C436110-AB2A-4BBB-A880-FE41995C9F82:efiboot-perf-record
Enable performance log saving in boot.efi. Performance log is saved to physical memory and is pointed
to by the efiboot-perf-record-data and efiboot-perf-record-size variables. Starting from 10.15.4, it can
also be saved to the OpenCore log by setting the AppleDebug option.
• 7C436110-AB2A-4BBB-A880-FE41995C9F82:fmm-computer-name
Current saved host name. ASCII string.
• 7C436110-AB2A-4BBB-A880-FE41995C9F82:nvda_drv
NVIDIA Web Driver control variable. Takes ASCII digit 1 or 0 to enable or disable installed driver.
• 7C436110-AB2A-4BBB-A880-FE41995C9F82:run-efi-updater
Override EFI firmware updating support in macOS (MultiUpdater, ThorUtil, and so on). Setting this to
No or alternative boolean-castable value will prevent any firmware updates in macOS starting with 10.10 at least.
• 7C436110-AB2A-4BBB-A880-FE41995C9F82:StartupMute
Mute startup chime sound in firmware audio support. 8-bit integer. The value of 0x00 means unmuted.
Missing variable or any other value means muted.
• 7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolume
System audio volume level for firmware audio support. 8-bit integer. The bit of 0x80 means muted. Lower bits are
used to encode volume range specific to installed audio codec. The value is capped by MaximumBootBeepVolume
AppleHDA layout value to avoid too loud audio playback in the firmware.
• 5EDDA193-A070-416A-85EB-2A1181F45B18:PEXConf
PCI expansion slot configuration for MacPro7,1. 8-byte sequence describing default PCI slot configuration.
Each byte refers to a configuration for a dedicated PCI slot.
– Slot 1 resides at IOService:/AppleACPIPlatformExpert/PC01@0/AppleACPIPCI/BR1A@0 and its path is
hardcoded. This slot is not behind a muxer.
– Slot 3 resides at IOService:/AppleACPIPlatformExpert/PC03@0/AppleACPIPCI/BR3A@0 and its path is
hardcoded. This slot is not behind a muxer.
– Slots 2, 4-8 are dynamic and are matched based on AAPL,slot-name property with Slot-N value, where N
58
Description: Update Data Hub fields in non-Automatic mode.
Note: This section is ignored and may be removed when Automatic is true.
10. Memory
Type: plist dictionary
Description: Define custom memory configuration.
Note: This section is ignored and may be removed when CustomMemory is false.
11. PlatformNVRAM
Type: plist dictionary
Description: Update platform NVRAM fields in non-Automatic mode.
Note: This section is ignored and may be removed when Automatic is true.
12. SMBIOS
Type: plist dictionary
Description: Update SMBIOS fields in non-Automatic mode.
Note: This section is ignored and may be removed when Automatic is true.
Note : On most newer firmwares these bits are already set, the option may be necessary when "upgrading" the
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
firmware with new features.
:::::::::::::::::::::::::
3. MaxBIOSVersion
Type: plist boolean
Failsafe: false
Description: Sets BIOSVersion to 9999.999.999.999.999, recommended for legacy Macs when using Automatic
PlatformInfo, to avoid BIOS updates in unofficially supported macOS versions.
4. SystemMemoryStatus
Type: plist string
Failsafe: Auto
Description: Indicates whether system memory is upgradable in PlatformFeature. This controls the visibility
of the Memory tab in “About This Mac”.
Valid values:
• Auto — use the original PlatformFeature value.
62
11.3 Tools and Applications
Standalone tools may help to debug firmware and hardware. Some of the known tools are listed below. While some
tools can be launched from within OpenCore (Refer to the Tools subsection for more details), most should be run
separately either directly or from Shell.
To boot into OpenShell or any other tool directly save OpenShell.efi under the name of EFI\BOOT\BOOTX64.EFI on
a FAT32 partition. It is typically unimportant whether the partition scheme is GPT or MBR.
While the previous approach works both on Macs and other computers, an alternative Mac-only approach to bless the
tool on an HFS+ or APFS volume:
sudo bless --verbose --file /Volumes/VOLNAME/DIR/OpenShell.efi \
--folder /Volumes/VOLNAME/DIR/ --setBoot
Listing 3: Blessing tool
11.4 OpenCanopy
OpenCanopy is a graphical OpenCore user interface that runs in External PickerMode and relies on OpenCorePkg
OcBootManagementLib similar to the builtin text interface.
OpenCanopy requires graphical resources located in Resources directory to run. Sample resources (fonts and images)
can be found in OcBinaryData repository. Customised icons can be found over the internet (e.g. here or there).
OpenCanopy provides full support for PickerAttributes and offers a configurable builtin icon set. The default chosen
icon set depends may depend on the DefaultBackgroundColor variable value. For Light Gray :::::
:::::::::::
Refer::
to: Oldicon set
will be used, for other colours –- the one without a prefixPickerVariant for more details.
::::::::::::::::::::::::::::
Predefined icons are saved in the PickerVariant -derived subdirectory of the \EFI\OC\Resources\Image directory. A
::::::::::::::::::::::::::::::::::::::
full list of supported icons (in .icns format) is provided below. When optional icons are missing, the closest available
icon will be used. External entries will use Ext-prefixed icon if available (e.g. OldExtHardDrive.icns).
Note: In the following all dimensions are normative for the 1x scaling level and shall be scaled accordingly for other
levels.
• Cursor — Mouse cursor (mandatory, up to 144x144).
• Selected — Selected item (mandatory, 144x144).
• Selector — Selecting item (mandatory, up to 144x40).
• Left — Scrolling left (mandatory, 40x40).
75
• Right — Scrolling right (mandatory, 40x40).
• HardDrive — Generic OS (mandatory, 128x128).
• Background — Centred background image.
• Apple — Apple OS (128x128).
• AppleRecv — Apple Recovery OS (128x128).
• AppleTM — Apple Time Machine (128x128).
• Windows — Windows (128x128).
• Other — Custom entry (see Entries, 128x128).
• ResetNVRAM — Reset NVRAM system action or tool (128x128).
• Shell — Entry with UEFI Shell name for e.g. OpenShell (128x128).
• Tool — Any other tool (128x128).
Predefined labels are saved in the \EFI\OC\Resources\Label directory. Each label has .lbl or .l2x suffix to represent
the scaling level. Full list of labels is provided below. All labels are mandatory.
• EFIBoot — Generic OS.
• Apple — Apple OS.
• AppleRecv — Apple Recovery OS.
• AppleTM — Apple Time Machine.
• Windows — Windows.
• Other — Custom entry (see Entries).
• ResetNVRAM — Reset NVRAM system action or tool.
• SIPDisabled — Toogle SIP tool with SIP disabled.
::::::::::::::::::::::::::::::::::::::::::::::
• SIPEnabled — Toogle SIP tool with SIP enabled.
:::::::::::::::::::::::::::::::::::::::::::::
• Shell — Entry with UEFI Shell name (e.g. OpenShell).
• Tool — Any other tool.
Note: All labels must have a height of exactly 12 px. There is no limit for their width.
Label and icon generation can be performed with bundled utilities: disklabel and icnspack. Font is Helvetica 12 pt
times scale factor.
Font format corresponds to AngelCode binary BMF. While there are many utilities to generate font files, currently it is
recommended to use dpFontBaker to generate bitmap font (using CoreText produces best results) and fonverter to
export it to binary format.
11.5 OpenRuntime
OpenRuntime is an OpenCore plugin implementing OC_FIRMWARE_RUNTIME protocol. This protocol implements multiple
features required for OpenCore that are otherwise not possible to implement in OpenCore itself as they are needed to
work in runtime, i.e. during operating system functioning. Feature highlights:
• NVRAM namespaces, allowing to isolate operating systems from accessing select variables (e.g. RequestBootVarRouting
or ProtectSecureBoot).
• Read-only and write-only NVRAM variables, enhancing the security of OpenCore, Lilu, and Lilu plugins, such as
VirtualSMC, which implements AuthRestart support.
• NVRAM isolation, allowing to protect all variables from being written from an untrusted operating system (e.g.
DisableVariableWrite).
• UEFI Runtime Services memory protection management to workaround read-only mapping (e.g. EnableWriteUnprotector).
11.6 Properties
1. APFS
Type: plist dict
Failsafe: None
Description: Provide APFS support as configured in the APFS Properties section below.
2. Audio
Type: plist dict
76
8. Quirks
Type: plist dict
Failsafe: None
Description: Apply individual firmware quirks described in the Quirks Properties section below.
9. ReservedMemory
Type: plist array
Description: To be filled with plist dict values, describing memory areas exclusive to specific firmware and
hardware functioning, which should not be used by the operating system. Examples of such memory regions could
be the second 256 MB corrupted by the Intel HD 3000 or an area with faulty RAM. Refer to the ReservedMemory
Properties section below for details.
78
On certain firmware, such as on the MacPro5,1, this may provide better performance or fix rendering issues.
However, this option is not recommended unless there is an obvious benefit as it may result in issues such as
slower scrolling.
This renderer fully supports AppleEg2Info protocol and will provide screen rotation for all EFI applications. In
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
order to provide seamless rotation compatibility with EfiBoot, builtin AppleFramebufferInfo should also be
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::
used, i.e. it may need to be overridden on Mac EFI.
::::::::::::::::::::::::::::::::::::::::::::::
7. GopPassThrough
Type: plist boolean:::::::
string
Failsafe: false:::::::::
Disabled
Description: Provide GOP protocol instances on top of UGA protocol instances.
This option provides the GOP protocol via a UGA-based proxy for firmware that do not implement the protocol.
The supported values for the option are as follows:
:::::::::::::::::::::::::::::::::::::::::::::
86
12. SanitiseClearScreen
Type: plist boolean
Failsafe: false
Description: Some types of firmware reset screen resolutions to a failsafe value (such as 1024x768) on the
attempts to clear screen contents when large display (e.g. 2K or 4K) is used. This option attempts to apply a
workaround.
Note: This option only applies to the System renderer. On all known affected systems, ConsoleMode must be set
to an empty string for this option to work.
13. UgaPassThrough
Type: plist boolean
Failsafe: false
Description: Provide UGA protocol instances on top of GOP protocol instances.
Some types of firmware do not implement the legacy UGA protocol but this may be required for screen output by
older EFI applications such as EfiBoot from 10.4.
Note: This protocol allows newer EfiBoot versions (at least 10.15) to expose screen rotation to macOS. Refer to
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
ForceDisplayRotationInEFI variable description on how to set screen rotation angle.
:::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::
5. AppleFramebufferInfo
Type: plist boolean
Failsafe: false
Description: Replaces the Apple Framebuffer Info protocol with a builtin version. This may be used to override
framebuffer information on VMs and legacy Macs to improve compatibility with legacy EfiBoot such as the one
in macOS 10.4.
87