href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-12/6/2012, referencing rEFInd 0.5.0</p>
+1/16/2013, referencing rEFInd 0.6.5</p>
<p>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!</p>
like to add detection for Itanium and ARM systems, but I have no
way to test such changes.</li>
- <li>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.</li>
-
<li>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
from the partition data is harder than extracting the volume's
label or counting up the filesystem numbers.</li>
- <li>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
+ <li>Currently, if a filesystem's label comes up empty, rEFInd
+ substitutes the size, so you get displays like <tt>boot
+ EFI\foo\bar.efi from 90 GiB volume</tt>. I'd like to add more
+ checks to substitute the GPT <i>partition</i> label if the
+ <i>filesystem</i> label comes up empty.</li>
+
+ <li>The <tt>default_selection</tt> option in <tt>refind.conf</tt> 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.</li>
and/or initial RAM disks relative to the rEFInd directory (or the
boot loader's directory, in the case of initrds).</li>
- <li>Various options (<tt>dont_scan_dirs</tt>, <tt>also_scan_dirs</tt>,
- <tt>scan_driver_dirs</tt>, 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.</li>
-
</ul></li> <!-- Improvements -->
<li><b>Known bugs that need squashing:</b>
<ul>
- <li>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. <!-- I think this is because of
- the fast-and-loose sample code I borrowed from shim, which re-uses
- rEFInd's own image handle (the <tt>image_handle</tt> variable in
- <tt>start_image()</tt>) for launching shim/MOK-signed binaries. The
- result is that when the second driver is loaded, it can't register
- itself with the firmware because the firmware believes it's already
- been registered. The solution is likely to involve creating a child
- image handle rather than re-using rEFInd's own image handle, but
- this is likely to be tedious to do—see
- <tt>/usr/local/UDK2010/MyWorkSpace/MdeModulePkg/Core/Dxe/Image/Image.c</tt>
- for the reference UEFI implementation. --> </li>
-
- <li>When launching ELILO in Secure Boot mode, ELILO can't find its
- configuration file. It's possible that a similar problem exists for
- other boot loaders, too.</li>
-
- <li>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.</li>
-
<li>The <a href="http://www.rodsbooks.com/gb-hybrid-efi/">Gigabyte
Hybrid EFI</a> has a bug that causes the allegedly case-insensitive
<tt>StriCmp()</tt> function to perform a case-sensitive comparison.
implementation, and a dismal one at that, so I'm inclined to just
let it go.</li>
- <li>The Shutdown option works correctly on Macs, but not on UEFI-based
+ <li>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.</li>
caused by a truncated DevicePath to the shell, which includes the
shell's pathname but not the device identifier.</li>
+ <li>When specifying a volume by name in <tt>dont_scan_dirs</tt>,
+ 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 <tt>Fedora
+ /boot</tt>). Workarounds are to rename the volume to omit the slash
+ and to use a filesystem number rather than a volume label.</li>
+
<li>The code is in need of review to search for memory leaks and
similar problems.</li>
<ul>
- <li>With the arrival of PCs preloaded with Windows 8 and with Secure
- Boot enabled, some way to cope is in order. I'm thinking of adding
- code to limit or prohibit booting of unsigned boot loaders if
- rEFInd detects that Secure Boot is active, and link with the <a
- href="http://mjg59.dreamwidth.org/18945.html">Shim</a>
- pre-bootloader to help handle signing and authentication. I need to
- research the technical details more, though.</li>
-
<li>EFI supports network boots. rEFInd doesn't, but it would be nice if
it would.</li>
stanzas override auto-detected boot loader definitions for the same
boot loader file.</li>
+ <li>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
+ the NVRAM, and so on. This would be useful in system maintenance
+ and in recovering from boot problems.</li>
+
+ <li>An installation tool for the EFI environment would be useful.
+ A simple EFI shell script might work, but because this function
+ requires access to the <tt>bcfg</tt> command, this would work
+ only from a version 2 shell or if <tt>bcfg</tt> were implemented
+ as a standalone program. Another alternative would be a program
+ written in C.</li>
+
<li>It should be possible to override specific auto-detected boot
loader settings—say, to disable one specific boot loader or
change its icon.</li>
- <li>A way to read boot options set via <tt>efibootmgr</tt>,
- <tt>bless</tt>, or similar options from NVRAM to add to the boot
- set would be useful.</li>
-
- <li>A way to examine and change the NVRAM settings could be useful.
- This would enable a CD-based boot of rEFInd to fix a broken disk
- boot. Perhaps this could be done via a separate tool that could be
- launched much like the shell or <tt>gptsync</tt>.</li>
-
- <li>I'd like to give the user the ability to set custom options on a
- single-boot basis, similar to what's possible in GRUB.</li>
-
<li>A way to set the color of the font would be useful for theming
purposes.</li>
written in a cross-platform GUI toolkit, so that a single code base
can be used on any of the major OSes.</li>
- <li>A way to "source" one configuration file from another one would be
- helpful for some types of configuration scripts. (This would enable
- overriding options in a secondary file without modifying the
- default original file, for instance.)</li>
-
</ul></li> <!-- New features -->
- <li><b>Improvements to the EFI drivers:</b>
+<li><b>Improvements to the EFI drivers:</b>
<ul>
- <li>Drivers for additional filesystems are required. Given the recent
- shift to ext4fs, that should be the priority; however, other Linux
- filesystems, UDF, and perhaps others would all be welcome
+ <li>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.</li>
to have the drivers access files (like a Linux loopback mount) is
desirable.</li>
+ <li>When built with the GNU-EFI package, an attempt to load more than
+ one driver on my 32-bit Mac Mini causes the computer to hang. I do
+ <i>not</i> have this problem with 64-bit drivers on my UEFI-based
+ computers. I don't know if this is a 32-bit issue or a Mac issue.
+ This is <i>not</i> relevant if you're using my binary package,
+ since I build it with the TianoCore EDK2, and the drivers built in
+ that way don't exhibit this bug.</li>
+
</ul></li> <!-- Drivers -->
</ul>
<hr />
-<p>copyright © 2012 by Roderick W. Smith</p>
+<p>copyright © 2012–2013 by Roderick W. Smith</p>
<p>This document is licensed under the terms of the <a href="FDL-1.3.txt">GNU Free Documentation License (FDL), version 1.3.</a></p>