Originally written: 3/14/2012; last Web page update:
-12/30/2012, referencing rEFInd 0.6.2
+10/9/2016, referencing rEFInd 0.10.4
-
I'm a technical writer and consultant specializing in Linux technologies. 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!
+
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!
+
@@ -110,12 +144,6 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com
systems with a limited number of configurations. Therefore, if you
try rEFInd and run into bugs, please report them to me!
-
I have little talent with graphics manipulation programs, so
- rEFInd's boot logo, such as it is, is pretty weak. If you have
- artistic talent and would like to create a rEFInd logo, please feel
- free to send it to me. I won't make any final decision about
- changes until at least June 30 of 2012.
-
rEFIt's original design, and hence rEFInd's design, enables easy
theming by replacing icon files. If you'd like to design a new
theme for rEFInd, feel free to submit it. I might or might not
@@ -131,99 +159,101 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com
-
The support for booting legacy (BIOS) OSes on UEFI-based PCs
- currently has a number of limitations. Most importantly, it works
- off of the list of boot devices stored in the computer's NVRAM. I'd
- prefer to have it scan disks and partitions, as the Mac's legacy
- boot support does. Also, the UEFI legacy boot code presents empty
- optical drives and uses generic icons rather than OS-specific
- icons.
-
-
Currently, rEFInd can detect whether it's compiled for x86
- or x86-64 systems and displays this information in its
- "About" screen (AboutrEFInd() in main.c). I'd
- like to add detection for Itanium and ARM systems, but I have no
- way to test such changes.
-
-
The code could be more flexible in its handling of the sizes of
- various graphical elements, and particularly drawn text. Prior to
- version 0.2.2, submenu text was invisible on UEFI-based PCs with
- 800x600 and smaller displays because of an inability to properly
- crop the graphics fields that hold the text. With version 0.2.2,
- I've put a band-aid on this problem by reducing the field size so
- that it now works on 800x600 displays, but smaller displays still
- suffer from this problem. This is just an example of the
- inflexibility of certain layout issues within rEFInd.
-
-
Although the ICNS file format used by rEFInd supports multiple
- image sizes, if a size that rEFInd needs isn't present in the file,
- rEFInd can't use the icon. The ability to scale images to the
- desired size would be useful.
-
-
I would like to be able to specify the volume on which a boot
- loader resides using a partition GUID value, but extracting a GUID
- from the partition data is harder than extracting the volume's
- label or counting up the filesystem numbers.
-
-
Currently, if a filesystem's label comes up empty, rEFInd
- substitutes the size, so you get displays like boot
- EFI\foo\bar.efi from 90 GiB volume. I'd like to add more
- checks to substitute the GPT partition label if the
- filesystem label comes up empty, or add a filesystem type
- identifier to the size.
-
-
The default_selection option in refind.conf could be improved by
- supporting a list of default options, so that if the first item
- isn't found, rEFInd will try to boot the second one in the list,
- and so on. This could be handy in case a driver fails to load, or
- to provide an override in case the user inserts a specific
- removable disk—by placing the removable disk's name first in
- the list, it will take precedence over the normal hard disk
- default.
-
-
Along the lines of the previous item, the default_selection might
- be expanded to support some form of specification of disk types, as
- in a special entry for any optical disk or any external disk, no
- matter what its name is.
+
As described in reference to version 0.9.2 on the Revisions page, rEFInd includes a
+ delicate and hackish workaround to a problem introduced by Shim
+ 0.8. Developing a better solution to that problem is a high
+ priority.
+
+
rEFInd's Makefiles and, to a lesser extent, C code,
+ support x86, x86-64, and ARM64 CPUs. EFI is also
+ available for Itanium (IA-64) and ARM32 CPUs, so I'd like to add
+ this support.
+
+
Currently, rEFInd can detect whether it's compiled for x86,
+ x86-64, or ARM64 systems and displays this information in
+ its "About" screen (AboutrEFInd() in main.c). I'd
+ like to add detection for Itanium and 32-bit ARM systems, but I
+ have no way to test such changes.
+
+
Further to the preceding, rEFInd's GPT-scanning code (used to
+ extract partition names) includes assumptions about byte order, and
+ so will work only on little-endian CPUs such as the x86 and
+ x86-64.
+
+
A way to set the color of the font would be useful for theming
+ purposes.
+
+
The program's font features could be greatly improved by enabling
+ use of a standard font format, by enabling use of non-ASCII
+ characters, and by enabling use of variable-width as well as
+ monospace fonts.
+
+
The default_selection might be expanded to support some
+ form of specification of disk types, as in a special entry for any
+ optical disk or any external disk, no matter what its name is.
It would be useful to be able to specify paths to boot loaders
and/or initial RAM disks relative to the rEFInd directory (or the
boot loader's directory, in the case of initrds).
-
Various options (dont_scan_dirs, also_scan_dirs,
- scan_driver_dirs, etc.) refer to directories or files,
- either on the ESP or on all partitions. A way to identify specific
- partitions for these options would be useful in some
- situations.
+
Currently the background for certain subscreens (such as the
+ information page or submenu listings) is a solid color based on the
+ upper-left corner of the screen. Having an option to support a
+ transparent background is desirable to some users.
+
+
When delivering rEFInd as a boot loader from a network server,
+ rEFInd is limited to its default options and can boot only local
+ OSes, not network OSes. The cause is that the server delivers a
+ single file, so rEFInd is divorced from its configuration and
+ support files.
+
+
A way to identify specific Windows versions and present unique
+ icons or change the text is desirable. Currently, a crude
+ distinction of XP and earlier vs. Vista and later is possible for
+ BIOS-booting on Macs, but no such distinction is made for EFI-mode
+ booting, and nothing finer-grained is attempted. Improvements will
+ probably require identifying unique features of each version's boot
+ loader files or boot sector code.
+
+
The support for booting legacy (BIOS) OSes on UEFI-based PCs
+ currently has a number of limitations. Most importantly, it works
+ off of the list of boot devices stored in the computer's NVRAM. I'd
+ prefer to have it scan disks and partitions, as the Mac's legacy
+ boot support does. Also, the UEFI legacy boot code presents empty
+ optical drives and uses generic icons rather than OS-specific icons.
+ This said, BIOS support is becoming increasingly unimportant as the
+ transition from BIOS to EFI continues, so I'm unlikely to put effort
+ into this issue myself.
-
+
Known bugs that need squashing:
-
When in Secure Boot mode, rEFInd can launch just one driver that's
- signed with a shim key or MOK. The second and later drivers
- generate "access denied" errors.
-
-
When setting a resolution higher than about 800x600 (or maybe even
- 640x480) in text mode, the text displayed by rEFInd, and on some
- systems shells and other programs launched from rEFInd, is
- restricted to an 80x24-character area in the top-left corner of the
- screen.
I've been receiving reports of blank screens when using rEFInd on
+ some recent Mac models. I've investigated this with the help of one
+ user, and I suspect that Apple has made changes to its firmware
+ that are likely to affect just about any EFI program. I don't have
+ a definitive solution, but at least one user has reported that
+ removing rEFInd's drivers has caused the problem to go into
+ remission.
+
+
Another Mac-specific display problem relates to "retina" displays:
+ Some users report that rEFInd comes up in a lower resolution than
+ the screen supports, and that this setting persists into the running
+ OS X instance, and can't be adjusted using the usual OS X means.
+ Unfortunately, I lack the hardware necessary to experiment and find
+ a solution to this problem within rEFInd. Thus, a fix will have to
+ wait for me to get my hands on such hardware (which is not on my
+ immediate purchase list) or until somebody with such hardware and
+ the necessary skills submits a fix. (Note that a fix could
+ conceivably involve passing options to the OS X boot loader or
+ something else that would require trivial or no changes to
+ rEFInd.)
+
+
Some EFIs have bugs that cause the allegedly case-insensitive
StriCmp() function to perform a case-sensitive comparison.
This causes any number of bugs in file matching. For instance:
Changing the case of icon filename extensions (or various other
@@ -231,16 +261,12 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com
"generic" ones; and rEFInd sometimes appears in its own menu (the
firmware sometimes returns an all-caps version of the filename, but
other times returns the filename with the correct case, causing a
- mismatch if the path includes lowercase elements). Some of these
- problems can be overcome by converting both strings to be compared
- to one case before doing the comparison, but others aren't so easy,
- since I think StriCmp() is being called internally to the
- EFI. In any event, it'd be nice to fix some of these problems.
- OTOH, this is a workaround for a bug on just one EFI
- implementation, and a dismal one at that, so I'm inclined to just
- let it go.
-
-
The Shutdown option works correctly on Macs, but not on UEFI-based
+ mismatch if the path includes lowercase elements). This problem is
+ worse when compiling rEFInd with GNU-EFI than with Tianocore.
+ Version 0.9.1 has made improvements on this score, but some issues
+ may continue to lurk.
+
+
The Shutdown option works correctly on Macs, but not on many UEFI-based
PCs. On such systems, Shutdown reboots the computer. This should be
fixed.
@@ -249,6 +275,23 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com
Apple-specific EFI extension, and I know of no standard EFI way to
do it.
+
A couple of Mac users have reported that the brightness-adjustment
+ features in Windows don't work when Windows is booted via rEFInd,
+ but that these features do work when Windows is booted via the
+ Mac's built-in boot manager. Unfortunately, I have no idea what
+ causes this problem, I have no Windows installation on my one
+ (elderly) Mac, and I have no way to debug it. Therefore, it's
+ unlikely that I'll be able to fix this problem myself; but if you
+ have the equipment and skill to do so, I'd be interested in
+ receiving a patch.
+
+
If you use a true MBR disk on a Mac to boot Windows or some other
+ BIOS-only OS, and if that disk has an extended partition, bogus
+ additional BIOS/legacy-bootable options may appear in the rEFInd
+ menu. The reason appears to be a bug in the handling of
+ extended/logical partitions in the refind/lib.c file, but
+ I haven't fully tracked it down.
+
The re-scan feature occasionally produces odd results, such as
ignoring new media or keeping old media that have been ejected.
This should be investigated and fixed.
@@ -264,30 +307,49 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com
caused by a truncated DevicePath to the shell, which includes the
shell's pathname but not the device identifier.
+
When specifying a volume by name in dont_scan_dirs,
+ slashes are converted to backslashes in the specification but not
+ in the actual volume name read from disk. Thus, you can't specify a
+ volume by name if it includes a slash (as in Fedora
+ /boot). Workarounds are to rename the volume to omit the slash
+ and to use a filesystem number rather than a volume label.
+
The code is in need of review to search for memory leaks and
similar problems.
+
If the user has a Linux software RAID 1 array with Btrfs, HFS+,
+ or FAT filesystem, rEFInd will detect kernels or boot loaders in
+ RAID 1 twice. Checks to prevent this with ext2/3/4fs and ReiserFS
+ already exist; these checks could be expanded to block such
+ duplication with more filesystems.
+
+
Some Macs experience problems with waking up from suspend states
+ when rEFInd is installed. Unfortunately, I lack the hardware to
+ test and experiment with this (my only Intel-based Mac doesn't
+ exhibit this problem), so I can't fix this myself. Using
+ pmset to disable the autopoweroff option is
+ claimed
+ by some to at least partially fix the problem, though. Using
+ the --ownhfs installation option may also help in some
+ cases.
+
+
If you activate BIOS-mode support on UEFI-based PCs, you may find
+ multiple copies of the BIOS-mode loaders added to your firmware's
+ boot manager. Only one copy shows up in rEFInd, though.
+
New features I'd like to add:
-
EFI supports network boots. rEFInd doesn't, but it would be nice if
- it would.
-
-
There's currently no way to create a manual boot stanza for a
- BIOS-booted OS. This isn't a big priority for me personally, but I
- can see how it could be for some people.
-
-
I've received queries about rEFInd's ability to work with Apple's
- whole-disk encryption scheme that's new with OS X 10.7.
- Unfortunately, I lack the hardware to test this, but my
- understanding is that it will work correctly if rEFInd is
- installed in the ESP rather than on the Mac OS X root partition.
- See this
- forum thread for more information.
+
Currently, debugging rEFInd requires adding Print()
+ statements to the code. Adding a logging facility that supports
+ multiple log levels and writes the output to a file would help with
+ debugging, especially when dealing with problem reports from
+ users.
I'd like to find a way to enable users to enter customizations for
boot options and then save them to the refind.conf file.
@@ -295,6 +357,26 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com
stanzas override auto-detected boot loader definitions for the same
boot loader file.
+
Along similar lines, some users have asked for a way to take
+ detected boot programs and create a set of manual boot stanzas for
+ them, so that they can be modified manually.
+
+
Better support for touchscreens and/or configurable buttons for
+ rEFInd's actions would enable use of rEFInd on tablet computers that
+ lack complete keyboards. (Version 0.10.4 supports some
+ touchscreens, but this feature relies on support in the firmware,
+ which is not universally present.)
+
+
The ability to rotate the display for users who rotate their
+ monitors or who use tablets would be helpful.
+
+
GRUB provides a configuration-file command called outb
+ that enables manipulating hardware registers. Something similar,
+ via the mm command, can be done in the EFI shell. I'd like
+ to add such a feature to rEFInd, since it enables doing things like
+ disabling one or another video output on Macs with two video
+ cards.
+
I have thoughts about creating an EFI configuration tool and
information utility—something to tell you about your hard
disks, enable you to manage MOKs, adjust boot loader priority in
@@ -312,16 +394,19 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com
loader settings—say, to disable one specific boot loader or
change its icon.
-
A way to set the color of the font would be useful for theming
- purposes.
+
A GUI configuration tool for host OSes (Linux, OS X, Windows, etc.)
+ would be nice, but it's low on my personal priority list. If you'd
+ like to contribute, I prefer something written in a cross-platform
+ GUI toolkit, so that a single code base can be used on any of the
+ major OSes.
-
Going further, the ability to load arbitrary other fonts, ideally
- in a standard format, would be desirable for theming purposes.
+
The ability to produce audio output (at least a simple "beep") to signal
+ to visually impaired users when rEFInd is ready to accept input would be
+ helpful.
-
A GUI configuration tool would be nice, but it's low on my personal
- priority list. If you'd like to contribute, I prefer something
- written in a cross-platform GUI toolkit, so that a single code base
- can be used on any of the major OSes.
+
There's currently no way to create a manual boot stanza for a
+ BIOS-booted OS. This isn't a big priority for me personally, but I
+ can see how it could be for some people.
Drivers for additional filesystems are desirable. Given the talk of
- shifting to Btrfs, that should be the priority; however, other
- Linux filesystems, UDF, and perhaps others would all be welcome
- additions. Also along these lines, adding drivers for Linux LVM and
- RAID setups would be useful, too.
-
-
As detailed on the drivers page, there
- are performance issues with the drivers on some systems. I suspect
- that most "real" computers aren't greatly affected (in my tests,
- the problem is worst with VirtualBox, and the next worst is a
- system that uses DUET). Nonetheless,
- I'd like to track down the cause and fix it.
-
-
The HFS+ driver returns a volume label of "HFS+ volume", no matter
- what the volume's real label is.
+
Drivers for additional filesystems are desirable. Only XFS and JFS
+ are missing from the major Linux filesystems. UDF would also be a
+ welcome addition, as might drivers for other OSes (say, for the
+ BSDs, especially if BSD developers create a boot loader similar to
+ Linux's EFI stub loader). Also along these lines, adding drivers
+ for Linux LVM and RAID setups would be useful.
This may not be possible, or it may require a new driver, but a way
to have the drivers access files (like a Linux loopback mount) is
@@ -360,11 +435,29 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com
+
Improvements to gptsync, refind-install, or other
+ support tools:
+
+
+
+
The gptsync program can return misleading error codes
+ under some circumstances, such as when it makes no changes to the
+ partition table. Fix this.
+
+
rEFInd's support for network booting is primitive and relies on the
+ external iPXE package. In my own testing, iPXE retrieves the
+ BIOS-mode boot loader from some servers that offer both, which
+ makes it useless on those networks.