EFILIB_DIR=EfiLib
# Build rEFInd, including libeg
-all:
+all: tiano
+
+gnuefi:
make -C $(LIBEG_DIR)
make -C $(LOADER_DIR)
# make -C $(FS_DIR)
+0.4.5 (?/??/2012):
+------------------
+
+- Fixed bug that caused a failure to boot BIOS-based OSes on Macs.
+
0.4.4 (6/23/2012):
------------------
<tr>
<td><tt>showtools</tt></td>
<td><tt>shell</tt>, <tt>gptsync</tt>, <tt>about</tt>, <tt>exit</tt>, <tt>shutdown</tt>, and <tt>reboot</tt></td>
- <td>Specifies which tool tags to display on the second row. <tt>shell</tt> launches an EFI shell, <tt>gptsync</tt> launches a tool that creates a hybrid MBR, <tt>about</tt> displays information about the program, <tt>exit</tt> terminates rEFInd, <tt>shutdown</tt> shuts down the computer (or reboots it, on UEFI PCs), and <tt>reboot</tt> reboots the computer. The tags appear in the order in which you specify them. The default is <tt>shell, about, shutdown, reboot</tt>.</td>
+ <td>Specifies which tool tags to display on the second row. <tt>shell</tt> launches an EFI shell, <tt>gptsync</tt> launches a tool that creates a hybrid MBR, <tt>about</tt> displays information about the program, <tt>exit</tt> terminates rEFInd, <tt>shutdown</tt> shuts down the computer (or reboots it, on UEFI PCs), and <tt>reboot</tt> reboots the computer. The tags appear in the order in which you specify them. The default is <tt>shell, about, shutdown, reboot</tt>. Note that the <tt>shell</tt> and <tt>gptsync</tt> options both require the presence of programs not included with rEFInd; see the <a href="installing.html#addons">"Installing Additional Components"</a> section of the <a href="installing.html">Installing rEFInd</a> page for pointers to these programs.</td>
</tr>
<tr>
<td><tt>textonly</tt></td>
<tr>
<td><tt>dont_scan_dirs</tt> or <tt>don't_scan_dirs</tt></td>
<td>directory path(s)</td>
- <td>Adds the specified directory or directories to a directory "blacklist"—these directories are <i>not</i> scanned for boot loaders. This may be useful to keep duplicate boot loaders out of the menu (say, if <tt>EFI/Boot/bootx64.efi</tt> is a duplicate of another boot loader); or to keep drivers or utilities out of the boot menu, if you've stored them in a subdirectory of <tt>EFI</tt>. This option takes precedence over <tt>also_scan_dirs</tt>; if a directory appears in both lists, it will <i>not</i> be scanned.</td>
+ <td>Adds the specified directory or directories to a directory "blacklist"—these directories are <i>not</i> scanned for boot loaders, on <i>any</i> partition. This may be useful to keep duplicate boot loaders out of the menu (say, if <tt>EFI/Boot/bootx64.efi</tt> is a duplicate of another boot loader); or to keep drivers or utilities out of the boot menu, if you've stored them in a subdirectory of <tt>EFI</tt>. This option takes precedence over <tt>also_scan_dirs</tt>; if a directory appears in both lists, it will <i>not</i> be scanned.</td>
</tr>
<tr>
<td><tt>scan_all_linux_kernels</tt></td>
<ul>
-<li><b><a href="http://tianocore.git.sourceforge.net/git/gitweb.cgi?p=tianocore/edk2;a=blob_plain;f=EdkShellBinPkg/FullShell/X64/Shell_Full.efi;hb=HEAD">shell.efi</a></b>—This
+<li><b><a
+ href="http://tianocore.git.sourceforge.net/git/gitweb.cgi?p=tianocore/edk2;a=blob_plain;f=EdkShellBinPkg/FullShell/X64/Shell_Full.efi;hb=HEAD">shell.efi</a></b>—This
file, placed in the ESP's <tt>efi/tools</tt> directory, adds the
ability to launch a text-mode EFI shell from rEFInd. Note that the
download link is to a 64-bit binary that must be renamed before rEFInd
- will recognize it.</li>
+ will recognize it. Additional shell download links appear on the <a
+ href="https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#UEFI_Shell_download_links">Arch
+ Linux wiki,</a> and on other sites; try a Web search if the shell you
+ find doesn't work to your satisfaction.</li>
<li><b>gptsync.efi</b>—This program creates a <a
href="http://www.rodsbooks.com/gdisk/hybrid.html">hybrid MBR</a> from
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>
forum thread</a> for more information.</li>
<li>I'd like to find a way to enable users to enter customizations for
- boot options and then save them to the <tt>refind.conf</tt>
- file.</li>
+ boot options and then save them to the <tt>refind.conf</tt> file.
+ One possible way to implement this would be to have manual boot
+ stanzas override auto-detected boot loader definitions for the same
+ boot loader file.</li>
<li>It should be possible to override specific auto-detected boot
loader settings—say, to disable one specific boot loader or
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>The HFS+ driver returns a volume label of "HFS+ volume", no matter
what the volume's real label is.</li>
+ <li>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
+ desirable.</li>
+
</ul></li> <!-- Drivers -->
</ul>
#include <Protocol/UgaIo.h>
#include <Protocol/UnicodeCollation.h>
#include <Protocol/UsbIo.h>
+#include <Protocol/LegacyBios.h>
// Guid Includes
#include <Guid/Acpi.h>
# Which non-bootloader tools to show on the tools line, and in what
# order to display them:
-# shell - the EFI shell
-# gptsync - the (dangerous) gptsync.efi utility
+# shell - the EFI shell (requires external program; see rEFInd
+# documentation for details)
+# gptsync - the (dangerous) gptsync.efi utility (requires external
+# program; see rEFInd documentation for details)
# about - an "about this program" option
# exit - a tag to exit from rEFInd
# shutdown - shuts down the computer (a bug causes this to reboot EFI
# another boot loader or to exclude a directory that holds drivers
# or non-bootloader utilities provided by a hardware manufacturer. If
# a directory is listed both here and in also_scan_dirs, dont_scan_dirs
-# takes precedence.
+# takes precedence. Note that this blacklist applies to ALL the
+# filesystems that rEFInd scans, not just the ESP.
#
#dont_scan_dirs EFI/boot,EFI/Dell
gEfiScsiPassThruProtocolGuid ## PROTOCOL SOMETIMES_CONSUMES\r
gEfiExtScsiPassThruProtocolGuid ## PROTOCOL SOMETIMES_CONSUMES\r
\r
+ gEfiLegacyBiosProtocolGuid # PROTOCOL TO_START\r
+\r
[FeaturePcd]\r
gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport\r
\r
if (AboutMenu.EntryCount == 0) {
AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT);
- AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.4.4");
+ AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.4.4.1");
AddMenuInfoLine(&AboutMenu, L"");
AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer");
AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012 Roderick W. Smith");
MergeStrings(&FullLoadOptions, L" ", 0);
// NOTE: That last space is also added by the EFI shell and seems to be significant
// when passing options to Apple's boot.efi...
- }
+ } else {
+ MergeStrings(&FullLoadOptions, LoadOptions, 0);
+ } // if/else
// NOTE: We also include the terminating null in the length for safety.
ChildLoadedImage->LoadOptions = (VOID *)FullLoadOptions;
ChildLoadedImage->LoadOptionsSize = ((UINT32)StrLen(FullLoadOptions) + 1) * sizeof(CHAR16);
(UGAHeight - BootLogoImage->Height) >> 1,
&StdBackgroundPixel);
- if (Entry->Volume->IsMbrPartition)
+ if (Entry->Volume->IsMbrPartition) {
ActivateMbrPartition(Entry->Volume->WholeDiskBlockIO, Entry->Volume->MbrPartitionIndex);
+ }
ExtractLegacyLoaderPaths(DiscoveredPathList, MAX_DISCOVERED_PATHS, LegacyLoaderList);