Skip to content

Releases: dakanji/RefindPlus

v0.13.2.AN

08 Feb 06:29
Compare
Choose a tag to compare

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 in AmendSysTable
  • 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
  • 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
  • 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 and Others
    • 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
  • 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
    • Calls to ASSERT, and similar, are activated on DEBUG Builds
      • Failed ASSERT calls put RefindPlus into a Deadloop
    • 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 in RefindPlus.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 various *.inf files for filesystem drivers etc, have been standardised
      • These now follow a clearer standard format
  • Renames the ignore_previous_boot config option as transient_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

  1. Added Alt-RefindPlus_x64-001302.AN package. This includes post release fixes for failure to boot on some machines.

v0.13.2.AM

12 Dec 23:25
Compare
Choose a tag to compare

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

  1. Updated attached files to include post release fix for REL build crashes in some instances

  2. Updated attached files with cleaned up version

v0.13.2.AL

12 Dec 15:33
Compare
Choose a tag to compare
  • 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
  • Refer to v0.13.2.AK for Other Relevant Changes

v0.13.2.AK

07 Dec 07:51
Compare
Choose a tag to compare
  • 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

06 Oct 07:56
Compare
Choose a tag to compare
  • 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

05 Oct 15:32
Compare
Choose a tag to compare
  • 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
    • The 'PreviousBoot' variable was not saved when running loaders in text mode
    • This bug was introduced in v0.13.2.AA (Commit 74d70fb) and exposed in v0.13.2.AG (Commit 4590047)
  • 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

03 Aug 04:16
Compare
Choose a tag to compare
  • 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"
  • 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

10 Jun 16:03
Compare
Choose a tag to compare
  • 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

07 Jun 19:51
Compare
Choose a tag to compare
  • 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

03 May 23:35
Compare
Choose a tag to compare
  • 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)