Releases: dakanji/RefindPlus
Releases · dakanji/RefindPlus
v0.13.2.AN
Change 01: 23 Feb 221.
- Multiple Misc Stability Fixes
- Major refactoring and restructuring for improved stability
- Also applied to filesystem drivers
- Adds
SupplyUEFI
Feature- Adds an implementation of the
CreateEventEx
feature to EFI 1.x units - Additionally, the EFI Revision is modified to present as UEFI 2.3
- This allows the use of UEFI 2.x tools and drivers on Legacy EFI 1.x units in many cases
- This is particularly the case on Legacy Macs, which already have amended EFI 1.x implementations
- This functionality can be disabled by setting the
decline_uefiemulate
token - As an aside, the
RuntimeServices
table is now also amended inAmendSysTable
- Adds an implementation of the
- Adds
SilentBoot
Feature- RefindPlus inherited a mode where a default selection was run after an instant timeout
- A shortcut key for a loader could also be pressed to run that particular loader instead
- This mode is activated by setting the
timeout
config token to-1
- However, the RefindPlus screen was briefly loaded before the target option was run
- This created an unwanted screen flash and also removed the BGRT logo
- The default selection is now run without showing the screen at all instead (Based on an upstream update)
- The mode is now truly silent as there is no video output unless overridden (BGRT logos are maintained)
- Override is initiated by holding down the
ESC
key immediately after starting RefindPlus - Shortcut keys can also be pressed
- In such cases, the loader associated with the key will be run instead of the default
- There will be no video output by RefindPlus similar to the default case
- Override is initiated by holding down the
- Fixes Forced
TextRenderer
- The
TextRenderer
feature is forced on in certain circumstances to enable text mode support - This appears to have resulted in conflicts on some Macs following a firmware update
- The firmware update appears to have made changes to screen mode settings
- The forced activation has been amended to avoid this issue
- The
- Fixes SystemTable Restoration
- The code was previously not operational
- This has now been fixed but is now limited to when
SupplyUEFI
is inactive
- Fixes Major Memory Conflict
- An item had been wrongly freed and resulted in random crashes when running loaders
- This bug was introduced in v0.13.2.AC (Commit 6ed58c5)
- Fixes
DontScanVolumes
for Synced APFS Instances- Limited to Single Instance APFS Containers
- Fixes Reported LodePNG Name Collisions
- This apparently affected Docker builds on Linux
- Amends Handling of Inconsistent EFI Versions
- RefindPlus now disables all functionality involving UEFI element changes when this is detected
- A detection of inconsistent EFI versions suggests RefindPlus has been chain-loaded
- This is most likely to be as a result of chain-loading from OpenCore with
ForgeUefiSupport
set - The disabled features can typically also be set in OpenCore
- Improves
ProtectNVRAM
Implementation- RefindPlus classifies UEFI Loaders into one of the following categories:
Opencore
,Clover
,Linux
,MacOS
,Windows
andOthers
- Only security certificates generated by Windows UEFI Loaders were blocked by ProtectNVRAM
- However, UEFI Windows installers/updaters may fall into the
Others
category and generate such certificates - Hence, certificates generated by UEFI Loaders that fall into the
Others
category are now also blocked - The feature remains only active on Apple firmware and can be disabled by setting the
decline_nvramprotect
token
- RefindPlus classifies UEFI Loaders into one of the following categories:
- Improves
SyncAPFS
Implementation- The presence of valid VolUUID and PartGUID is now taken into account
- SyncAPFS is disabled if either has a
NULL
Guid value
- Improves Screenshot Feature
- Feedback on success/failure is given via on-screen messages
- Each press of the
F10
key now results in only one image being saved- This is subject to the key press not continuing beyond the on-screen message display
- Improves Memory Management
- Multiple memory management improvements
- Improves Build Process
- RELEASE builds are further optimised
- The
MDEPKG_NDEBUG
EDK2 functionality is leveraged to:- Reduce file size
- Ensure consistent files on different builds
- EDK2 otherwise only guarantees functional consistency
- This now enforces additional structural consistency
- Builds with different file paths will now be the same
- The
- Calls to
ASSERT
, and similar, are activated on DEBUG Builds- Failed
ASSERT
calls put RefindPlus into a Deadloop
- Failed
- Enables
NOOPT
Build Target- This is a debug build with misc compile time optimisation items disabled
- Log Level 2 is only exposed on this build target
- The
REFIT_DEBUG
define has been converted to a compiler option- The constant is no longer defined in
global.h
and instead set inRefindPlus.inf
- This change removes the need for compile time edits to set build targets
- The requirements are now managed transparently by the build process itself
- The constant is no longer defined in
- The various
*.inf
files for filesystem drivers etc, have been standardised- These now follow a clearer standard format
- RELEASE builds are further optimised
- Renames the
ignore_previous_boot
config option astransient_boot
- This more accurately describes the feature.
- The current boot selection is not saved, it becomes transient, but any previously saved boot is set as the default
- This more accurately describes the feature.
-
Added
Alt-RefindPlus_x64-001302.AN
package. This includes post release fixes for failure to boot on some machines. ↩
v0.13.2.AM
Change 01: 19 Dec 211.
Change 02: 23 Dec 212.
- Reverts Ported APFS Volume Group Identification
- Does not appear the APFS Volume Group ID was correctly retrieved
- This resulted in Mac OS volume instance conflicts
- NOTE: Multi-Instance APFS Container restrictions now apply again
- Refer to v0.13.2.AK and v0.13.2.AL for Other Relevant Changes
v0.13.2.AL
- Adds "ExternalHiddenIcons" Feature
- Sets RefindPlus to also scan external volumes for ".VolumeIcon" icons
- This is a port of the downstream "AllHiddenIcons" feature by GitHub user @joevt
- Amended and renamed to reflect the target disk kind
- Improves "ScreenRGB" Feature
- The handling of the embedded title banner has been improved by leveraging transparency
- This significantly reduces the overall file size and ensures backgrounds are fully matched
- This is a port of the downstream implementation by GitHub user @joevt
- Fixes 'BootKicker' and 'CleanNvram' Amongst Others
- Misc memory management defects had disabled both
- Fixes for 'BTRFS' and 'NTFS' Filesystem Drivers from GitHub user @joevt
- BTRFS: Fixes file creation date bug
- NTFS: Fixes file creation date bug
- NTFS: Fixed "attribute_sparse" and "attribute_encrypted" which were not testing some flags correctly
- The field is a USHORT (Unsigned 16-bit integer) but was handled as BYTE (Unsigned 8-bit integer)
- NTFS: Fixes a bug where "read_attribute_direct" could write outside the attribute destination buffer.
- "olen" can become negative and could be passed to "CopyMem", which requires an unsigned length.
- Improves 'SyncAPFS'
- APFS Volume Groups can now be identified along with the earlier identified 'Disk Roles'
- This significantly improves determination of APFS Volume Types/Roles
- Restrictions limiting some features to setups with only one APFS instance per container are now removed
- This is a port of the downstream implementation by GitHub user @joevt
- Amends Log Levels
- LogLevel 0 remains as a native summary format
- The previous upstream based four (4) log levels have been compressed to two (2) levels
- LogLevel 4, which was not exposed by default, is now LogLevel 2, which is also not exposed by default.
- LogLevel 2 is exposed when the "REFIT_DEBUG" build flag is set to two (2) at compilation time.
- Set this in "BootMaster/globalExtra-DBG.txt" if using the RefindPlusUDK build script
- Unless LogLevel 2 is exposed when compiling, selected levels above one (1) will be capped at LogLevel 1
- When LogLevel 2 is exposed, selected levels above two (2) will be capped at LogLevel 2
- Initial activation of fixes on Mac Recovery For Mac OS 11 (Big Sur) and Later
- IMPORTANT:
- This implementation is still a work in progress ... feedback required/welcome
- IMPORTANT:
- Refer to v0.13.2.AK for Other Relevant Changes
v0.13.2.AK
- Adds "SupplyNVME" Feature
- A built in NvmExpress driver is loaded by default to provide NVMe support if required
- This functionality can be disabled by setting the 'decline_nvmeload' token
- With this feature, in addition to SupplyAPFS, firmware patching is no longer required on MacPro3,1 and XServe2,1
- Adds "ScreenRGB" Feature
- Allows overriding the default background colour selection process
- Users can now specify RGB values to be used instead
- Fixes Display of Mac Recovery Tool Name in RELEASE builds
- The variable holding the Mac Recovery tool name was wrapped in "Debug" tags
- Hence the tool name was not displayed in RELEASE builds
- Initial fixes on Mac Recovery For Mac OS 11 (Big Sur) and Later
- The Mac Recovery implementation inherited by RefindPlus was designed for the HFS+ filesystem
- Hence, it does not recognise recovery volumes of Mac OS versions with full APFS implementation
- Mac OS 10.13 (High Sierra) to Mac OS 10.15 (Catalina) have partial/transitional APFS implementations
- Mac OS 11 (Big Sur) and newer have full APFS implementations
- ADDITIONAL NOTES:
- This implementation does not support setups with more than one APFS instance in a single container
- This implementation is still a work in progress
- Fixes Compilation Issue on Recent GNU-EFI Versions
- Synced with upstream update as well as an existing issue with 'REFIT_CALL_X_WRAPPER'
- GNU-EFI compilation of RefindPlus is likely broken overall
- Fixes 'TagsHelp' Feature
- Was inverted ... active when decline_tagshelp was set and vice versa after renaming the feature
- This bug was introduced in v0.13.2.AH (Commit 1b043c3)
- Fixes Failure to Set Volume Badges and .VolumeIcon files on APFS Volumes
- The items were skipped by optimisation meant to only skip such on APFS System Volumes for SyncAPFS
- This bug was introduced in v0.13.2.AH (Commit d87d3fb)
- Fixes Memory Management
- The 'MyFreePool' function implementation did not actually free items passed
- Similarly, the 'ReleasePtr' function that called this was non operational
- This affected the operation of various elements across the board
- Both functions have now been consolidated into a new 'MY_FREE_POOL' macro
- This bug was introduced in v0.13.2.AD (Commit 65e5083)
- Fix BTRFS Filesystem Driver Build
- The BTRFS filesystem driver had been excluded from RefindPlus builds from the start of the project
- This was due to inherited issues with EDK2 builds of the driver ... rEFInd Build Notes
- The build issues were resolved by GitHub User "joevt" and have been incorporated into RefindPlus
- Improves Time Bound Primed Buffer Mitigation
- Mitigates against RefindPlus spontaneously running default items
- Intervention is now based on a minumum 1.25 second interval between load and run attempt
- Extended scope now covers Mac OS again (previously removed)
- Improves 'ProtectNVRAM' Implementation
- Now ensures this is reset on each loop through the RefindPlus Main Loop
- This ensures the filtering is not on if UEFI Windows boot fails
- Only has cosmetic relevance but best practice
- Improves 'Manage Firmware Boot Order' Implementation
- Now confirms selected action before execution to minimise the chances of making unwanted changes
- Amends 'ScaleUI' Implementation
- Now checks the resolution of the longest and shortest sides for automatic scaling
- Previously only checked the vertical resolution
- This allows rotated screens to be properly accounted for
- Some rare monitors, such as the 30" Apple Cinema Display, may be wrongly identified as HiDPI
- This is because EDID information is not used at this time
- However, the more common WQHD monitors are correctly identified as not being HiDPI monitors
- Laptops with 'Retina' screens should be correctly identified as having HiDPI monitors
- Amends Log Levels
- The previous upstream based four (4) log levels have been compressed to three (3) levels
- LogLevel 5, which was not exposed by default, is now LogLevel 4, which is not exposed by default.
- LogLevel 4 is exposed when the "REFIT_DEBUG" build flag is set to two (2) at compilation time.
- Set this in "BootMaster/globalExtra-DBG.txt" if using the RefindPlusUDK build script
- Unless LogLevel 4 is exposed when compiling, selected levels above three (3) will be capped at LogLevel 3
- When LogLevel 4 is exposed, selected levels above four (4) will be capped at LogLevel 4
v0.13.2.AJ
- Fixes 'PreBoot' Volume Filtering in REL Builds
- Deactivates Log Level 5
- Refer to v0.13.2.AH for Other Relevant Changes
v0.13.2.AH
- Adds "PreferHiddenIcons" Feature
- This functionality allows prioritising the use of ".VolumeIcon" image icons for loaders
- Adds Non-Standard UEFI 2.x Implementation Resilience
- Some UEFI 2.x implementations may be incomplete with some functionality missing
- This is typically due to customisation of the firmware as on Late Intel Macs such as the MacMini8,1
- This affected running the DEBUG build on such units
- RefindPlus now accommodates this situation.
- Adds Forced Shutdown on Secure Boot Setup Failure
- RefindPlus will now shutdown if meant to use secure boot but this could not be set up
- Fixes Failure to Detect Linux Partitions
- Linux partitions were not detected and therefore, could not be booted by RefindPlus
- Fixes Implicit Casting of Some Config Integers
- Some config tokens that could take negative values such as "screensaver" were handled as Unsigned Integers
- These are now correctly handled as Signed Integers
- Fixes Driver Loading from User Defined Folders
- Drivers in folders defined by the 'scan_driver_dirs' configuration token were not loaded in some instances
- This was because the routine expected the defined paths to not include the installation folder path
- This expectation was not specified however, meaning some users included the path in 'scan_driver_dirs'
- This expectation has now been removed and the installation folder path may or may not be included
- Fixes Switching External Screens to Text Mode
- External screens switched to text mode were functional but elements, such as the header, were missing
- This has now been fixed along with properly disabling the cursor
- Fixes Hang on Runtime Pauses
- RefindPlus hung on runtime pauses initiated before the main menu was loaded
- This was due to an absence of the Event Waitlist in such situations
- The Waitlist is now always generated on runtime pauses if not present
- Fixes Static 'PreviousBoot' Setup
- The actually booted loader was not recorded if a tool had been run beforehand
- Such previously set tools could only be changed by manually deleting the NVRAM entry
- The intented outcome of having a static setup could not be realised as envisaged
- This bug was introduced in v0.13.2.AG (Commit add53ba)
- Fixes Failure to set 'PreviousBoot' on Text Mode Boots
- Fixes Graphics Mode Selection in Multi-GPU Setups
- When more than one GPU is present, RefindPlus always tried to use the GOP instance from the last processed GPU
- The GPU with a GOP instance having the highest resolution is now selected instead (as intended)
- NB: RefindPlus does not check whether a GPU is actually connected to a display
- Hence, a blank display will result if the highest resolution GPU is not connected
- This bug was introduced in v0.12.0.AN (Commit 62e6fe8)
- Mitigates Text Mode Selected Menu Item Display
- The selected item in text mode menus was not displayed
- The selections had to be toggled to display the item
- RefindPlus now works around this issue by automatically toggling such menu items
- This toggling may however not happen on some units
- Improves Mac Recovery Tool Identification
- RefindPlus now attempts to associate Apple Mac Recovery Tool instances to specific Mac OS Volumes
- The same generic name was previously used for all instances
- This had made it difficult to know which volume a specific recovery instance applied to
- Improves Keystroke Flushing
- Device errors are returned when attempting to read keystrokes under some conditions
- This appears to typically only happen on UEFI PC
- RefindPlus now further attempts to ensure the read takes place and/or mitigate the impact
- Improves APFS Volume Role Identification
- APFS volume roles are now identified by their predefined 'Disk Roles' when possible
- Additionally, the 'SyncAPFS' feature has been optimised for faster completion
- Improves APFS Partition Type Detection
- RefindPlus Primarily used the Partition Type Guid to identify APFS Partitions
- Some UEFI PC may however not provide a Partition Type Guid for APFS volumes
- This affected the operation of the SyncAPFS feature which had to be disabled on such units
- RefindPlus can now determine APFS partitions when the Partition Type Guid is not present
- Improves 'PreviousBoot' Implementation
- Only Loaders (Row 1 Items) are now saved as 'PreviousBoot' when this is configured to be saved
- Such Loaders are only saved after verification (not regardless as was the case)
- Improves 'IgnorePreviousBoot' Implementation
- This token is now enforced everywhere when set
- Setting '+' under the 'default_selection' token will therefore have no effect in such cases
- NB: Setting 'default_selection "+"' remains equivalent to commenting that token out
- This default setting will continue to function as before
- Improves NVRAM Management
- NVRAM Entries (Emulated and Hardware) are fully cleared before new entries are made
- Improves Graphics Mode Selection
- Eliminates unnecessary iteration over UGA/GOP modes when only one UGA/GOP instance exists
- This improves loading speed.
- Extends Memory Management Fixes
- Additional memory management improvements
- Renames Misc Configuration Tokens
- 'ignore_volume_icns' to 'ignore_hidden_icons'
- The 'decline_XYZ' format is now used for options to disable divergent defaults
- 'scan_other_esp' to 'decline_espfilter'
- 'ignore_tag_help' to 'decline_tagshelp'
- 'sync_apfs' to 'decline_apfssync' ('SyncAPFS' is now active by default)
- 'supply_apfs' to 'decline_apfsload' ('SupplyAPFS' is now active by default)
- 'silence_apfs' to 'decline_apfsmute' ('SilenceAPFS' is now active by default)
- 'protect_nvram' to 'decline_nvramprotect' ('ProtectNVRAM' is now active by default)
- 'reload_gop' to 'decline_reloadgop' ('ReloadGOP' is now active by default)
v0.13.2.AG
- Adds 'TagHelp' Feature
- Ensures HiddenTags can always be unhidden
- This feature is active by default but can be disabled with the "disable_tag_help" token
- Fixes Banner Flicker During Load Sequence
- Rationalises freeing the screen background image to reduce flickering at load time
- Provides improved UX
- Fixes Filtering of Windows Secure Boot Certificates on Apple Firmware
- Reverts Extension to Legacy Windows
- This appeared to be linked to negative impacts on some Macs
- Fixes 'IgnoreVolumeICNS' and 'HideUI Badges' Implementation
- Now extended to cover other volume types apart from 'internal' volumes
- Fixes Handling of "FirmwareBootNum" Entries
- These were not loaded as expected
- Fixes Hangs Resulting from Changed Device Handles
- RefindPlus hung on return from third party tools that change device handles, such as GDisk
- RefindPlus now manages this situation
- Fixes Invalid 'Command Line Option Error' Notice on UEFI PC
- Some UEFI PC appear to spontaneously generate invalid load options
- These result in a halt and require one or more key presses to proceed
- This bug was introduced in v0.12.0.AQ (Commit f5c438f)
- Fixes Booting into Legacy (BIOS) OS on UEFI PC
- This bug was introduced in v0.13.2.AE (Commit b80f508)
- Fixes Hang When Selecting SubScreen Options
- This bug was introduced in v0.13.2.AF (Commit 57280c3)
- Improves Volume Scanning Implementation
- Improves speed generally by cutting self volume identification short once identified
- Fixes Specific Implementation on UEFI PC
- Improves Tool Path Definitions
- Extends fixes applied in v0.13.2.AF
- Improves 'Sync_APFS' Implementation
- Fixes memory allocation issues with 'PreBoot' volume object separation
- Improves Mac OS Volume Type Identification on UEFI PC
- Several Mac OS volume types, such as APFS, are now identified correctly on UEFI PC
- These were previously "Unknown"
- Reduces Excessive Tool Validation Loops
- Tools are now only checked for validity if they actually exist on disk
- Extends Manual Stanza Handling Fixes
- Enhancements to "menuentry" sections applied to "submenuentry" sections
- Adopts Multiple Fixes and Enhancements from a Fork by GitHub User "joevt"
- Mainly related to memory management
- https://github.com/joevt/RefindPlus
- Amends 'ActiveCSR' Implementation
- Now only run when booting into Mac OS, OpenCore or Clover
- Amends 'ScanDelay' Implementation
- Now immediately implemented after 'SetupScreen' to allow for improved UX
v0.13.2.AF
- Fixes Tool Path Definitions
- Styling had introduced unwanted whitespace into tool paths
- This bug was introduced in v0.13.2.AD (Commit 75d8357)
- Fixes Fix Manual Stanza Handling
- Linux and "Firmware Reboot" stanzas were not handled properly
- Fix applied to v0.13.2.AE did not fully resolve the issue
- Fixes BootKicker and CleanNvram Tool Loading
- These tools were not loaded when located in some valid directories
- This bug was introduced in v0.13.2.AE (Commit af1150d)
- Reverts HiddenItem Fix for Upstream Consistency
- Prioritising consistency for upstream interoperability
v0.13.2.AE
- Adds 'NormaliseCSR' Feature
- Filters out the 'CSR_ALLOW_APPLE_INTERNAL' bit on Macs (for consumer use)
- This facilitates "Over The Air" (OTA) updates when running Mac OS v11.x (Big Sur)
- This filtering works on earlier versions of Mac OS which function as usual
- Improves Handling of CSR Policy Toggling
- Adds option to clear CSR to facilitate "Over The Air" updates on Mac OS v11.x (Big Sur)
- Activated by entering "0" in place of "10" for the option to enable SIP
- This setting is also valid when used on earlier versions of Mac OS
- Improves Upstream Logging Format
- Formatted for clarity
- Improves Handling of Manual Stanza Icons
- Optimises search for associated icons to speed loading times up
- Only undertakes a second search scan when required
- Improves Selection Image Handling
- Only calls scaling function when required
- Improves Embedded Image Creation Script
- Previously updated for Python 3
- Now updated to be run from any directory
- Updates Default Banner Background Colour
- Now set at 191,191,191 RGB to better match the default grey
- Aligns Driver and Tools Folders with Upstream
- Drops '{ARCH}_drivers' and '{ARCH}_tools' folders for upstream consistency
- Fixes Fix Default Opaque Setting
- Images meant to default to "opaque" were set to "transparent" instead.
- This bug was introduced in v0.13.2.AD (Commit 0edf341)
- Fixes Windows Boot EFI Variable Handling
- Windows Boot EFI Variables were not handled properly on Apple firmware
- This resulted in an inability to boot into Windows on Macs
- Fixes Manual Stanza Handling
- Linux and "Firmware Reboot" stanzas were not handled properly
- Fixes HiddenItem Handling
- Hidden items could not be created or managed
- Changes Token Name for Internal Consistency
- 'suppress_verbose_apfs' to 'silence_apfs'
v0.13.2.AD
- Fixes Memory Management Issues
- Misc issues mainly introduced in v0.13.2.AA
- Passes 'MyFreePool' pointer params by reference to ensure they can be set to a NULL value
- Fixes HiddenLegacy Handling
- HiddenLegacy tags were not being handled when scanning for bootloaders
- This bug was introduced in v0.13.2.AA (Commit bda56bf)
- Fixes "DisplaySimpleMessage"
- Messages were not actually being displayed
- This bug was introduced in v0.13.2.AA (Commit 183e83e)
- Fixes *.icns Transparency
- The Alpha Channel was defaulting to opaque black
- This bug was introduced in v0.13.2.AA (Commit de49af5)
- Improves Upstream Logging Format and Coverage
- Formatted for better readability and incorporates more key items from the native format
- Improves "ReloadGOP" Implementation
- Generally updated and optimised
- Improves Volume Type Identification
- Optical disc drives identified and assumption for network volumes
- Improves Detection of Previously Set NVRAM Variables
- This helps further reduce unnecessary NVRAM writes
- Adds 'IgnoreVolumeICNS' Feature
- Speeds booting up by not scanning for '.VolumeIcons.icns' files (not typically used)