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.
Footnotes
-
Added
Alt-RefindPlus_x64-001302.AN
package. This includes post release fixes for failure to boot on some machines. ↩