A Boot Manager for Mac and PC
RefindPlus is a variant of the rEFInd Boot Manager incorporating various fixes and additional features.
The main development focus is on the following units:
However, the enhancements and fixes added to RefindPlus are not limited in scope to those units and include several other Apple Mac as well as multiple UEFI-PC related items that may be of interest to anyone requiring a capable and flexible boot manager.
firmware flash
operation on units such as the MacPro3,1firmware flash
operation on units such as the MacPro3,1PreBoot
volumes.PreBoot
volumes.MyBootMgr is recommended to automate installing RefindPlus on macOS. Alternatively, as the RefindPlus efi file can function as a drop-in replacement for the upstream efi file, the rEFInd package can be installed first and its efi file replaced with the RefindPlus efi file. (Ensure the RefindPlus efi file is renamed to match). This manual process allows installing RefindPlus on other operating systems supported upstream. On macOS, MyBootMgr can optionally be used to set a RefindPlus|OpenCore chain-loading arrangement up on MacPro3,1 to MacPro5,1 as well as on Xserve2,1 and Xserve3,1.
Users may also want to replace upstream filesystem drivers with those packaged with RefindPlus as these are always either exactly the same as upstream versions or have had fixes applied.
RefindPlus will function with the upstream configuration file, refind.conf
, but users may wish to replace this with the RefindPlus configuration file, config.conf
, to configure the additional options provided by RefindPlus. A sample RefindPlus configuration file is available here: config.conf-sample. RefindPlus-Specific options can also be added to a refind.conf file and used that way if preferred.
Note that if RefindPlus is run without activating the additional options, as will be the case if using an unmodified upstream configuration file, a RefindPlus run will be equivalent to running the upstream version it is based on, currently v0.14.0. That is, the additional options provided in RefindPlus must be actively enabled if they are required. This equivalence is subject to a few divergent items in RefindPlus as outlined under the Divergence section below. NB: Upstream post-release code updates are typically ported to RefindPlus as they happen and as such, RefindPlus releases are actually at the state of the base upstream release version plus any such updates and typically include updates for subsequent upstream release versions since the base version.
RefindPlus-Specific funtionality can be configured by adding the tokens below to the upstream configuration file. Additional information is provided in the sample RefindPlus configuration file.
Token | Functionality |
---|---|
continue_on_warning | Proceed as if a key was pressed after screen warnings (for unattended boot) |
csr_dynamic | Actively enables or disables the SIP Policy on Macs |
csr_normalise | Removes the APPLE_INTERNAL bit, when present, to permit OTA updates |
decline_help_icon | Disables feature that may improve loading speed by preferring generic icons |
decline_help_scan | Disables feature that skips showing misc typically unwanted loaders |
decline_help_text | Disables complementary text colours if not required |
decouple_key_f10 | Unmaps the F10 key from native screenshots (the \ key remains mapped) |
disable_amfi | Disables AMFI Checks on macOS if required |
disable_apfs_load | Disables inbuilt provision of APFS filesystem capability |
disable_apfs_sync | Disables feature allowing direct APFS/FileVault boot (Without "PreBoot") |
disable_compat_check | Disables Mac version compatibility checks if required |
disable_pass_gop_thru | Disables feature that provides GOP instance on UGA for some loading screens |
disable_nvram_paniclog | Disables logging macOS kernel panics to nvRAM |
disable_nvram_protect | Disables blocking of potentially harmful write attempts to Legacy Mac nvRAM |
disable_reload_gop | Disables reinstallation of UEFI 2.x GOP drivers on EFI 1.x units |
disable_rescan_dxe | Disables scanning for newly revealed DXE drivers when connecting handles |
disable_set_applefb | Disables provision, under some circumstances, of missing AppleFramebuffers |
disable_set_consolegop | Disables feature that fixes some issues with GOP graphics on legacy units |
enable_esp_filter | Prevents other ESPs other than the RefindPlus ESP being scanned for loaders |
force_trim | Forces TRIM on non-Apple SSDs on Macs if required |
handle_ventoy | Rationalises the binaries displayed for Ventoy instances |
hidden_icons_external | Allows scanning for .VolumeIcon icons on external volumes |
hidden_icons_ignore | Disables scanning for .VolumeIcon image icons if not required |
hidden_icons_prefer | Prioritises .VolumeIcon and .VolumeBadge image icons when available |
icon_row_move | Repositions the main screen icon rows (vertically) |
icon_row_tune | Fine tunes the resulting icon_row_move outcome |
mitigate_primed_buffer | Allows enhanced intervention to handle apparent primed keystroke buffers |
nvram_protect_ex | Extends NvramProtect , if set, to macOS and unknown UEFI boots |
nvram_variable_limit | Limits nvRAM write attempts to the specified variable size |
pass_uga_through | Provides UGA instance on GOP to permit EFI Boot with modern GPUs |
persist_boot_args | Overrides using vRAM, and not nvRAM, for macOS boot argument items |
prefer_uga | Prefers UGA use (when available) regardless of GOP availability |
ransom_drives | Frees partitions locked by how certain firmware load inbuilt drivers |
renderer_direct_gop | Provides a potentially improved GOP instance for certain GPUs |
renderer_text | Provides a text renderer for text output when otherwise unavailable |
scale_ui | Provides control of UI element scaling |
screen_rgb | Allows setting arbitrary screen background colours |
set_boot_args | Allows setting arbitrary macOS boot arguments |
supply_nvme | Enables an inbuilt NvmExpress driver |
supply_uefi | Enables feature that emulates UEFI 2.x support on EFI 1.x units |
sync_nvram | Resets nvRAM settings, such as BlueTooth, on some boot types if required |
transient_boot | Disables selection of the last booted loader if not required |
unicode_collation | Provides fine tuned support for languages that use unicode text |
In addition to the new functionality listed above, the following upstream tokens have been modified:
clean_nvram
: Allows resetting nvram directly from RefindPlus.
0
can be set as the Enabled
value to ensure Over The Air
(OTA) updates from Apple when running macOS 11.x (Big Sur), or later, with SIP enabled.
csr_normalise
token.DEBUG
and NOOPT
builds while RELEASE
builds remain optimised for day-to-day use.NOOPT
builds and outputs logs at a very detailed level
NOOPT
builds by passing ALL
as a second parameter to the RefindPlus build script1
will be capped at Level 12
will be capped at Level 2max
setting is redundant in RefindPlus which always defaults to the maximum available resolution whenever the resolution is not set or is otherwise not available.Significant visible implementation differences vis-a-vis the upstream base are:
support_gzipped_loaders
configuration token as upstream.hideui
configuration token options are explicitly defined in supplementary/theme configuration files; as whenever the token is found in such files, the token setting is reset by RefindPlus to the specified option(s). This is consistent with how other configuration tokens in such files are handled. The upstream implementation effectively adds new settings to any previously existing ones for this configuration token instead.scale_ui
configuration token is set to automatically detect the screen resolution. RefindPlus also takes vertically orientated screens into account and additionally scales UI elements down when low resolution screens (less than 1025px on the longest edge) are detected.decline_help_icon
configuration token to use the upstream icon search implementation instead of the RefindPlus default.disable_reload_gop
configuration token to switch it off.SetAppleFB
feature. Users that prefer not to use this feature can activate the RefindPlus-Specific disable_set_applefb
configuration token to switch it off.SupplyAPFS
feature. Users that prefer not to use this feature can activate the RefindPlus-Specific disable_apfs_load
configuration token to switch it off.disable_apfs_sync
configuration token to switch it off.disable_nvram_protect
configuration token to switch it off.Entry
object immediately discarded, once a Disabled
setting is encountered. The outcome is the same as upstream, which always continues to create and return a fully built object in such cases to be discarded later. The approach adopted in RefindPlus allows for an optimised loading process particularly when such Disabled
tokens are placed immediately after the menuentry
line (see examples in the config.conf-sample file). This also applies to submenuentry
items which can be enabled or disabled separately.enable_mouse
and enable_touch
pointer device control tokens appear in the configuration file(s) when both are active. The last pointer device control token read in the main configuration file and/or any supplementary/override configuration file will be used and the other disregarded. In RefindPlus however, enable_touch
always takes priority when both tokens are active without regard to the order of appearance in the configuration file(s). This means that to use a mouse in RefindPlus, enable_touch
must be disabled (default) in addition to enabling enable_mouse
.Refer to BUILDING.md for build instructions (x86_64 Only).
CLICK HERE for the ReadMe File related to the current (work in progress) code base.