The rEFInd Boot Manager:
Revisions
by Roderick W. Smith, rodsmith@rodsbooks.com
Last Web page update: April 6, 2024
This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks!
Donate $1.00 |
Donate $2.50 |
Donate $5.00 |
Donate $10.00 |
Donate $20.00 |
Donate another value |
|
|
|
|
|
|
This page is part of the documentation for the rEFInd boot manager. If a Web search has brought you here, you may want to start at the main page.
The following summarizes changes in rEFInd's public releases:
- 0.14.2 (April 6, 2024)—This version features several bug fixes and new features:
- New features in this version are:
- Added the also_scan_tools token to refind.conf, enabling tools to be scanned in arbitrary directories.
- The Info/About screen now reports whether rEFInd was booted via Shim or directly, on the Platform line. Note that via Shim may be specified even on a non-Secure-Boot installation, if Shim launched rEFInd.
- Bug fixes in this version are:
- Fixed two RPM and Debian packaging bugs related to Secure Boot:
- The post-install script would sometimes fail to detect that Secure Boot was enabled, thus creating a non-bootable installation.
- The post-install script assumed that all Secure Boot installations used Shim or PreLoader, thus failing to correctly install without Shim on systems that used custom db keys.
These bugs have both been corrected.
- Removed EFI\tools\memtest86, EFI\tools\memtest, EFI\memtest86, and EFI\memtest from the directories to be scanned for tools. This was done for performance reasons. If scanning one of these locations is necessary, you can add it to the also_scan_tools line in refind.conf.
- Fixed a trivial typo in a message in refind-sb-healthcheck.
- Fixed a bug in the logging of the LoadedSize and SignaturePos variables in the IsValidLoader() function on IA32/x86.
- Fixed a bug that prevented Apple-specific "fat" EFI binaries (those with both 32- and 64-bit binaries in one file) from appearing in rEFInd's menu.
- Worked around a change in compilation options required to build ARM64/AARCH64 binaries with GNU-EFI 3.0.17 and later. The default build process still works for older versions of GNU-EFI; but with 3.0.17 and later, the GNUEFI_ARM64_TARGET_SUPPORT must be set to y, either on the command line or in Make.common See the BUILDING.txt file for details. This issue does not affect X64/AMD64/x86-64 or IA32/x86 builds with GNU-EFI, or any builds with the TianoCore EDK2 toolkit.
- Worked around two problems that caused rEFInd binaries built with GNU-EFI 3.0.18 to fail to launch or to crash right after loading.
- Additional miscellaneous changes are:
- Removed code in the RPM and Debian packaging post-install scripts that removed an existing rEFInd efibootmgr entry. This code is obviated by code added to refind-install some time ago.
- Updated the Debian packaging to require debhelper 11 or greater rather than 9 or greater, since the latter is now deprecated.
- Restructured the code to detect most disk-based tools. The result is simpler code, and may slightly alter what tools are found, likely increasing the selection on systems with multiple disks or when tool binaries are stored in distribution directories.
- Changed the make files to reduce the binary size of GNU-EFI builds and to enable older versions of the GCC toolchain to create the SBAT section.
- 0.14.1 (3/24/2024)—This version features several bug fixes and new features:
- New features in this version are:
- Added linux_prefixes token, which specifies string(s) that, when present at the start of a filename, denote a Linux kernel.
- Replaced bzImage with Image as a kernel identifier on ARM64 systems. (This is unchanged on x86/x86-64 systems.) Some Linux distributions call their Linux kernels Image, Image.gz, or something else that starts with Image.
- Added code to the Btrfs driver to properly detect RAID1C3/4 configurations. Code was borrowed from GRUB 2 by Ilya Guterman.
- Added icon for EndeavourOS, as submitted by Jack Rubacha.
- If Memtest is discovered in a boot loader location, move its entry to the tools line, rather than keep it in the boot loader line, if memtest is among the showtools options. This helps de-clutter the boot loader line with recent versions of Ubuntu. (For some reason, though, it fails to launch from some filesystems, with a "not found" error, in either menu position; but it launches fine if copied to the ESP.)
- Added memtest86+x64.efi and memtest86+ia32.efi as Memtest filenames on AMD64 and i386 systems, respectively; and removed bootx64.efi (and similar names for other architectures) as valid names, since the latter causes problems if Memtest is stored in a boot loader directory, especially EFI/BOOT.
- When scanning for tools, rEFInd now removes duplicate directory names from the scan list. Duplicates can happen because of misconfiguration or because of the new code to find Memtest in regular boot loader locations, if they happen to be in matching directories on different disks (as in multiple Linux distributions on one computer, with Memtest in the /boot directory on each one).
- Bug fixes in this version are:
- Fixed a bug that caused JPEG images to become garbled when rEFInd was compiled with most Linux toolchains. It happened to work fine with Ubuntu (which I use) or Gentoo, but not with Arch, Debian, Fedora, or openSUSE.
- Fixed a memory leak in the JPEG code.
- Fixed a bug that could cause some EFI programs (notably Pete Batard's drivers on ARM64 systems) to be incorrectly marked as invalid.
- Improved error checking of log file creation and rotation. Bugs in Tow-Boot (aka Das U-Boot) 8225.40 on a Raspberry Pi were interacting with rEFInd's minimal error checking on log file rotation, causing rEFInd to crash when attempting to rotate the log file. This is now fixed.
- Worked around a bug in at least one UEFI that could cause rEFInd to freeze when doing a self-install.
- Fixed bug in refind-install that caused the --ownhfs option to fail.
- Additional miscellaneous changes are:
- Removed most BIOS/CSM/legacy scanning and boot code from builds on architectures other than x86/IA32 or x86-64/AMD64/X64. This code is dead weight on other platforms; removing it reduces the binary size and makes it less likely that a hidden bug will affect these platforms.
- Updated LodePNG to the latest version (20230410).
- 0.14.0.2 (3/6/2022)—This is a minor update to address a bug in the refind-install script that caused it to fail to identify a mounted ESP in Linux. This in turn could cause package installation problems. This is actually a return of a bug that was fixed in 0.13.3.1, and was caused by bad advice from the shellcheck script-checking tool. I've added comments to make it less likely that I'll make the same mistake again.
- 0.14.0 (3/4/2023)—This version features several bug fixes and new features:
- New features for this round are:
- rEFInd can now launch EFI programs that are compressed via
gzip. This is most useful on ARM64 systems, where Linux
distributions typically compress their whole kernels with
gzip. (On x86 and x86-64, kernels typically include an
uncompressed EFI stub loader and enough code to uncompress the rest
of the kernel, so this rEFInd feature isn't required.) This option
is controlled by the support_gzipped_loaders token in
refind.conf. The default value for this option is
false on x86 and x86-64 systems, but true on
ARM64.
- rEFInd binaries now include an .sbat section, which is
needed by the Secure Boot Advanced Targeting (SBAT) feature
required by Shims released since early 2021. Using previous versions
of rEFInd with newer Shims didn't work without manually adding an
.sbat section and re-signing the binaries. Version 0.14.0
and later should work directly, although a MOK matching the private
key used to sign rEFInd is still necessary.
- A new script, refind-sb-healthcheck, makes Secure Boot
maintenance easier. This new script can update the Shim version used
to launch rEFInd, update an out-of-date local rEFInd signing key,
and warn you about other Secure Boot keys that might be nearing (or
past) expiration. See the Secure Boot page of this
documentation for details.
- A new refind.conf option, follow_symlinks,
controls whether rEFInd will follow symbolic links on filesystems
that support this feature. This option defaults to false
(and this was how previous versions worked) because many Linux
distributions include symbolic links that point to kernel files that
rEFInd will discover directly, so the symbolic link is redundant. On
openSUSE, though, and maybe some other distributions, the symbolic
link is in a location that rEFInd scans but the linked-to file is
somewhere that rEFInd will not scan. Setting follow_symlinks
true can be helpful in these cases.
- Adrien Destugues submitted a new Haiku OS icon, based on official
Haiku OS artwork.
- Bug fixes for this round include:
- Multiple memory management bugs have been squashed. Most of these
seem to have caused few or no problems on most computers, but some
caused rEFInd to crash, particularly on ARM64 systems. The
NEWS.txt file details these fixes with more
specificity.
- Fixed bug in refind-install that caused it to fail to
install the filesystem driver in some Linux distributions (notably
Ubuntu 22.04; but both 21.10 and 22.10 worked fine without this
fix).
- Fixed a bug that caused my USB flash drive images to be damaged. (I
released updated 0.13.3.1 USB flash drive images prior to the 0.14.0
release.)
- Fixed a bug that could cause some error messages to appear on screen
for a fraction of a second and then disappear.
- Fixed a bug that caused directories specified in
also_scan_dirs to not be scanned if a filesystem or
partition name was included in the specification.
- The ext4fs driver now ignores the metadata_csum_seed flag,
which is being set by default in e2fsprogs version 1.47.0
and later. Not ignoring the flag caused the driver to fail to read
such filesystems. Thanks to Martin Whitaker for the relevant
patch.
- Fixed a bug in my release scripts that caused my RPM files, and
Debian packages derived from them, to be missing Secure Boot
signatures.
- Changed the way that refind-install manages local keys,
making accidental deletion of symlinked keys less likely. Thanks to
Das Menschy for this fix.
- The build rules now disallow parallel compilation of filesystem
driver files when building with GNU-EFI, since this caused corrupted
binaries.
- Miscellaneous other changes are:
- Minor code cleanup of mkrlconf and refind-install
scripts. This should not affect functionality.
- Added several new Secure Boot keys for Red Hat in the keys
subdirectory.
- Updated the LodePNG library to version 20221108.
- The ReiserFS driver is now officially deprecated, since ReiserFS is
also deprecated in the Linux kernel, with an announced removal date
in 2025.
- 0.13.3.1 (4/12/2022)—This is a minor update to address two bugs in the refind-install script. The first bug caused it to fail to identify a mounted ESP in Linux. This in turn could cause package installation problems. The second bug caused refind-install to fail to re-use an existing EFI boot manager entry for rEFInd when the system was booting through Shim, thus creating duplicated entries. There are no changes to the rEFInd program itself with this version (although it's a fresh build from source).
- 0.13.3 (4/10/2022)—This version features several minor bug fixes and new features:
- rEFInd stopped compiling with GNU-EFI somewhere between GNU-EFI
versions 3.0.9 and 3.0.13; this version corrects that problem.
- rEFInd could freeze when processing keystrokes in menus. This bug
is now fixed.
- The option to return from the folded Linux kernel submenu was
missing; this bug is now fixed.
- Bash script coding has been cleaned up.
- The refind-install script contained a stray exit
command, which caused it to terminate prematurely. This problem has
been corrected.
- rEFInd was reading the HiddenTools variable unnecessarily
often; this has been corrected.
- When the timeout option was set to -1 and no
keyboard was attached, rEFInd could freeze. This problem has been
fixed.
- The arrow icons visible when more icons than the screen can handle
could be incompletely erased if icon sizes were set manually in
refind.conf. This bug has been fixed.
- The Ubuntu icon has been updated to match the revision associated
with Ubuntu 22.04.
- Log files now rotate — when a log file already exists, it is
renamed to refind.log-old and the new one is created as
refind.log. This enables recovery of a rEFInd log file even
after rEFInd freezes or otherwise badly misbehaves.
- I am officially deprecating the tiano Makefile target,
which had been usable with the TianoCore UDK2014 build environment.
I'm doing this because it's no longer working with my development
system, and I don't think it's worth fixing at this point.
- 0.13.2 (3/13/2021)—I've fixed a number of bugs and added a few new features with this version:
- This version fixes a memory management bugs that could cause rEFInd
to hang under certain unpredictable circumstances.
- I've also fixed potential memory management bugs that could cause
HFS+, ext2fs, and ext4fs drivers to misbehave.
- Version 0.13.1 introduced a bug that caused rEFInd to fail to load
properly signed EFI drivers when Secure Boot was enabled and used
via Shim. This is now fixed.
- The mvrefind script has long had an unnoticed bug that
caused it to fail to create a new NVRAM entry to point to the moved
rEFInd.
- MacOS 11 ("Big Sur") changed something in its sed utility
that caused the mountesp script to fail in that version of
macOS. This problem has been fixed.
- I've improved Secure Boot support in the refind-install
script when run from Linux: The script can now install a Secure Boot
key using mokutil, which can slightly simplify the MOK
setup. It also now creates a backup NVRAM entry to boot directly,
rather than via a Shim, if installed with the --shim
option. This should help on systems with custom Secure Boot key sets
that don't rely on Shim, but with a stray Shim binary present on the
ESP that a package script will detect and pass as a --shim
option to rEFInd. If this configuration causes a Secure Boot failure
on launching Shim, then it should fail over to the direct boot and
be fine. (Some EFIs will hang rather than fail over to the next
entry, though, and this change won't help with them.)
- This version implements more logging improvements, including bumping
the maximum log_level from 3 to 4.
- This version improves the separation of filesystem vs. partition
names internally. This change can make for more accurate OS icon
choices in some situations, such as if both names are set but only
the partition name contains useful information.
- Previously, when setting use_nvram false, rEFInd would use
the vars subdirectory of its own directory; and if that was
unwritable (say, if it was on an HFS+ volume), then rEFInd would not
store its own variables, such as PreviousBoot and
HiddenTags. With this version, rEFInd will now use the
vars subdirectory of rEFInd's own directory (as before);
but if that's not available, it will use a directory called
refind-vars in the root directory of the first ESP that
rEFInd can locate; and if neither is available, rEFInd will use
NVRAM storage instead, as if use_nvram true had been
set.
- I've made rEFInd's self-install code less finicky about the success
of copying configuration, icons, and driver files. Previously it
reported a failure and did not modify NVRAM if any of these failed
to copy. Now it should register itself, although it does complain on
screen and log details (if logging is enabled). This can help if
installing from a source that lacks drivers for a detectable Linux
filesystem (ext2/3/4fs, ReiserFS, Btrfs, or HFS+).
- I've adjusted reporting of SIP values by adding back 0x77 as an
interpreted value for on-screen notification when rotating through
values.
- rEFInd can now identify JFS volumes as such, if a third-party JFS
driver is installed.
- This version adds support for Booster initrd files, which are named
booster*, rather than init*. See https://github.com/anatol/booster
and/or https://wiki.archlinux.org/index.php/Booster
for more on Booster.
- I've added an icon for Manjaro Linux.
- I've swapped out expired CentOS Secure Boot keys for new ones.
- GNU-EFI 3.0.13 made changes to its header files that caused rEFInd
build failures. These are now fixed.
- 0.13.1 (2/24/2021)—This release adds a couple of new features that won't impact most people (although one is a fairly major addition) and several small bug fixes and minor changes:
- The biggest new feature is a logging facility: If log_level is set to a value higher than 0, rEFInd will log its actions in a UTF-16 file called refind.log in the same directory as the rEFInd binary, or on the first accessible ESP if rEFInd was launched from a read-only filesystem (such as an HFS+ volume). This feature is intended to assist in debugging problems, not for regular use, since it can slow rEFInd's operation. Thus, it should be commented out or set to its default value of 0 in most cases. If you need to use it, values from 1 to 3 are currently supported, with higher values doing more logging. I'm likely to expand the amount of logging done, and may increase beyond level 3, in the future.
- To support the systemd Boot Loader Interface, rEFInd can now write the GUID of the partition from which rEFInd was launched to an EFI variable called LoaderDevicePartUUID whenever rEFInd launches a Linux kernel with EFI stub support, ELILO, or GRUB. (rEFInd does not touch this variable when launching macOS or Windows.) When this variable is present, systemd can use it to mount the ESP at /boot or /efi, if one of these directories is present and empty. This activity is enabled by setting write_systemd_vars true in refind.conf.
- rEFInd now checks EFI variables before writing them, and will not re-write them if doing so would not change them. Previously, rEFInd did this for its PreviousBoot variable; but now it does so for all writes to EFI variables, so as to minimize wear and tear on NVRAM.
- I have uncommented use_nvram and set it to false in refind.conf. This will cause new installations to save rEFInd's own variables to disk rather than to NVRAM, to save wear and tear on the latter; however, if rEFInd is installed to a read-only filesystem (most likely HFS+), then features such as boot to the most-recently-booted OS and dynamic tag hiding will not work unless use_nvram is commented out or set to true. This change will not affect upgrades to existing installations.
- I have reverted some of the video device discovery changes made in version 0.13.0 after receiving a bug report indicating that they caused at least one Mac model to hang.
- Fixed a bug that could cause rEFInd to misbehave or hang if a disabled manual boot stanza referenced a volume with a name that existed but was unreadable.
- Version 0.13.0 failed to record boots to EFI-based boot options; thus, they would not be used as the default boot option when default_selection + was used on the next boot. This has now been fixed.
- Updated LodePNG library (which rEFInd uses for PNG support) to version 20201017.
- Additional replacements of which with command -v in mvrefind.
- 0.13.0 (2/15/2021)—This release implements one major user-visible change, several bug fixes (including one major one), and a few smaller improvements:
- The big new feature is implementation of a reboot into a firmware-specified boot option—that is, one that's stored in the computer's NVRAM and presented by the EFI's own boot manager. This feature enables network booting, booting into exotic firmware-provided tools, and booting in ways that might bypass some problems. It can enable full-resolution HiDPI displays in macOS, for instance, which has long been a limitation of rEFInd. This feature also enables launching an EFI shell provided by the firmware, not just ones that are installed as EFI binaries on the hard disk. See this section of the documentation for a detailed description of this new ability.
- I've fixed a memory management bug that I believe was responsible for rEFInd 0.12.0 hanging on a few (mostly Apple) computers.
- I've imported several minor features and one mostly-behind-the-scenes change to video mode setting from RefindPlus:
- The list of Apple SIP/CSR values has been expanded to match changes in the values that Apple uses.
- The ext4fs driver now supports the EXT4_FEATURE_INCOMPAT_ENCRYPT flag, which means that filesystems that provide directory-level encryption are now supported, although rEFInd can read only from unencrypted directories on such filesystems.
- Aspects of RefindPlus's video mode detection have been added to rEFInd. In testing, this change doesn't make much difference, but it's a base from which future improvements can be made.
- A new option to the resolution token in refind.conf, max, tells rEFInd to set the maximum possible video resolution. This works well on most computers, but there's a chance that it will set a resolution that's higher than your monitor supports, so it's not the default, as it is in RefindPlus.
- Improved rEFInd's detection of duplicated ext2/3/4 filesystems (as on some types of software RAID); the old code incorrectly marked filesystems with different UUIDs but the same label as duplicates.
- Fixed a bug that caused the mouse pointer to disappear on 64-bit systems when it was moved.
- Fixed a bug that caused EFI 1.x (UGA graphics) systems to hang if refind.conf has a resolution line that specified only one value. (This is a valid configuration for EFI 2.x/GOP graphics systems, but not for EFI 1.x/UGA.) When such a configuration is detected now, it is ignored.
- Replaced which with command -v in shell scripts. This should be more robust in theory.
- Fixed compiler problems with GCC versions 9 and 10.
- 0.12.0 (3/13/2020)—This release sees a couple of major new
features and some other more minor changes:
- A new EFI (not rEFInd) boot order maintenance feature is now
available, albeit disabled by default. To enable it, uncomment the
showtools option in refind.conf and ensure that
bootorder is among the options. The new feature will then
appear next time rEFInd is launched. This options enables you to
adjust the EFI's boot order. Selecting an option and pressing
the Enter key moves it to the top of the list. Selecting it and
pressing the minus (-) key or Delete deletes the entry. The
goal is to enable changing the computer's boot order from a rEFInd
emergency disk after a boot coup or similar problem. This feature is
therefore covered in more detail on
the page on boot coups. Although this feature is disabled by
default, it's enabled on my USB flash drive and CD-R images.
- A new self-installation option is available, albeit disabled by
default. (It's enabled on my USB flash drive and CD-R images.) To
enable it, uncomment the showtools option in
refind.conf and add the install token to the list.
When active, an installation icon appears on the second row,
enabling you to install from the booted version of rEFInd to an ESP
that you select: Pick the target ESP from among those listed and
press Enter to install rEFInd. For more details, see the Installing rEFInd page.
- Previous versions of rEFInd all passed the rEFInd filename as the
first option to all follow-on programs, much as the EFI shell does.
This caused problems with a new unified
Linux kernel image format, though. (This new format includes the
kernel, initrd file, and some other elements into a single file.)
Thus, I've switched to passing no options by default, which is the
same way GRUB 2 and gummiboot/systemd-boot work.
- Fixed a bug that caused gptsync to sometimes hang on
launch.
- Changed internal identification of rEFInd's volume to use a GUID
rather than a volume name. A GUID is more precise and less likely to
result in mis-identification in rEFInd's loader scanning.
- Added FAT serial number data as pseudo-GUIDs, which may help prevent
mistaken mis-identification of two FAT partitions with the same name
as RAID elements.
- The handling of screen resets on return from a program has been
tweaked. Previously, this could result in error messages being
erased. This should now be less likely to happen.
- Identification of the ESP in refind-install in Linux has
been improved. This should make proper identification of the ESP on
NVMe disks more reliable. Note that this change also requires that
the sgdisk program (part of my GPT fdisk package) be
available; but parted is no longer required. I've updated
the RPM and Debian package dependencies appropriately.
- I've plugged several memory leaks. This should have no noticeable
performance effect, but is good programming practice. Several leaks
remain, though.
- I've re-structured the source code to split the former
main.c across four files (main.c,
launch_efi.c, linux.c, and scan.c), since
the old main.c was getting ridiculously large. This change
will have no performance effects, but should help development
efforts.
- I'm officially deprecating the ELILO- and XOM-specific code in
rEFInd. ELILO hasn't seen development on its Sourceforge page since
2013, and XOM was rendered obsolete by Boot Camp and seems to have
faded into non-existence. The deprecated code is located in rEFInd's
scan.c file and simply creates sub-menus that pass options
to these boot loaders. If anybody wants to experiment with obsolete
boot loaders, they can achieve the same effect with manual boot
stanzas; and if they don't need to pass options to these boot
loaders, they'll still work fine from rEFInd as "generic" boot
loaders. For the moment, the code remains in place, but I may remove
it on no further notice in the future.
- 0.11.5 (2/12/2020)—This release fixes a handful of
bugs and makes a few miscellaneous changes:
- Fixed a bug that caused screen corruption when exiting the EFI
shell (and perhaps other programs) on some systems.
- Implemented a workaround for buggy filesystem drivers that
could cause rEFInd to hang when re-scanning devices.
- The NTFS driver is no longer built by default because it's produced
too many reports of hung systems. The source code is still included
and it can still be built, but the binary is now omitted.
- Cleaned up excessive slashes (/) in pathname specifications
in refind-install script.
- Corrected incorrect display of scanning for boot loaders
message under some circumstances.
- Fine-tune the use of %v in refind_linux.conf: Do
not include the auto-detected initrd file when %v is
used, to give the user greater control over initrd file
specification. Note: Some users may need to adjust their
configuration files because of this change!
- Updated the LodePNG library to the latest version (20200211).
- Renamed .der certificate files to use .cer
extensions, for better compatibility with KeyTool.efi.
- Minor man page formatting changes.
- Updated documentation to remove out-of-date references that have
accumulated over time.
- 0.11.4 (11/12/2018)—This release fixes a couple of small
but annoying bugs introduced in version 0.11.3 and improves some
filesystem drivers. More specifically:
- Samuel Liao provided bug fixes to the NTFS driver relating to
fragmented files and filesystems with cluster sizes of over
4KiB.
- Samuel Liao also added support for zstd decompression to the
btrfs driver. He's also fixed a RAID1 issue and added support
for RAID5 and 6.
- Version 0.11.3 introduced a bug in both refind-install
and mountesp that caused these scripts to fail in
macOS's Recovery environment. These bugs have been squashed.
- refind-install has long had a bug that caused it to
fail to properly identify the ESP in Linux when autofs was in
use. This bug has been squashed.
- rEFInd 0.11.3 introduced a bug that caused the default of
booting to the last-booted OS to be lost unless it was set
explicitly via default_selection in refind.conf.
This has been fixed.
- rEFInd would fail to compile with recent versions of EDK2
(obtained via git) because of an issue with
Refind.Pkg.dsc. This problem has been corrected.
- I've added references to several themes in themes.html, and
fixed a broken link or two. Thanks especially to AliciaTransmuted,
who's been cranking out rEFInd themes!
- 0.11.3 (7/22/2018)—This release implements a number of
minor bug fixes and some more major improvements; its two changes are:
- The new shutdown_after_timeout token in
refind.conf, if set, causes rEFInd to try to shut down the
computer rather than launch the default_selection when the
timeout value is reached. Note, however, that this feature
relies on EFI features that are not implemented by some EFIs. If the
feature is not implemented, the computer will reboot or hang. This
option is disabled by default, which results in the same behavior as
in previous versions of rEFInd.
- The new use_nvram token, if set to false,
off, or 0, causes rEFInd to store its variables to
files on the hard disk (in the vars subdirectory of
rEFInd's home directory). When use_nvram is set to
true or one of its synonym, as is the default, these
variables are stored in NVRAM, as was always the case for previous
versions. This feature is intended to improve functionality on
computers with flaky NVRAM and to reduce wear-and-tear on the
computer's NVRAM, albeit at the cost of increasing the risk of
filesystem damage. (There's no free lunch.)
- rEFInd now support JPEG images for banners. Note that rEFInd's JPEG
support does not support transparency, so although you can
use JPEGs for icons, PNGs usually work better. Also, rEFInd's JPEG
support is based on the NanoJPEG library, which
has some significant limitations, such as a lack of support for
progressive encoding. Thus, if you have problems with a particular
image, you may need to re-save it in a more basic form.
- I've eliminated the Scanning for boot loaders; please wait
message, which has generated a lot of negative comments.
- I've fixed a bug that caused portions of the Pausing before disk
scan... message to be retained when scan_delay was set
to a value over 1.
- The + symbol in default_selection may now be used
in any position in the list to refer to the previously-booted OS.
For instance, bzImage,+,vmlinuz now works, prioritizing any
bzImage files over the previous boot, but the previous boot
over vmlinuz files.
- I've added icons for Void Linux, Ubuntu 17.10 (Artful Aardvark), and
Ubuntu 18.04 (Bionic Beaver). I've also copied the gummiboot icon to
os_systemd.png, since gummiboot has been renamed
systemd-boot.
- I've fixed a bug that caused rEFInd to ignore the entire
refind.conf file if its first line was empty.
- 0.11.2 (10/22/2017)—This is a minor bug-fix release; its
two notable improvements are:
- I've fixed a bug, introduced in version 0.11.1, that caused setting
volumes in manual boot stanzas to not work.
- I've fixed a bug, present since version 0.11.0, that caused the new
tag-hiding feature to not work unless it was explicitly enabled in
refind.conf. (It should have been enabled by default.)
- 0.11.1 (10/9/2017)—This version is mainly a maintenance
release in response to Apple's release of macOS 10.13 ("High Sierra"),
although there are a couple of unrelated improvements. Its specific
changes are:
- The new Apple Filesystem (APFS) uses subvolumes, which appear as
subdirectories with UUIDs as names to the EFI and EFI programs such
as rEFInd. This fact means that the location of Apple's boot loader
has changed, from rEFInd's perspective, necessitating a code
update. This version provides that update.
- As a follow-on to the preceding change, I discovered that compiling
rEFInd with GNU-EFI resulted in a failure to properly track some
files on APFS volumes. I don't know if this failure reflected a bug
in Apple's EFI, in GNU-EFI, or in rEFInd; but I changed the way
rEFInd tracks boot loader files internally to work around the
problem. Although I've tested this version on an unusually wide
number of computers, it's possible that this change will introduce
new bugs. Thus, if you upgrade and have problems with boot loaders
not being detected or not launching, dropping back to version 0.11.0
may be worth trying. (Be sure to contact me with a bug
report, too!)
- I've modified refind-install to be smarter about modifying
existing NVRAM entries for rEFInd under Linux. Previously,
refind-install was quite aggressive about deleting and
re-creating these entries; however, this was causing failures on a
few computers. The script now checks more carefully to see if an
existing entry boots rEFInd and is set as the default; and if so, it
leaves that entry alone.
- I fixed a bug that could cause the hidden-tag maintenance feature to
crash the program.
- I fixed a bug, introduced in version 0.11.0, that caused both Apple
and Microsoft second-row recovery tools to go undiscovered.
- 0.11.0 (8/13/2017)—In addition to a few bug fixes,
this version sees several new features, many of which are likely
to be important to a significant number of people....
- CJ Vaughter has improved his touch-screen code. This should both
make more tablets' touch screens work and expands the support to
work with mice. Both input methods are disabled by default; you must
enable one by uncommenting the enable_touch or
enable_mouse options in refind.conf. (Enable only
one of these features, though; they're mutually exclusive!)
If you enable mouse support, the mouse_speed and
mouse_size options affect the mouse tracking speed and the
size of the mouse pointer, too. Note that not all computers support
mouse input, much less touch input. The former seems to be largely
unrelated to whether the firmware's own user interface supports
mice, in my testing. If you enable one of these features and your
computer doesn't support it, you can still use rEFInd; but you may
see a useless mouse pointer, and the default selection may not come
up in a highlighted state. Also, these features do not work on
32-bit systems.
- You can now hide OSes and external tool tags from the rEFInd main
menu by pressing the minus key (-) or Delete key (on PC
keyboards; some third-party Mac keyboards label this key Del, but
most Apple keyboards lack this key entirely). If you accidentally
hide a loder, you can recover it using the new tag recovery tool,
which uses a recycle icon on the second row. Hiding or un-hiding
loaders relies on the hidden_tags option being set on the
showtools line; but if you hide a tag and then remove the
hidden_tags option, rEFInd will continue to honor the
hidden settings. This option is set by default, but if you've edited
showtools for a previous installation and upgrade rEFInd,
you'll need to add hidden_tags to use this new
feature.
- A new refind.conf option, dont_scan_tools, works
much like dont_scan_files, but applies to external tools
(shells, MokManager binaries, etc.). You can use this option to hide
duplicate external tools.
- Thanks to Pavel Penev, the refind-install script now
supports a new option, --encryptkeys, which causes it to
encrypt and password-protect its local Secure Boot public key. This
option is useful only in conjunction with --localkeys. This
feature should help prevent abuse should somebody break into your
computer; the intruder won't be able to sign malware with your own
key and insert it into your boot path. You must set and remember a
password if you use this feature, though.
- The refind-install and mvrefind scripts now create
a file called BOOT.CSV and place it in the directory where
rEFInd is installed. This file is used by the fallback.efi
(aka fbx64.efi) program, which Fedora and some other
distributions are now installing, to regenerate a working boot list
should the NVRAM-based boot order be lost. See the page on keeping rEFInd booting for more on how to
control this functionality.
- Disk partitions can now be identified by partition GUID values in
more places—namely, in dont_scan_dirs and
dont_scan_files. Note that the GUIDs are partition
GUIDs, which some Linux tools identify as PARTUUID values.
Filesystem UUIDs are different. Partition GUIDs are fundamentally
GPT features; they don't exist on MBR disks. rEFInd assigns one
"fake" partition GUID to all MBR partitions, so MBR partitions can
be referred to, but cannot be distinguished from one another, in
this way.
- Identifying partitions by filesystem number (e.g., fs0: or
fs2:), which was deprecated with version 0.8.7 in 2015, is
now no longer supported—the relevant code has been removed.
You now must use filesystem labels, partition names, or
partition GUIDs instead of the unreliable filesystem numbers.
- In the past, some error messages on Macs would never appear on the
display, sometimes including a prompt to press a key to continue,
which could make it seem as if rEFInd had hung. rEFInd now includes
new features that enable such messages to appear in most (but
not yet all) cases, so you're less likely to see mysterious hangs
that aren't quite hangs on Macs. This does not affect UEFI-based
PCs.
- I've fixed a bug that caused disk badges to not be scaled along with
the main loader tag.
- Apple has updated at least some EFIs in a way that broke the
spoof_osx_version feature. This has been fixed.
- I've fixed a bug that caused rEFInd to ignore references to the
fallback boot loader (EFI/BOOT/bootx64.efi) in
dont_scan_files in some cases.
- I've fixed a bug in mvrefind that caused it to not restore
EFI/BOOT-rEFIndBackup when moving rEFInd out of the
EFI/BOOT location.
- I've fixed a bug that caused rEFInd to not properly sort a
Fedora/CentOS/RHEL vmlinuz-0-rescue* kernel to the bottom
of the kernel list.
- 0.10.9 (7/30/2017)—This version sees changes in some
graphics features and in the build process....
- To better support HiDPI/retina displays, rEFInd now automatically
scales its icons and text to twice the usual size on displays wider
than 1920 pixels. This change does not affect text mode (for
which setting the textmode option in refind.conf
is still necessary. Explicitly setting either
small_icon_size or big_icon_size in
refind.conf disables this feature, so you can explicitly
set any icon or font size you like in the usual way.
- rEFInd now displays its background/banner image before scanning for
boot loaders, and displays a notice that it's scanning for boot
loaders at this time. This will barely be noticeable on most
systems, but if you have lots of OSes or kernels, you may notice the
change.
- On rare occasion, when rEFInd runs into a problem, it displays a
text-mode error message and prompts the user to continue, even when
it's operating in text mode. On Macs, this has caused what looks
like a hang, since this text would not be displayed, but the pause
for user input would still occur. rEFInd now at least displays the
prompt to continue, although the error text may not appear. (This
feature still needs more work.)
- I've added icons for the Trusty (14.04), Xenial (16.04), and Zesty
(17.04) versions of Ubuntu, for those who install multiple Ubuntu
versions and want to distinguish them by separate icons. Sooner or
later I'm likely to remove these icons as their versions reach
end-of-life status.
- I've updated the LodePNG library, which rEFInd uses to load PNG
images. This is unlikely to have any obvious effects for users.
- I've significantly reworked the build process when using the
TianoCore toolkit. In brief, in addition to the tiano
target for make, a new edk2 target exists, which
works with newer versions of TianoCore. Behind the scenes, the new
version builds rEFInd in a way that's more akin to what most
TianoCore projects use. See the BUILDING.txt file for
details. I'm also building most of my own binary packages with
UDK2017 rather than UDK2014, which I'd been using for the past few
years. (My PPA packages still use GNU-EFI.)
- My USB flash drive and CD-R images now include the gdisk
and gptsync binaries, although the latter is inactive by
default, even on Macs.
- 0.10.8 (5/21/2017)—This version's changes are modest,
although a couple will be important to a few users....
- I've added shimx64.efi.signed as a valid Shim filename, and
mmx64.efi.signed as a valid MokManager filename, to
refind-install, so that Ubuntu users can point to the
signed Shim binaries on their root (/) partition, rather
than a copy on their ESP.
- I've made changes to enable compilation with GNU-EFI 3.0.5, which
was failing with the previous version.
- I've added an icon for Devuan GNU+Linux (a Debian spinoff that does
not use systemd).
- I've made some minor code efficiency improvements. These are
unlikely to have a noticeable impact on performance by
themselves.
- I've enabled the use of partition unique GUID values with
dont_scan_volumes. This should help users keep duplicate
boot loaders from showing up on RAID 1 arrays.
- I've changed "OS X" to "macOS" in assorted on-screen messages, to
conform with Apple's name change as of macOS 10.12 (Sierra). Note
that this change may require updating default_selection
options that rely on the string OS X!
- 0.10.7 (4/17/2017)—Soon after releasing version
0.10.6, I discovered a potentially serious bug it introduced, and
so I've made this new release, with the following new features:
- Although the memory management bug introduced with version 0.10.6
seems to be harmless on most systems, it caused hangs on one
computer (using UEFI DUET), hence my rushing out this update.
- I've answered too many queries from people who are confused by the
fact that many OS X installations are identified as Boot OS X
from Recovery HD on the rEFInd menu. Apple puts the boot loader
for its regular installation on the Recovery HD volume if
you use LVM or encrypt your root (/) partition, so rEFInd's
identification is correct, but it confuses people. I've therefore
adjusted rEFInd to omit the from Recovery HD part of that
message.
- I've updated refind-install to recognize mmx64.efi
(or the equivalent for other architectures) as an alternative name
for MokManager.efi.
- 0.10.6 (4/16/2017)—This version includes a few small
bug fixes and one new feature:
- The new feature is the extra_kernel_version_strings token
in refind.conf. This token accepts a comma-delimited list
of strings that will be treated similarly to digits for purposes of
matching Linux initrd files to Linux kernels. See the description on
the Configuring the Boot Manager page
for details.
- Some distributions have renamed MokManager.efi to
mmarch.efi (where arch is an
architecture code, such as x64). I've adjusted rEFInd to
recognize MokManager under this new name. I've also added
fbarch.efi to the list of loaders that are not
scanned by default. This loader restores a machine's NVRAM-based EFI
boot manager entries from a backup file and then launches the
default boot loader.
- I've squashed a bug that could cause filesystems managed by rEFInd's
filesystem drivers to not be mounted.
- I've fixed a bug in mvrefind that would cause it to fail to
move a rEFInd installation if the target directory did not exist.
The script now creates the specified target, if necessary.
- Previously, rEFInd would explicitly set the video mode when it
started, even when the display was already running in that mode.
This version no longer does so. This is a shot-in-the-dark attempt
to work around problems on Macs with "retina" displays, which tend
to boot up in suboptimal resolutions when rEFInd is used.
- 0.10.5 (3/4/2017)—This version includes a number of
modest changes, most of which will be of interest to relatively few
people:
- The touch/tablet support has been improved and so may work with
a few more systems.
- The refind-install script has been updated to work better
with disks other than those whose names take the form
/dev/sd? and /dev/hd? (in Linux).
- For the benefit of new Apple laptops that lack physical Esc and
function keys, additional keybindings have been added: Backspace
(Delete on most Mac keyboards) now works the same as Esc, and Tab
now works the same as F2/Insert/+.
- The Linux initial RAM disk detection code has been expanded so that,
if two initial RAM disk files are found for a kernel, the one with
more characters after the version string that match the equivalent
characters in the kernel filename will be used. For instance,
suppose the kernel filename is vmlinuz-4.8.0-32-standard,
and two initial RAM disk files are
initrd-4.8.0-32-standard and
initrd-4.8.0-32-debug. The first of those files has nine
matching characters after the version string (-standard),
vs. just one matching character (-) for the second. Thus,
the first file will be used.
- A second change to Linux initial RAM disk detection is that you can
now specify the kernel version string with the string %v in
the refind_linux.conf file's options field. Thus, if your
distribution provides two initial RAM disk files per kernel, and
also provides numbered kernels, you can create a
refind_linux.conf file that enables you to boot with either
(or both) of the initial RAM disk files that match a specific
kernel.
- I've done some minor code optimization in the functions that search
for boot loaders. This had no noticeable effect on speed for me, and
is likely to be more than offset by the more complex initial RAM
disk processing noted above; but it might help a little bit on
systems with many boot loaders or kernels.
- 0.10.4 (10/9/2016)—The number of changes in this
version is modest, but some features are important to some people:
- Thanks to code submitted by an anonymous contributor, rEFInd now
supports some touch screens. This feature relies on support
in the firmware itself, though, and even some tablets lack this
support, so this feature does not work on all tablets.
- Martin Whitaker has contributed updates to the ext4fs driver to make
it compatible with filesystems created with 64-bit pointers. As a
practical matter, this is important because 64-bit pointers are now
being used by default in some distributions. In theory, this feature
may enable use on over-16TiB filesystems, but this is untested at
the moment.
- GNU-EFI version 3.0.3 or 3.0.4 has made changes that caused rEFInd's
drivers to fail to compile. This version addresses those compilation
problems.
- A rEFInd coding error manifested with previous versions of rEFInd
when compiled with GNU-EFI starting at version 3.0.3 or 3.0.4,
causing the main rEFInd binary to crash. This problem has been
fixed. To the best of my knowledge, this bug has never manifested
with earlier versions of GNU-EFI or Tianocore builds.
- The refind-install script now does a better job of
detecting disks that have exotic names—those other than
/dev/sd? or /dev/hd?.
- 0.10.3 (4/24/2016)—This version features mostly modest changes and additions:
- A new Linux script, refind-mkdefault, simplifies the task of resetting rEFInd as the default boot program. It's documented here. I've also written a new documentation page on the problem generally, which covers how to handle the problem in multiple OSes.
- I've modified the SIP/CSR rotation code so that the SIP/CSR rotation tool will appear more reliably on Apple computers.
- The NTFS driver has been improved to reduce the chances of it hanging randomly.
- The code that excludes shell binaries from appearing in the main boot list has been altered to reduce the odds of an incorrect exclusion from occurring.
- rEFInd now recognizes the fwupx64.efi program as a special case: If detected, this program is presented as a second-row option rather than as a regular boot loader. (This tool is used to update firmware on some computers.)
- BIOS/CSM/legacy-mode OSes all now include the string Legacy in their descriptions on Macs.
- 0.10.2 (1/26/2016)—Changes to this version are relatively modest and focus on bug fixes:
- A bug in refind-install under OS X could cause the mountesp script to be installed as a file called /usr/local/bin if that directory was absent. This bug has been fixed.
- Another OS X refind-install bug caused the --usedefault option to not work properly. This has been fixed.
- A Linux refind-install bug caused Secure Boot detection to fail in some cases. This has also been fixed.
- The mvrefind script could fail to move the Windows boot loader file (bootmgfw.efi) under some circumstances. Another bug in the same script caused mvrefind to register rEFInd using its default filename (rEFInd Boot Manager) rather than the name Windows Boot Manager when moving rEFInd to the Windows boot manager's location. Both of these bugs have been squashed.
- A long-standing but obscure bug/quirk affects some EFIs, such as that in the HP ProBook 6470b: These EFIs connect useless drivers to partitions with no known filesystems, before rEFInd can load filesystem drivers. The result is that drivers loaded by rEFInd could not read the partitions in question. This version of rEFInd works around this problem.
- A bug introduced in rEFInd 0.10.1 caused custom volume badge icons (read from an icon directory specified by icons_dir in refind.conf) to be ignored. I've fixed this bug.
- Finally, a small non-bug improvement: I've added centos.crt and centos.cer public-key files for CentOS to the keys directory.
- 0.10.1 (12/12/2015)—This version of the program features one big change that will affect very few people, another big behind-the-scenes change, and a number of small changes that will affect more people:
- rEFInd now compiles and runs on ARM64 (aka AARCH64 or AA64) systems. To date, I've tested it only using QEMU, so this support is very preliminary, almost to the point of being theoretical.
- I've made significant changes to the Makefiles used to compile rEFInd. This should have no effect on the way rEFInd functions, or even in how most programming tasks are done; but the changes should help simplify some future changes.
- I've made font changes: I've removed Luxi Sans Mono and changed the default font from Nimbus Mono to Liberation Mono.
- A bug that causes rEFInd to fail to detect boot loaders on removable media when rEFInd itself was launched from the fallback filename is now history.
- Fedora, Red Hat, and CentOS use a special recovery kernel with a name beginning vmlinuz-0-rescue. This kernel could be newer than others, which would make it the default on in a "folded" set of kernels—a highly undesirable situation. I've therefore modified rEFInd's loader-sorting algorithm to move this rescue kernel to the end of the list, no matter what its time stamp reads.
- I've added a workaround to gptsync to fix problems that caused it to skip through its menus using the defaults without taking user input on some Macs. I've also added 53746F72-6167-11AA-AA11-00306543ECAC (Apple Core Storage, gdisk type AF05) to the list of partition types that gptsync recognizes.
- The refind-install script can now be run as a symbolic link in Linux, which means it can be run as a normal command.
- I've fixed bugs in refind-install and in mkrlconf that could cause them to misidentify kernel options. See NEWS.txt for details.
- I've moved the detailed description of refind-install from Installing rEFInd to a man page, and I've created HTML versions of the three man pages that the project now includes.
- I've added kernel* as a pattern for matching Linux kernels, since Gentoo Linux names its kernels by this pattern.
- I've updated LodePNG, which is the PNG graphics library that rEFInd uses, to version 20151024.
- The rEFInd PPA now asks for confirmation before installing to the ESP when the package is first installed. Updates follow the instructions given on first installation. You can modify this setting by typing dpkg-reconfigure refind.
- 0.10.0 (11/8/2015)—I've given this version an extra-large version number bump because of some highly user-visible changes, especially for Mac users. Changes include:
- I've swapped out the old icons for new ones. I've replaced the old
icons because the OS icons were becoming a hopeless mish-mash of
styles and because I wanted to consolidate the icon collection to use
a more limited set of original sources for record-keeping purposes.
If you prefer the old icons, you can continue to use them. After
upgrading, rename icons-backup to something else (say,
icons-classic) and add a line to refind.conf to
reference the new directory, as in icons_dir
icons-classic.
- A new feature, spoof_osx_version, causes rEFInd to tell a
Mac that it's about to launch OS X. This alters how some Macs
initialize hardware, which can make secondary video chipsets work on
some Macs. See the comments in refind.conf-sample or on the
Using rEFInd page for details. This feature
has no effect on UEFI-based PCs.
- Another new feature enables you to adjust a Mac's System Integrity
Protection (SIP) settings from within rEFInd. To use this feature,
you must adjust two lines in refind.conf: The new
csr_values line sets hexadecimal values through which you
can rotate using a new second-row tag that's activated by the new
scanfor line option of csr_rotate. Thus, you must
add or change both the scanfor and csr_values
lines. See the new rEFInd and System Integrity
Protection page for information on how to use this new feature.
Although this feature can work on UEFI-based PCs if they contain the
necessary NVRAM variable, such systems are unlikely to have this
variable, and it's unlikely to be useful even if it's present.
- If the SIP NVRAM variable is set, rEFInd now displays its current
value in the About screen.
- I've renamed several support scripts: install.sh to
refind-install, mvrefind.sh to mvrefind,
and mkrlconf.sh to mkrlconf. I've also added man
pages for mvrefind and mkrlconf.
- Under OS X, refind-install now checks the machine's SIP
status and warns the user if it's active. To help with such
installations, the script can also now be run from a boot of the
Recovery HD.
- Under Linux, refind-install and mkrlconf now use
/proc/cmdline as a source for the default boot options for
Linux kernels, rather than trying to extract them from GRUB
configuration files—except when the --root
option is used, in which case the script continues to use the GRUB
configuration files as a source of boot options. This change should
help rEFInd pick up exotic boot options that GRUB computes at boot
time, such as Btrfs subvolume options.
- I've added a new script, called mountesp, which mounts the
ESP on Macs, using the same algorithm used by
refind-install. This should help Mac users who want to edit
their rEFInd configurations.
- I've changed the default also_scan_dirs setting from
boot to boot,@/boot. This change helps rEFInd pick
up kernels from Btrfs volumes.
- I've changed from .zip to a tarball (.tar.gz) as
the file format for the source code package. This change simply
reflects the fact that Linux is the only supported build environment
for rEFInd, and tarballs are more in line with that platform than are
.zip files. The primary binary file format remains a
.zip file, with Debian packages and RPMs also
available.
- My 32-bit Mac Mini suffered from a bug that caused rEFInd's
icon-resizing code to hang in a conversion from floating-point to
integer values. I've therefore adjusted the icon-resizing code to
avoid doing floating-point computations. This change has a drawback,
though: It causes some images to acquire artifacts when resized,
particularly on 32-bit systems. If you run into such a problem, you
should scale your icon(s) or banner/background image so that it does
not need to be resized. Sorry, but between a system crash and minor
graphics artifacts, the graphics artifacts are the lesser of two
evils.
- 0.9.2 (9/19/2015)—Soon after releasing 0.9.1, I started receiving bug reports about problems with it and Shim 0.8. (See this thread for one such report.) It turns out that the problem was not a new bug in rEFInd, but rather a change from Shim 0.7 to Shim 0.8 that made it next to useless with rEFInd. Specifically, Shim 0.8 now de-registers itself from the EFI after a follow-on program launches another one. This is done to avoid problems in a boot path in which Shim launches fallback.efi, which in turn launches another Shim. This creates a new problem, though: rEFInd can validate just one binary before it's "cut off" from Shim. Since rEFInd's drivers are binaries, if you use a single driver, that means that you won't be able to launch anything that requires validation via Shim. I quickly discovered a workaround, which I've implemented in this release. I consider this a "band-aid" patch, though, because it relies on a quirk of Shim's logic to bypass its de-registration. As such, the workaround in this release may break with a future Shim. A true fix will take longer to develop. I want to release this workaround version to head off further problems in the near term, though. This version also introduces a new feature, which is also Shim-related: Since version 0.7, Shim has supported launching binaries other than grubx64.efi by passing them on the command line. (Actually, Shim 0.4 supported this, but it required a broken path specification.) I've added support for this feature to install.sh: Adding the --keepname option to install.sh causes the script to preserve rEFInd's regular filename and to register the approprirate follow-on parameters to have Shim launch rEFInd by that name. This works, but is likely to be more delicate than using the default Shim follow-on name of grubx64.efi. The advantage, of course, is that rEFInd needn't "lie" about its name, which makes for less confusion in filenames. For the moment, the RPM and Debian packages I build do not use this new naming feature, since I can't be sure what version of Shim might be picked up. These changes do not affect users who do not use Secure Boot.
- 0.9.1 (9/13/2015)—This version has improved the Discoverable Partitions Specification (DPS) support in a number of ways that should make it more reliable when /etc/fstab omits references to the root (/) partition or when the GPT read-only or do-not-automount options are used to control these features. A stray DPS-related debugging print command has also been removed. I've improved rEFInd's ability to guess the Linux distribution by having it examine /etc/lsb-release as well as /etc/os_release, and I've added an icon for Elementary OS. Finally, I've made improvements to rEFInd's handling of case-insensitive string comparisons, which were buggy on some EFIs, particularly when rEFInd was compiled with GNU-EFI. rEFInd is still at the mercy of the EFI and support libraries, but many problem cases should now be resolved.
- 0.9.0 (7/26/2015—This version gets a bump up to 0.9.0 mainly because of a highly user-visible new feature: kernel folding. With kernel folding active, multiple Linux kernels in a single directory appear as just one main-menu entry, which launches the most recent kernel (by file timestamp) by default. Older kernels appear on the first one's submenu (accessed by hitting F2 or Insert). You can disable this new feature by setting fold_linux_kernels false in refind.conf. Another new feature is support for the Discoverable Partitions Spec, which enables rEFInd to locate the Linux root (/) partition without a refind_linux.conf or /etc/fstab entry. I know of no distribution that automatically sets up its partitions in this way, but if and when this starts to happen, rEFInd will be ready. Other changes are relatively minor: The Debian postinst script now calls install.sh with --localkeys if sbsign and openssl are available, which helps if using the Ubuntu PPA on a system with custom Secure Boot keys; I've fixed a packaging bug that prevented IA32 versions of filesystem drivers and gptsync to not be built in the PPA; mkrlconf.sh now refuses to run under OS X; rEFInd now skips checking for BIOS-mode boot code on UEFI-based PCs, which should speed it up a little; I've fixed a bug that caused rEFInd to crash if it found an existing but empty refind_linux.conf file; I've made minor code changes to enable rEFInd to build under GCC 5.1; and I've added a new icon for Kali Linux (provided by Francesco D'Eugenio).
- 0.8.7 (3/1/2015)—This release provides bug fixes and refinements to existing features. Several changes should reduce the odds of rEFInd crashing because of assorted problems. Other changes improve Secure Boot handling, including improved Secure Boot detection in install.sh, recognition of KeyTool.efi and KeyTool-signed.efi as MOK manager utilities, and reporting of Secure Boot status for x86 (IA-32) systems in the rEFInd information screen. Filesystem detection is improved (again), and XFS has been added as a known filesystem. Detection of FreeBSD's BIOS-mode boot loader is improved, which should give more Mac users the right OS icon when booting FreeBSD in BIOS mode. A bug in install.sh that caused inappropriate installation to the filename bootx64.efi or bootia32.efi, and failure to update the computer's boot list, has been squashed. Finally, I'm deprecating the use of fsx: notation for referring to filesystems. The numbering of filesystems is simply unreliable, and better alternatives (the use of partition GUIDs, partition names, and filesystem names) have been added in previous releases. The fsx: code remains in rEFInd, and if it's working for you, you can continue to use it; but sooner or later I'll remove that code, so you're advised to change your manual boot stanzas and other options that use it before that happens.
- 0.8.6 (2/8/2015)—Most (but not all) of this release's changes focus on Windows dual-booting and Mac-specific issues. There's a new Windows 8 icon, which is now used by default as the Windows icon, although the old icon remains available and is used for Windows XP and earlier boots on Macs. If the NTFS driver is loaded, rEFInd will now exclude non-bootable NTFS volumes from the Mac boot list (this change does not affect UEFI-based PCs). A bug that caused misidentification of whole disks and NTFS volumes as being FAT has been fixed (again, this problem affected Macs, not PCs). A couple of Mac-specific install.sh bugs have been fixed, resulting in more reliable identification of the ESP and of the installation directory. Previous versions ignored a volume name of "HFS+ volume" because that name was produced by earlier versions of the rEFInd HFS+ driver for all HFS+ volumes; but the current HFS+ driver produces a real volume name, so I've removed that special case from the code. I've removed the r472 rEFIt commit, introduced in 0.8.5, because it was causing some BMP files to fail to load. Finally, the hideui token in refind.conf now accepts a value of badges, which has the effect of hiding the disk-type badges associated with OS launch icons.
- 0.8.5 (2/1/2015)—The biggest single change with this version is a new NTFS driver contributed by Samuel Liao, who also contributed the Btrfs driver. Samuel also contributed some miscellaneous driver fixes and a change to the way the keyboard is handled, which improves responsiveness on some systems. This version also improves the way install.sh works under OS X. In particular, it tweaks the bless command in a way that may eliminate startup delays and it does a better job of detecting and replacing existing rEFInd installations (on the ESP), rather than blindly writing to EFI/BOOT. Finally, this version applies commits from late in rEFIt's history: r467, which improves handling of BIOS/legacy boots from the second and subsequent disks on Macs; and r472, which enables handling BMP images that are not vertically flipped. These commits were not present in rEFInd from the start because the starting point for rEFInd was a Debian source package taken from a slightly earlier version.
- 0.8.4 (12/8/2014)—OS X 10.10 ("Yosemite") made changes that necessitated alterations to both rEFInd's install.sh script and rEFInd defaults. Specifically, Yosemite now uses a form of logical volume management (LVM) that makes installing rEFInd to the OS X root directory impossible, so the default location is changed to the ESP. Changes to the default for dont_scan_volumes are necessary to make the new location for the OS X boot loader show up. Another big change is in the new (but experimental) support for network booting, with the help of iPXE. See the BUILDING.txt file in the source package for details on how to build and install the necessary files. A new option for refind.conf, enable_and_lock_vmx, sets the VMX bit on Intel CPUs, which is necessary for booting some hypervisors, such as Hyper-V. This feature can be set on many computers' EFIs, but some, such as Macs, lack this ability. (Do not set this option on AMD CPUs or older Intel CPUs that lack this feature, though!) If rEFInd can't find its icons directory, it now drops back to text mode. A bug in dont_scan_files has been fixed, enabling you to specify a complete path to certain special-case boot loaders to omit them from scans. Finally, I've updated the icons for Fedora and Ubuntu and added an icon for Xubuntu.
- 0.8.3 (7/6/2014)—This version introduces a number of minor bug fixes and feature improvements. The most user-visible of these are that on Macs, rEFInd now displays a partition's label for BIOS-bootable OSes on filesystems that rEFInd can't read; and you can now pass timeout = -1 in refind.conf to have rEFInd boot the default OS immediately unless there's a keypress when rEFInd loads, in which case that keypress is read as a shortcut key. A change that's less likely to be noticed is that the default setting for scan_all_linux_kernels is now true. Since this option had been uncommented in the sample configuration file, this change will not affect most people. I've fixed a bug that caused rEFInd to unload drivers as soon as they were loaded. This didn't affect rEFInd's drivers because they ignored the relevant EFI calls; but this was preventing some other drivers from working. I've added two new icons, one for Mythbuntu and the other for the Clover boot manager. Finally, I've removed Oracle's GPLv2 code from the core filesystem driver code, since it was incompatible with the GPLv3 used by the Btrfs driver. This change shouldn't affect the operation of the drivers, but there's a slim chance that it will.
- 0.8.2 (6/8/2014)—I've continued to refine the UEFI BIOS-mode boot code with this version; it now uses the BIOS-mode boot entries provided by the firmware by default, and actively scans for new entries only if the deep_uefi_legacy_scan token is present in refind.conf. This change is motivated by reports I've received of BIOS-mode boot entries multiplying on some systems; however, a deep scan is required to detect the second and subsequent disks on other computers. A second important change is that the default selection is now the last-booted item rather than the first item in the list. You can still set a fixed default via the default_selection token, and in fact if you provide a list that begins with +, the default will be the previously-booted item unless it can't be found, in which case the subsequent items in the list will be tried. Minor changes include the addition of an icon for Mageia Linux, a minor bug fix in GUID-parsing code, and an update of my personal build system from TianoCore UDK2010.SR1.UP1.P1 to UDK2014. This last item will affect anybody else who uses TianoCore to build rEFInd, since some default paths have changed, so you may need to update yourself or adjust the path in Make.tiano.
- 0.8.1 (5/15/2014)—The biggest code change in this version is that rEFInd's UEFI-style BIOS-mode boot code now works when rEFInd is built with GNU-EFI as well as when built with Tianocore. This change won't affect users of my binary builds, which have long been made with Tianocore, but if your distribution builds rEFInd with GNU-EFI, it might interest you. Some user-noticeable bug fixes include a fix to a bug that could cause rEFInd to omit boot loaders on a partition's root directory, a fix to a bug that caused .VolumeIcon.icns to take a higher-than-intended precedence on OS X boot volumes, a fix to a bug that could cause a BIOS-mode boot from the wrong device in UEFI mode, and improved centering of BIOS-mode boot descriptions on the screen. Other changes include two new optional bitmap fonts (Ubuntu Mono and Nimbus Mono), omission of messages about scanning of boot loaders when scan_delay is set to 1, a change to the search order for icons (PNG files now override ICNS files), and a conversion of all the icons in the icons directory from ICNS to PNG format. Note that this last change may necessitate changing manual boot stanzas if you refer to icons in the default icon directory, depending on how you upgrade rEFInd.
- 0.8.0 (5/4/2014)—The biggest changes with this version relate to BIOS/CSM/legacy support, particularly on UEFI-based PCs. This version can now boot from the second (or later) hard disk on such computers, and is more likely to be able to cope with removable disks. On both Macs and PCs, you can also now use dont_scan_volumes to remove a legacy-boot option from the boot list, so long as it has a unique name (as shown in rEFInd's main menu when you highlight the option). This version also introduces the ability to use partition names and partition GUIDs to refer to devices (in dont_scan_volumes, displayed in the rEFInd menu, and so on). Note that partition names are stored in GPT data structures. These are different from filesystem names, which are stored in filesystem data structures. rEFInd now limits the length of the firmware identity string shown in the "About" screen, to prevent problems with the string overrunning the space available on an 800x600 display. Finally, I've fixed a memory-allocation bug that caused error message displays on some systems when re-scanning boot loaders. This bug might conceivably have caused some systems to hang when re-scanning, too.
- 0.7.9 (4/20/2014)—This version includes a number of bug fixes: install.sh no longer displays error messages if the dmraid utility isn't available; the HFS+ driver now reports a correct volume name; filesystem driver bugs that could cause lockups have been fixed; a redundant "utility" in the MOK utility's description has been removed; and an (as-yet untested) attempt to fix a continuous-rescanning problem after ejecting a disc on some computers has been implemented. In addition, rEFInd now removes redundant kernel entries on Ubuntu systems to keep the menu uncluttered and a new gdisk option has been added to the showtools item. (An EFI version of my gdisk utility can be built with the help of the UEFI GPT fdisk library.)
- 0.7.8 (3/9/2014—This version emphasizes changes to icon and banner graphics handling. Internally, rEFInd can now scale graphics, which previous versions could not do. To make use of this feature, three new refind.conf tokens now exist: big_icon_size and small_icon_size set the sizes of big (first-row OS) and small (second-row tool) icons; and banner_scale tells rEFInd to draw banners to a 1:1 scale (noscale, the default) or to scale the banner to fill the screen (fillscreen). See Table 1 on the configuration page of this document for more on these new options. I've also adjusted the post-installation script used by the RPM and Debian packages to search for existing Shim programs called shimx64.efi, not just shim.efi (as had been done before). This should help when installing a package on distributions that use the shimx64.efi filename, such as Ubuntu. Finally, I'm providing a preliminary set of Debian packaging files, which may help distribution maintainers to adopt rEFInd.
- 0.7.7 (1/3/2014)—A new configuration file token, windows_recovery_files, leads this list of changes; you can use it to specify files that boot Windows recovery tools. If you include the windows_recovery option on the showtools line, these files will then be represented by a small Windows recovery badge on the second row rather than as a full-sized OS loader, thus reducing clutter and making the purpose of this loader clearer. You can also now specify a complete path to dont_scan_files items, including a volume specifier. The use_graphics_for, also_scan_dirs, dont_scan_dirs, dont_scan_files, scan_driver_dirs, and windows_recovery_files tokens can all now accept + as their first option, which causes subsequent list items to be added to their defaults rather than replacing them. The configuration file can now be specified at program launch by passing a -c option, as in -c myconf.conf; you can use this feature to set up a manual boot stanza that launches rEFInd with modified boot options. Scans of ext2/3/4fs and ReiserFS partitions now omit partitions with filesystem UUIDs that have already been seen. This is an effort to reduce clutter from such partitions that are components of RAID 1 arrays. The install.sh script now attempts to locate and mount an unmounted ESP when run under Linux. Finally, I've fixed a bug in both install.sh and mkrlconf.sh that caused the generated refind_linux.conf file to contain a stray line break and unnecessary PARTUUID= specification on some systems.
- 0.7.6 (12/15/2013)—The biggest changes in this version relate to the default_selection setting. You can now provide multiple default selections by listing them within quotes and separated by commas, as in default_selection "ubuntu,fedora" which boots ubuntu if it's present and fedora if ubuntu is not present but fedora is. This should be helpful with removable disks. You can also include two times, in 24-hour format, following a default_selection specification, as in default_selection Maintenance 1:00 2:00, which boots Maintenance by default between 1:00 and 2:00. If another default_selection without a time specification preceded this line, the earlier one will still apply at other times. Another change to the main program is that you can now set screensaver -1 to have rEFInd come up with its screen blanked. You'll probably want to combine this with a short timeout value to have rEFInd boot your default OS quickly unless you press a key first. Finally, I've added a new option to the install.sh script: --ownhfs target_partition. This option is valid only under OS X. It installs rEFInd to an HFS+ volume that does not currently hold an OS X installation. The installation method differs from the usual rEFInd installation in that the result looks to the firmware more like an OS X installation. This makes rEFInd appear as an option in the firmware's own boot manager and it may help suspend-to-RAM operations.
- 0.7.5 (11/10/2013)—This version fixes a few bugs, the most important of which is one that caused some Macs to hang when multiple EFI drivers were present. Another squashed bug caused the screen to clear to the default gray rather than the actual background color when launching OSes in graphics mode. rEFInd no longer shows all exFAT partitions as being bootable on Macs when legacy boot options are enabled; now such partitions only show up as bootable if rEFInd spots a known boot loader installed on them. Finally, I've fixed a bug that caused install.sh to fail when installing to the ESP with recent versions of OS X.
- 0.7.4 (8/25/2013)—This version fixes problems in booting VMware's mboot64.efi boot loader and when launching boot loaders from some types of Mac drives. These fixes might improve matters for other boot loaders, too. I've also added a space to the end of the Boot X from Y description, which means you can use Y in the default_selection field even if another entry contains the same Y string, but with something added. To do this, you must enclose Y in quotes and add a space to its end, as in default_selection "Bit ", which sets the first boot loader on the Bit volume as the default, even if you also have a disk called Bitten. Finally, this version adds explicit support for the new EFI version of Memtest86. See the "Installing Additional Components" section of the Installing rEFInd page for details on this support.
- 0.7.3 (8/7/2013)—This version fixes a bug that caused boot failures when launching BIOS-mode OSes on Macs. It also fixes a bug that caused such OSes' disk-type icons to disappear.
- 0.7.2 (8/6/2013)—This version primarily fixes a number of minor bugs: A display glitch when the second row of icons is empty; improper scanning when a volume specification was used in also_scan_dirs; improper reading of volume badges from user-specific icons directory or from .VolumeBadge.icns files. Also, This version adds protection against loading invalid files as drivers, which can crash some EFIs, adds an icon for Funtoo Linux, and adds PreLoader.efi and shim-fedora.efi to the default dont_scan_files list.
- 0.7.1 (7/8/2013)—The most important improvement to this version is a bug fix to the filesystem drivers. In version 0.7.0, drivers could hang the system (the Btrfs driver in particular generated problem reports, although the bug could theoretically affect any driver). Version 0.7.1 fixes this problem. I've also fixed a build problem with development versions of the TianoCore EDK2. In rEFInd proper, I've added a scan for EFI/Microsoft/Boot/bkpbootmgfw.efi, which is how recent versions of Ubuntu's Boot Repair utility rename the Windows boot loader. This change enables rEFInd to launch Windows even on systems that have been "repaired" by this overzealous tool. I've also fixed a bug that caused volume specifications in also_scan_dirs tokens to be ignored.
- 0.7.0 (6/27/2013)—Improvements to the filesystem drivers dominate this version. The biggest change is a new Btrfs driver, created by Samuel Liao and based in part on the GRUB 2.0 Btrfs support. The drivers also now include a read cache to improve their speed. This has only a tiny effect on most computers, but on some it can speed boot times by a few seconds, and under VirtualBox the effect is dramatic—the ext2fs driver goes from a sluggish three minutes to load a kernel and initrd to three seconds. I've also changed some critical filesystem driver pointers from 32-bit to 64-bit, which may enable some of them to work with larger filesystems, although this isn't yet tested. The main rEFInd binary sports only two changes: It can now identify Btrfs volumes as such for labelling purposes and it can now filter out invalid loaders (those for the wrong architecture or Linux kernels that lack EFI stub loader support, for instance).
- 0.6.12 (6/18/2013)—This version changes relatively little code, but it adds one feature that will simplify rEFInd installation for some users: The program can now deduce minimal Linux boot options based on an /etc/fstab file if that file is on the same partition as the kernel (in other words, if you do not use a separate /boot partition). Put another way, refind_linux.conf is no longer required for some installations, although it's still desirable. If you're already using rEFInd, this isn't likely to be important, but it can help when you're just starting out. In addition, this version adds support for the Linux Foundation's PreBootloader in the install.sh script. I've also changed the default 64-bit shell included on the CD-R and USB flash drive images to a modified version 2 shell, so as to enable use of the bcfg command to help install rEFInd (or make other changes to the firmware's boot manager configuration).
- 0.6.11 (5/13/2013)—Two new features may have a noticeable affect for many users: First, rEFInd now ignores symbolic links on filesystems that support them. I've implemented this change because I've been receiving too many reports from users who want to remove redundant or non-functional Linux boot entries caused by symbolic links created by distributions. Although this is possible by editing the dont_scan_dirs or dont_scan_files options in refind.conf, telling users how to do this has become tedious. If you want to use links to create multiple entries for one kernel or boot loader, use hard links instead of symbolic links. The second major user-visible change is that rEFInd now tries to guess the distribution type based on the naming of the kernel file (effective only for Fedora and RHEL) or the contents of the /etc/os-release file (effective only if the installation does not have a separate /boot partition or if /etc/os-release is copied to that location on the partition that holds the kernel). There are several other minor cosmetic issues that some users may notice, including icons for Lubuntu and Kubuntu and a change in the name of the "Reboot to Firmware User Interface" option to "Reboot to Computer Setup Utility." I've also fixed a bug in gptsync that could cause it to hang if the disk had too few GPT partitions. Finally, I've improved the install.sh script so that it works better from a path with directory names that include spaces.
- 0.6.10 (5/5/2013)—This version adds a number of minor improvements: The ability to create multiple screen shots under a sequence of names rather than using just one name; a new screen saver feature, activated by the screensaver token in refind.conf; and an option to reboot the computer into the firmware's setup utility on computers that support this feature. I've also added an OS for ChromeOS (os_chrome.icns), and I've updated the LodePNG library to the latest version, which might improve rendering of some PNG files.
- 0.6.9 (4/25/2013)—The most visible change to this version is to the rEFInd banner image, which now includes an icon provided by Erik Kemperman. The biggest change with this version is the inclusion of an updated version of gptsync, which is popular on Macs as a means of maintaining the hybrid MBR that's required to boot Windows in BIOS mode on that platform. Because hybrid MBRs are ugly and dangerous, though, the rEFInd install.sh script installs the program only under OS X, and even then it must be activated by uncommending the scanfor line in refind.conf and adding gptsync to its options list. If you want to use gptsync on a PC, you can, but you'll need to copy the program file manually to the ESP's EFI/tools directory. Other changes with this version include working around a suspected firmware bug that can cause hangs when rEFInd starts on some systems and changing the timeout code so that rEFInd will launch its default OS even if the computer is started without a keyboard.
- 0.6.8 (3/18/2013)—This version fixes a few obscure bugs but adds only one minor new feature. Most notably, it fixes a problem that caused "Invalid Parameter" errors to appear when scanning for boot loaders on some systems; fixes a bug that caused icons defined in files named after boot loaders to not appear; and fixes a bug in the install.sh script that caused the script to fail on some systems. It also enables you to name a shell shell.efi in the root directory (previously only shell_arch.efi worked in the root directory, although shell.efi worked in the EFI/tools directory).
- 0.6.7 (2/3/2013)—This version fixes a few bugs and adds some minor features relating to Secure Boot. Bug fixes include keeping rEFInd out of its own menu when it's launched as EFI/Microsoft/Boot/bootmgfw.efi; keeping the dont_scan_volumes option out of the also_scan_dirs list; a fix for dont_scan_volumes so that it applies to the OS X boot loader; and a fix for a bug that caused PNG files in a user-specified icons directory to be ignored if an ICNS file was available in the standard icons directory. New features include support for the Linux Foundation's HashTool.efi as a MOK utility, scanning for MOK utilities on all volumes, and a more verbose error message when a Secure Boot authentication failure occurs.
- 0.6.6 (1/26/2013)—This version includes two new features and a number of minor bug fixes. The first new feature is support for changing rEFInd's font via the font token in refind.conf. You're limited to monospace fonts that are encoded as PNG files; you can't use variable-width fonts or normal font files like TrueType fonts. The fonts support only ASCII characters. See the fonts section on the Theming rEFInd page for details. I've also changed the default font to a slightly larger one that's anti-aliased. The second new feature is that rEFInd now detects when the EFI/BOOT/bootx64.efi (or EFI/BOOT/bootia32.efi on 32-bit systems) boot loader is a duplicate of another boot loader, and automatically excludes it from the OS list. This is useful on systems that boot with Windows, since Windows tends to install its boot loader twice, once using the EFI/BOOT/bootx64.efi filename. Bug fixes are described in the NEWS.txt file, and include fixes for bugs that prevented manual boot stanzas in included configuration files from being detected; that caused an ASSERT error to appear on the screen on some systems if default_selection was not set; the caused Binary is whitelisted messages to persist on the screen when loading signed EFI drivers with Secure Boot active; that caused rEFInd to ignore icon tokens in refind.conf manual boot stanzas; and that caused the install.sh script to fail to update drivers when rEFInd was installed to EFI/BOOT.
- 0.6.5 (1/16/2013)—Most of this version's changes relate to icon, graphics, and theming features. The biggest code change is in support for PNG files for banners, icons, and selection backgrounds. I've also fixed bugs that prevented large banners from being used; you can now use banners as big as the screen (or bigger, but they'll be cropped), as illustrated on the Theming rEFInd page. The text color also now automatically switches between black and white depending on the background over which it's displayed. If you don't use these features, you're likely to notice some changes in where certain elements are displayed. Most obviously, the banner appears higher on the screen than it did previously, so as to minimize the chance of overlap with text displays such as the information screen. These text displays should appear correctly even on tiny 640x480 displays (they were blank on such small displays in the past). I've added icons for Haiku and ALT Linux. Finally, the only non-graphics development is the addition of a "safe mode" boot option for OS X, which you can disable by adding safemode to the hideui option in refind.conf.
- 0.6.4 (1/8/2013)—Bug fixes motivate this release; it corrects a couple of memory management bugs in 0.6.3 that cause rEFInd to hang at startup on some computers (unfortunately not on any of mine, so I missed this). I've also made a small change to the install.sh script so that it installs the ext2fs driver rather than the ext4fs driver if the script detects that a Linux kernel is on an ext2fs or ext3fs partition. This can keep rEFInd from scanning ext4fs partitions and picking up non-functional symbolic links to vmlinuz on such partitions.
- 0.6.3 (1/6/2013)—The installation script and related tools see the biggest changes in this version of the program. The install.sh script can now detect a rEFInd installation in EFI/BOOT or EFI/Microsoft/Boot and update it rather than install to the default location of EFI/refind. It will also install to one of these fallback locations if it's run in BIOS mode, thus helping users who want to get a BIOS-mode install of Linux running on an EFI-based computer. A new mvrefind.sh script can move the installation between these three locations (or more exotic locations). Outside of scripts, the dont_scan_dirs and also_scan_dirs tokens can now accept volume specifications, as in myvol:EFI/bogus to not scan (or scan) the EFI/bogus directory on the myvol volume. I've also fixed a bug that caused rEFInd to ignore default boot loaders on removable disks if rEFInd was installed using the fallback filename. I've also modified the ISO-9660 driver so that it works with ISO-9660 images written to non-optical media. This may help with getting "hybrid ISO" images written to USB flash drives to boot.
- 0.6.2 (12/30/2012)—This version's biggest changes are "behind-the-scenes" improvements. Specifically, I've completely re-worked the shim/MOK Secure Boot code, based largely on an approach used by James Bottomley in his PreLoader boot loader. This fixes some bugs, such as the inability to launch more than one EFI boot loader in Secure Boot mode. The EFI filesystem drivers can now be built with GNU-EFI, which may help distribution maintainers. I'm also providing RPM packages of rEFInd, although I recommend installing from the binary zip file. Finally, I've changed rEFInd's default text-mode setting behavior to not adjust the text mode. (Recent previous versions forced the system to use text mode 0, which cuased problems on some systems.)
- 0.6.1 (12/21/2012)—(Mayan apocalypse edition!) This version features a number of refinements and minor bug fixes. The install.sh script now includes a new --root option to enable easier installation of rEFInd to a regular OS installation from an emergency disc. The ext4fs driver now supports the meta_bg filesystem feature. I've fixed a number of obscure display resolution-setting bugs and a bug that caused the screen to clear after displaying certain error messages but before prompting you to continue. Instead of displaying a blank filesystem label as the "from" location for a boot loader, rEFInd now describes the filesystem by its type (FAT, ext4fs, etc.) and/or size. rEFInd also now uses the filesystem label as a hint about what type of icon to display for a boot loader.
- 0.6.0 (12/16/2012)—The donation of a working ext4fs driver from Stefan Agner has prompted another big jump in the rEFInd version number, since this driver will greatly simplify installation on many systems: You may be able to simply run the install.sh script to get a working rEFInd that boots your Linux kernels directly, bypassing GRUB or ELILO. Other improvements in this version include bug fixes and minor changes to install.sh, the addition of hint text to the rEFInd main menu, the ability to disable the options editor via the editor option to hideui in refind.conf, a new textmode option to refind.conf to set the size of the text-mode display, a change to the code that adds your initial RAM disk to the boot options so that if you specify one manually (via refind_linux.conf), it will take precedence, and assorted obscure bug fixes. The NEWS.txt file goes into more details about many of these changes, as do the relevant pages of this HTML documentation.
- 0.5.1.1 (12/12/2012)—This is a micro-update to fix a bug in the install.sh script that prevented it from working under OS X. Aside from that, and a few small documentation changes, this version changes nothing in rEFInd.
- 0.5.1 (12/11/2012)—The most important changes to this version are to the install.sh script. It now supports two options, --shim and --localkeys, to aid in installation on a Secure Boot system. See the Installing rEFInd and Managing Secure Boot pages for details. The script also now creates a sample /boot/refind_linux.conf file to assist in setting up boots via the Linux EFI stub loader. All of these install.sh improvements work only in Linux. A separate mkrlconf.sh script creates a /boot/refind_linux.conf file if it doesn't exist, for help in post-installation configuration. In rEFInd itself, I've fixed the bug that caused ELILO to be unable to locate its configuration file when launched in Secure Boot mode and fixed a couple of more obscure bugs. I've also added an include token to refind.conf, to enable you to create a secondary configuration file (say, one managed by scripts while leaving the main file untouched; or one dedicated to manual boot stanzas).
- 0.5.0 (12/6/2012)—I've focused on adding support for Matthew J. Garrett's shim program to this version of rEFInd; with this support, rEFInd is capable of launching Linux kernels and other programs signed with a suitable key while the computer is in Secure Boot mode. This initial release, however, requires significant manual configuration and has some known bugs and limitations. See the Managing Secure Boot page for details. Beyond this major new feature, this version includes several more minor improvements. These include a change to the resolution token so that it applies to text mode as well as to graphics mode; a bug fix that caused the line editor to blank out lines that were left unedited; a new dont_scan_files option to blacklist boot programs by filename; support for launching MokManager and Apple's Recovery HD partitions via tools (2nd-row) icons; new --usedefault and --drivers options to the install.sh script; a change of the esp installation script option to --esp; and the ability to use quote marks inside option strings by doubling them up.
- 0.4.7 (11/6/2012)—The most important new feature in this version is a boot options editor. From rEFInd's main menu, press Insert or F2 to see the options menu. Select one of the options and press Insert or F2 again and the screen switches to a text-mode display in which you can edit the options that will be passed to the boot loader. A second new feature is a new icon for gummiboot, which is another EFI boot manager. This version also alters the behavior of the scan_delay option, since I've been told that the previous version didn't work; the new one does. Finally, this version omits the space that followed boot options when booting most OSes. This behavior was inherited from rEFIt; a comment in the source code indicates it's needed by OS X, but I've been told it causes boot failures when launching Linux on some Macs. Thus, rEFInd now adds this space only when booting Mac OS X.
- 0.4.6 (10/6/2012)—Thanks to contributor John Bressler, rEFInd can now boot legacy (BIOS) boot loaders on many UEFI PCs. (Previously, rEFInd could do this only on Macs.) Other changes include a new scan_delay option that inserts a delay between rEFInd starting and disk scans (to help detect disks that are slow to appear to the firmware) and a change in the default scanfor value so that legacy OSes are detected by default on Macs (but not on PCs). I've also fixed some memory management problems that caused error messages to appear on some systems when rEFInd was compiled with the TianoCore EDK2 toolkit. Finally, I'm now using the TianoCore toolkit to make my primary binary builds, since the new UEFI legacy boot support requires the TianoCore environment. (rEFInd still builds with GNU-EFI, but it doesn't support booting legacy OSes on UEFI systems when built in this way.)
- 0.4.5 (8/12/2012)—This version fixes a couple of Mac-related bugs. The most important is that version 0.4.3 and 0.4.4 couldn't boot BIOS-based (aka CSM or Boot Camp) OS installations; 0.4.5 restores this important feature. The second bug is in the install.sh script, which would often fail to detect rEFItBlesser, thus leaving it enabled and causing rEFInd to fail to start after the first reboot into OS X.
- 0.4.4 (6/23/2012)—This is a bug-fix release. Most importantly, it fixes a bug in the new use_graphics_for feature; in 0.4.3, the options were set incorrectly (they just happened to work as expected on my main test configuration). I've also fixed problems with volume names in the 32-bit versions of both the drivers and the TianoCore EDK2 build of rEFInd itself. Finally, I've tweaked the install.sh script to do a better job of identifying the computer's ESP under OS X.
- 0.4.3 (6/21/2012)—The major user-visible change to this version is the addition of the use_graphics_for option, which enables you to specify the OSes that rEFInd launches in graphics mode vs. text mode. This effect is tiny on most systems, but can be important on some, as noted on the "Configuring the Boot Manager" page. There's also a change to the way graphics-mode boots are handled, to make for a slightly smoother visual transition. This version also fixes the incompatibility between the drivers and the firmware used by Macs (and probably other EFI 1.x systems). I've removed linux.conf as a valid alternative name for the refind_linux.conf file, so if you're still using the old name, now is the time to rename it! The biggest change is behind the scenes, though: I've added support for compiling rEFInd using the TianoCore EDK2, as well as the GNU-EFI toolkit that I've used up to this point. I have no intention of removing GNU-EFI support, but there's a chance that the TianoCore toolkit will help in implementing some future features or in debugging some problems. You can download either version from the downloads page.
- 0.4.2 (6/3/2012)—I've added a new dont_scan_dirs option to the configuration file, enabling creation of a directory-scanning "blacklist." See the "Configuring the Boot Manager" page for details. This version also makes a couple of changes to the install.sh script. The first is a reminder for Mac users to update refind.conf if they need to boot BIOS-based OSes. The second change makes the script a bit smarter about updating NVRAM settings when run from Linux; it now attempts to make itself the default boot loader if an entry for rEFInd already exists but isn't the default. I've made this change in response to problem reports from users; apparently some distributions' GRUB update scripts make GRUB the default boot loader under all circumstances, which causes rEFInd to be taken out of the picture after a GRUB update. The previous install.sh code wouldn't add rEFInd back to the "top spot" after this happened, but the new code should do the trick. (Although re-installing rEFInd is overkill in this case, it's something many users would logically try.)
- 0.4.1 (5/25/2012)—This version provides a number of small bug fixes and improvements: When re-scanning (initiated by pressing Esc in the main menu), a message that re-scanning is occurring appears on the screen; I've fixed a bug that could cause rEFInd to appear as an option in its own menu after running a shell program and re-scanning; the install.sh script now checks for, and optionally deletes, the rEFItBlesser program when run under OS X; and the HFS+ driver now returns a volume label of HFS+ volume, rather than nothing at all (unlike other drivers, the HFS+ driver can't yet return the volume's true label).
- 0.4.0 (5/20/2012)—I've bumped up this version number more than usual to reflect the addition of four filesystem drivers (for ext2fs, ReiserFS, HFS+, and ISO-9660) to the rEFInd package. These drivers originate with the original rEFIt, VirtualBox, and Clover boot loader projects. You can learn more on the drivers page. To facilitate inclusion of drivers on the CD image, rEFInd also now supports reading drivers from architecture-specific subdirectories—drivers_x64 and drivers_ia32 for x86-64 and x86 systems, respectively. This version also adds the ability to eject removable media on some Macs (this won't work on UEFI-based PCs, unfortunately). Finally, this version fixes a problem that could cause GRUB 2 to be unable to read its configuration file in some settings when launched from rEFInd.
- 0.3.5 (5/15/2012)—This version's biggest new feature is the ability to re-scan for boot loaders after launching the program. This is done by pressing the Esc key, which causes rEFInd to re-read its configuration file, to tell the EFI to reconnect all disks, and to do a fresh scan of all disks for loaders. This is useful if you insert a removable disk after starting the computer, if rEFInd starts before a disk has fully settled, if you make a change to the configuration file, or if you manually load a driver. This version also fixes a minor bug that could cause the scroll-right arrow to be replaced with a left-pointing arrow under some circumstances; and I've removed the scan for a BIOS Boot Partition that I added in 0.3.2, since I'm told it isn't launching correctly. (BIOS-mode GRUB 2 can still be launched on Macs from its boot code in the MBR.)
- 0.3.4 (5/9/2012)—The biggest change to this version is the addition of the icons_dir configuration file token, which enables you to specify a directory that holds icons that override those in the default icons subdirectory. See the Theming rEFInd and Configuring the Boot Manager pages for details. This version also reduces flicker when moving your selection around the screen and modifies the install.sh script so that it can be used directly after building rEFInd from source code. Related to this, building from source now creates a binary that includes an architecture code—refind_ia32.efi or refind_x64.efi rather than refind.efi.
- 0.3.3 (5/6/2012)—I've focused on user interface improvements for this release. The biggest improvement is in the text-mode interface, which suffered from assorted display glitches in previous releases. These have now been fixed, so the text-mode interface should be more usable. I've also fine-tuned the use of keyboard keys, particularly in graphical mode. The up and down arrow keys now move between the two rows of the display, and Page Up and Page Down scroll the first row if it's too big for the display. (They'll also move between rows, but only when at the end of the first row or the start of the second.) Returning from a failed loader or a tool or built-in function now renders that tag as the currently-selected item, rather than setting the default loader as active, as happened with previous versions.
- 0.3.2 (5/4/2012)—rEFInd's core functionality changes very little with this version; I've tweaked the detection of BIOS-mode boot loaders to keep unbootable FAT partitions created under Linux and Windows out of the boot list, while adding detection of GRUB BIOS Boot Partitions to the list. I've also made a change that improves screen-clearing when launching EFI utilities and OSes in text mode. The major change to this version is the addition of a new Linux/OS X installation script, install.sh. In most cases, this makes it possible to install rEFInd simply by typing ./install.sh from the rEFInd package directory; however, you should see the Installing rEFInd page for details. In some cases, manual installation may still be required. Also, you may prefer to copy over the old rEFInd program file with the new one when upgrading.
- 0.3.1 (4/27/2012)—You'll find a few minor enhancements and bug fixes in this version, none of which affect the configuration files. rEFInd now sorts its boot loader entries within each directory by date, with the newest items first. The intent is that you can specify a directory name as the default_selection and the most recent boot loader in that directory will become the default. This may obviate the need to adjust the default after adding a new Linux kernel with EFI stub loader support. I've also improved the handling of .icns files for Linux kernels that lack .efi extensions; loader-specific icons for these kernels should now take the name of the kernel plus .icns—for instance, vmlinuz-0.3.2.icns for vmlinuz-0.3.2. rEFInd also now hides all .icns files from the boot loader list. Finally, this version fixes a bug, introduced in version 0.3.0, that could cause spurious Unsupported while scanning the root directory errors under some conditions on Macs.
- 0.3.0 (4/22/2012)—This version marks the official transition from alpha to beta status for rEFInd. This isn't because of any important objective milestone being passed; it's just that rEFInd has been used by many people who have reported no show-stopping bugs, so I'm now confident that rEFInd is stable enough for general use. That's not to say it's perfect; it still has numerous known bugs and limitations. That's why it's still beta. To get down to specifics, this version adds two new configuration file tokens: resolution, which sets the screen resolution; and scan_all_linux_kernels, which adds Linux kernel files to the boot loader list even if they lack .efi filename extensions. See the Configuring the Boot Manager page for details on these new options. I've also fixed some bugs: One that sometimes caused Macs to crash when returning from the EFI shell or other programs; another that caused rEFInd to fail to scan filesystems if the filesystem driver didn't return a volume name; and a third that caused rEFInd to fail to detect boot loaders depending on the case of the filename on some EFIs (this is really a workaround for an EFI implementation bug). The first of these is a very tentative fix and it could have negative effects on some systems (non-Mac EFI 1.x systems or Macs that weren't affected by the bug in other recent releases), so be sure to contact me if rEFInd crashes or otherwise misbehaves after you use an EFI shell.
- 0.2.7 (4/19/2012)—I've added two new tokens to the refind.conf file, with associated new functionality. The new scan_driver_dirs option tells rEFInd where to scan for EFI drivers, in addition to the default of the drivers subdirectory of the rEFInd installation directory. For more on EFI drivers, see Using EFI Drivers. Note that previous versions of rEFInd couldn't load drivers at all, although they could make use of hardware and filesystems activated by drivers loaded before rEFInd launched. The second new token is also_scan_dirs, which adds arbitrary directories to the list that rEFInd scans for boot loaders. (Without this option, rEFInd scans each volume's boot directory and every subdirectory of the /EFI directory, with the exception of /EFI/tools and rEFInd's own directory.) This version also fixes a minor bug that caused rEFInd to sometimes include itself in the list of OS options. Finally, if you build rEFInd yourself, you should be aware that it now requires a newer version of the GNU-EFI library than it required in the past. See the BUILDING.txt file, included in the source code package, for details.
- 0.2.6 (4/14/2012)—This version provides one bug fix and one new feature. The bug was introduced in version 0.2.5 and prevents rEFInd from identifying a Linux initial RAM disk file on some (but not all) EFI implementations. The new feature is the volume stanza token, which enables you to manually load a boot program from a filesystem other than the one from which rEFInd launched. You can specify a volume either by its label (as in volume KERNELS to load from the volume with a filesystem name KERNELS) or by number followed by a colon (as in volume 0: for the first filesystem or volume 1: for the second). See the Configuring the Boot Manager page for more on this new feature.
- 0.2.5 (4/9/2012)—Icon-handling improvements are key in this version. I've fixed a bug that caused icons to be replaced with ugly "not-found" default icons when rEFInd was launched in certain ways. I've also added support for .VolumeIcon.icns and .VolumeBadge.icns files to set loader tags and disk-type badges, respectively. (See the configuration page for details.) I've also fixed a bug that prevented rEFInd from finding the correct initial RAM disk for Linux kernels stored in the root directory of a partition.
- 0.2.4 (4/5/2012)—This version adds support for a new location for EFI shells (shellarch.efi in the ESP's root directory. It also adds two new refind.conf options: showtools and max_tags, and removes another one (disable). The options available in hideui are now essentially a combination of what disable and hideui did, minus functionality now present in showtools. I made these changes to reduce redundancy and to increase flexibility. See the Configuring the Boot Manager page for details.
- 0.2.3 (3/26/2012)—I've changed the Linux kernel configuration filename from linux.conf to refind_linux.conf with this version, to avoid a name collision with a planned future Linux kernel ability to read its options from a file called linux.conf. This version also includes a tentative bug fix for a problem that caused rEFInd to hang upon launching the second program (say, a boot loader after using a shell) on some systems; but on some computers, this fix causes an (apparently harmless) error message about "(re)opening our installation volume" upon returning from the first program. I've also added a logo for Arch Linux.
- 0.2.2 (3/23/2012)—This version fixes three bugs: One caused submenus to not appear on systems with screens of 800x600 or smaller; another caused rEFInd to hang when boot loader names were too long; and the third caused the program to fail when Linux kernels and their initial RAM disk files lacked version numbers.
- 0.2.1 (3/19/2012)—This version adds the ability to auto-scan Linux kernels with EFI stub loader support, provided a suitable linux.conf file exists in the kernel's directory. It also adds support for manual specification of submenus in refind.conf.
- 0.2.0 (3/14/2012)—This is the program's initial public release. It's based on rEFIt 0.14 plus a large number of patches taken from Debian's Linux-compilable rEFIt package. I then added UEFI-specific fixes, support for OS definition stanzas in the configuration file, a scrolling icon list on the main menu, and other minor improvements. This release has quite a few known bugs and limitations.
copyright © 2012–2024 by Roderick W. Smith
This document is licensed under the terms of the GNU Free Documentation License (FDL), version 1.3.
If you have problems with or comments about this Web page, please e-mail me at rodsmith@rodsbooks.com. Thanks.
Go to the main rEFInd page
Learn about problems with and the future of rEFInd
Return to my main Web page.