dakanji / RefindPlus

A Boot Manager for Mac and PC
GNU General Public License v3.0
333 stars 66 forks source link
bootloader multiboot refind refind-bootloader refindplus-boot-manager
# RefindPlus A Boot Manager for Mac and PC
[![Release Version](https://img.shields.io/github/v/release/dakanji/RefindPlus?style=for-the-badge&label=current)](https://github.com/dakanji/RefindPlus/releases)[![Release Date](https://img.shields.io/github/release-date/dakanji/RefindPlus.svg?display_date=published_at&style=for-the-badge&color=informational&label=)](https://github.com/dakanji/RefindPlus/releases) [![Coverity Scan](https://img.shields.io/coverity/scan/22695)](https://scan.coverity.com/projects/22695)   [![Codacy Grade](https://img.shields.io/codacy/grade/d2955171e96246579279c1a28c4b11cf?label=codacy)](https://app.codacy.com/gh/dakanji/RefindPlus/dashboard) [![License Type](https://img.shields.io/badge/GPL%203.0/Later-blue?label=copies)](https://github.com/dakanji/RefindPlus/blob/GOPFix/INFO.txt)



Overview

RefindPlus builds on rEFInd to extend its functionality with enhancements and fixes that include several Apple Mac and UEFI-PC related items that may be of interest to anyone requiring a capable and flexible boot manager.

RefindPlus is particularly useful for those with additional configuration needs or that require advanced or otherwise non-typical options for running operating systems and uEFI utilities on Mac and PC.

Some features:

Installation

MyBootMgr is recommended to automate installing RefindPlus when running macOS on Intel-based Macs. 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.

[!NOTE]

MyBootMgr can optionally also be used to create a flexible and powerful RefindPlus|OpenCore chain-loading arrangement for MacPro3,1 to MacPro5,1 as well as for Xserve2,1 and Xserve3,1.

Upstream post-release code updates are typically ported to RefindPlus as they happen and as such, the RefindPlus code base is usually at the state of the base upstream release version plus any such updates. The code base typically also includes updates for subsequent upstream release versions since the base version.

[!TIP]

Consider replacing 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.

[!TIP]

RefindPlus-specific options can also be simply added to upstream configuration files.

When run without activating RefindPlus-specific configuration options, as will be the case with unmodified upstream configuration files, a RefindPlus run will be equivalent to running the upstream version it is based on. That is, the additional options provided in RefindPlus must be actively enabled if they are required.

[!NOTE]

This equivalence is subject to a few divergent items as outlined under the Divergence Section below.

Additional Functionality

RefindPlus-specific funtionality can be configured using the tokens below.
Additional information is provided in the sample RefindPlus configuration file.
These tokens are included in Section 1 of 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 Apple's System Integrity Protection (SIP)
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_size Disables feature that sets additional UI scaling for very high DPI screens
decline_help_text Disables feature that sets screen text to complementary colours
decouple_key_f10 Unmaps the F10 key from native screenshots (the \ key remains mapped)
disable_apfs_load Disables inbuilt provision of APFS filesystem capability
disable_apfs_sync Disables feature allowing direct APFS/FileVault boot (Without "PreBoot")
disable_check_amfi Disables AMFI Checks on macOS if required
disable_check_compat Disables Mac version compatibility checks if required
disable_pass_gop_thru Disables feature that provides GOP instance on UGA for some loading screens
disable_legacy_sync Disables detailed indentification of Mac legacy BIOS boot capability
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 Apple Framebuffers
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 Third-Party SSDs on Macs if required
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 (instead of 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
sync_trust Works around some Boot Chain of Trust problems on T2/TPM chipped units
transient_boot Disables feature that highlights the last booted loader by default
unicode_collation Provides fine tuned support for languages that use unicode text

Modified Functionality

In addition to the new functionality listed above, the following upstream tokens have been modified:

Divergence

Significant visible implementation differences vis-a-vis the upstream base are:

Roll Your Own

Refer to BUILDING.md for build instructions.

CLICK HERE for the ReadMe file related to the current (work in progress) code base.