-0.6.8 (?/?/2013):
------------------
+0.6.8 (3/18/2013):
+------------------
+
+- Added workaround for presumed EFI bug that was causing "Invalid
+ Parameter" errors when scanning for boot loaders on some computers.
+
+- Added search for an EFI shell called shell.efi in the root directory
+ (previously this name was only accepted in EFI\tools).
+
+- Fixed bug in install.sh that caused it to fail on some systems (Fedora
+ 18, for instance) because of a problem identifying the ESP.
- Fixed bug that caused icons named after boot loaders to not be used.
<p class="subhead">by Roderick W. Smith, <a\r
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>\r
\r
-<p>Originally written: 3/14/2013; last Web page update:\r
-2/3/2012, referencing rEFInd 0.6.7</p>\r
+<p>Originally written: 3/14/2012; last Web page update:\r
+3/18/2013, referencing rEFInd 0.6.8</p>\r
\r
\r
<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>\r
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-2/3/2013, referencing rEFInd 0.6.7</p>
+3/18/2013, referencing rEFInd 0.6.8</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>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 4/19/2012; last Web page update:
-2/3/2013, referencing rEFInd 0.6.7</p>
+3/18/2013, referencing rEFInd 0.6.8</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>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-2/3/2013, referencing rEFInd 0.6.7</p>
+3/18/2013, referencing rEFInd 0.6.8</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>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-2/8/2013, referencing rEFInd 0.6.7</p>
+3/18/2013, referencing rEFInd 0.6.8</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>
<ul>
<li><b><a
- href="http://sourceforge.net/projects/refind/files/0.6.7/refind-src-0.6.7.zip/download">A
+ href="http://sourceforge.net/projects/refind/files/0.6.8/refind-src-0.6.8.zip/download">A
source code zip file</a></b>—This is useful if you want to compile
the software locally. Note that I use Linux with the <a
href="https://sourceforge.net/projects/tianocore/">TianoCore EFI
development tools are also supported.</li>
<li><b><a
- href="http://sourceforge.net/projects/refind/files/0.6.7/refind-bin-0.6.7.zip/download">A
+ href="http://sourceforge.net/projects/refind/files/0.6.8/refind-bin-0.6.8.zip/download">A
binary zip file</a></b>—Download this if you want to install
rEFInd and/or its filesystem drivers on an <i>x</i>86 or <i>x</i>86-64
computer and have no need to test rEFInd first by booting it on an
href="installing.html">Installing rEFInd</a> page.</li>
<li><b><a
- href="http://sourceforge.net/projects/refind/files/0.6.7/refind-0.6.7-1.x86_64.rpm/download">A
+ href="http://sourceforge.net/projects/refind/files/0.6.8/refind-0.6.8-1.x86_64.rpm/download">A
binary RPM file</a></b>—If you use an RPM-based <i>x</i>86-64
Linux system such as Fedora or openSUSE, you can install the binary RPM
package rather than use the binary zip file. (I don't provide an
rEFInd</a> page) as part of the installation process. Distribution
maintainers can examine the <tt>refind.spec</tt> file in the source
package and tweak it to their needs. The <a
- href="http://sourceforge.net/projects/refind/files/0.6.7/refind-0.6.7-1.src.rpm/download">source
+ href="http://sourceforge.net/projects/refind/files/0.6.8/refind-0.6.8-1.src.rpm/download">source
RPM file</a> might or might not build on your system as-is; it relies
on assumptions about the locations of the GNU-EFI development
files.</li>
<li><b><a
- href="http://sourceforge.net/projects/refind/files/0.6.7/refind_0.6.7-1_amd64.deb/download">A
+ href="http://sourceforge.net/projects/refind/files/0.6.8/refind_0.6.8-1_amd64.deb/download">A
binary Debian package</a></b>—If you use an <i>x</i>86-64 version
of Debian, Ubuntu, Mint, or another Debian-based distribution, you can
install from this package, which was converted from the binary RPM
<p class="sidebar"><b>Note:</b> At the moment, neither the bootable CD-R image file nor the bootable USB flash drive image file supports booting with Secure Boot active.</p>
<li><b><a
- href="http://sourceforge.net/projects/refind/files/0.6.7/refind-cd-0.6.7.zip/download">A
+ href="http://sourceforge.net/projects/refind/files/0.6.8/refind-cd-0.6.8.zip/download">A
CD-R image file</a></b>—This download contains the same files as
the binary zip file, but you can burn it to a CD-R to test rEFInd
(and its filesystem drivers) without installing it first. (It boots on
computer.</p>
<li><b><a
- href="http://sourceforge.net/projects/refind/files/0.6.7/refind-flashdrive-0.6.7.zip/download">A
+ href="http://sourceforge.net/projects/refind/files/0.6.8/refind-flashdrive-0.6.8.zip/download">A
USB flash drive image file</a></b>—Although you can create
your own rEFInd USB flash drive, you may find it easier to download
this version and copy it to your USB drive with <tt>dd</tt> or some
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-2/3/2013, referencing rEFInd 0.6.7</p>
+3/18/2013, referencing rEFInd 0.6.8</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>
<li>Matthew J. Garrett, the developer of the shim boot loader to manage Secure Boot, maintains <a href="http://mjg59.dreamwidth.org/">a blog</a> in which he often writes about EFI issues.</li>
+<li>J. A. Watson has a <a href="http://www.zdnet.com/the-refind-boot-loader-for-uefi-systems-7000010275/">review of rEFInd on an HP laptop</a> on ZDNet. He had serious problems because of the HP's UEFI bugs, but finally got it to work.</li>
+
</ul></li> <!-- Informational Web pages -->
<li><b>Additional programs</b>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-2/11/2013, referencing rEFInd 0.6.7</p>
+3/18/2013, referencing rEFInd 0.6.8</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>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/19/2012; last Web page update:
-2/3/2013, referencing rEFInd 0.6.7</p>
+3/18/2013, referencing rEFInd 0.6.8</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>
<p class="subhead">by Roderick W. Smith, <a
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
-<p>Last Web page update: 2/3/2013</p>
+<p>Last Web page update: 3/18/2013</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>
<ul>
+<li><b>0.6.8 (3/18/2013)</b>—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 <tt>install.sh</tt> script that caused the script to fail on some systems. It also enables you to name a shell <tt>shell.efi</tt> in the root directory (previously only <tt>shell_<i>arch</i>.efi</tt> worked in the root directory, although <tt>shell.efi</tt> worked in the <tt>EFI/tools</tt> directory).</li>
+
<li><b>0.6.7 (2/3/2013)</b>—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 <tt>EFI/Microsoft/Boot/bootmgfw.efi</tt>; keeping the <tt>dont_scan_volumes</tt> option out of the <tt>also_scan_dirs</tt> list; a fix for <tt>dont_scan_volumes</tt> 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 <tt>HashTool.efi</tt> as a MOK utility, scanning for MOK utilities on all volumes, and a more verbose error message when a Secure Boot authentication failure occurs.</li>
<li><b>0.6.6 (1/26/2013)</b>—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 <tt>font</tt> token in <tt>refind.conf</tt>. 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 <a href="themes.html#fonts">fonts section on the Theming rEFInd page</a> 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 <tt>EFI/BOOT/bootx64.efi</tt> (or <tt>EFI/BOOT/bootia32.efi</tt> 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 <tt>EFI/BOOT/bootx64.efi</tt> filename. Bug fixes are described in the <tt>NEWS.txt</tt> file, and include fixes for bugs that prevented manual boot stanzas in included configuration files from being detected; that caused an <tt>ASSERT</tt> error to appear on the screen on some systems if <tt>default_selection</tt> was not set; the caused <tt>Binary is whitelisted</tt> messages to persist on the screen when loading signed EFI drivers with Secure Boot active; that caused rEFInd to ignore <tt>icon</tt> tokens in <tt>refind.conf</tt> manual boot stanzas; and that caused the <tt>install.sh</tt> script to fail to update drivers when rEFInd was installed to <tt>EFI/BOOT</tt>.</li>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 11/13/2012; last Web page update:
-2/3/2013, referencing rEFInd 0.6.7</p>
+3/18/2013, referencing rEFInd 0.6.8</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>
<p>Through 2012, it became obvious that Secure Boot would be a feature that was controlled, to a large extent, by Microsoft. This is because Microsoft requires that non-server computers that display Windows 8 logos ship with Secure Boot enabled. As a practical matter, this also means that such computers ship with Microsoft's keys in their firmware. In the absence of an industry-standard body to manage the signing of Secure Boot keys, this means that Microsoft's key is the only one that's more-or-less guaranteed to be installed on the computer, thus blocking the ability to boot any OS that lacks a boot path through Microsoft's signing key.</p>
-<p class="sidebar"><b>Note:</b> The <a href="http://www.linuxfoundation.org">Linux Foundation</a> is on the verge of releasing a signed version of their <a href="http://www.linuxfoundation.org/news-media/blogs/browse/2012/10/linux-foundation-uefi-secure-boot-system-open-source">PreBootloader,</a> which will function something like shim; however, where shim requires signing all binaries that don't already have valid Secure Boot keys and managing a small number of keys, PreBootloader requires registering every authorized binary. I'll update this documentation when PreBootloader is released in a signed form.</p>
+<p class="sidebar"><b>Note:</b> The <a href="http://www.linuxfoundation.org">Linux Foundation</a> has released a signed version of their <a href="http://blog.hansenpartnership.com/linux-foundation-secure-boot-system-released/">PreBootloader,</a> which functions something like shim; however, where shim requires signing all binaries that don't already have valid Secure Boot keys and managing a small number of keys, PreBootloader requires registering every authorized binary. I haven't had the chance to revise this documentation to cover PreBootloader, but you may want to use it instead of shim if you want to manage a small number of binaries that are not already signed with a Secure Boot key, MOK, or a key built into a signed version of shim.</p>
<p>Fortunately, Microsoft will sign third-party binaries with their key—or more precisely, with a key that Microsoft uses to sign third-party binaries. (Microsoft uses another key to sign its own binaries, and some devices, such as the Microsoft Surface tablet, lack the third-party Microsoft key.) A payment of $99 to Verisign enables a software distributor to sign as many binaries as desired. Red Hat (Fedora), Novell (SUSE), and Canonical (Ubuntu) have all announced plans to take advantage of this system. Unfortunately, using a third-party signing service is an awkward solution for open source software. In fact, for this very reason Red Hat has developed a program that it calls <i>shim</i> that essentially shifts the Secure Boot "train" from Microsoft's proprietary "track" to one that's more friendly to open source authors. Shim is signed by Microsoft and redirects the boot process to another boot loader that can be signed with keys that the distribution maintains and that are built into shim. Fedora 18 also uses this system. SUSE has announced that it will use the same system, as does Ubuntu with version 12.10 and later. SUSE has contributed to the shim approach by providing expansions to shim that support a set of keys that users can maintain themselves. These keys are known as Machine Owner Keys (MOKs), and managing them is described later, in <a href="#mok">Managing MOKs.</a> To reiterate, then, there are potentially three ways to sign a binary that will get it launched on a computer that uses shim:</p>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 4/19/2012; last Web page update:
-2/3/2013, referencing rEFInd 0.6.7</p>
+3/18/2013, referencing rEFInd 0.6.8</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>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-2/3/2013, referencing rEFInd 0.6.7</p>
+3/18/2013, referencing rEFInd 0.6.8</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>
<li>The code is in need of review to search for memory leaks and
similar problems.</li>
+ <li>If the user has a Linux software RAID 1 array, rEFInd will detect
+ kernels or boot loaders in RAID 1 twice. This could be fixed by
+ adding a check for duplicate filesystem UUIDs to the
+ partition-scanning code.</li>
+
</ul></li> <!-- Known bugs -->
<li><b>New features I'd like to add:</b>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-2/3/2013, referencing rEFInd 0.6.7</p>
+3/18/2013, referencing rEFInd 0.6.8</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>
/** Helper macro for stringification. */
#define FSW_EFI_STRINGIFY(x) #x
/** Expands to the EFI driver name given the file system type name. */
-#define FSW_EFI_DRIVER_NAME(t) L"rEFInd 0.6.7 " FSW_EFI_STRINGIFY(t) L" File System Driver"
+#define FSW_EFI_DRIVER_NAME(t) L"rEFInd 0.6.8 " FSW_EFI_STRINGIFY(t) L" File System Driver"
// function prototypes
#
# Revision history:
#
+# 0.6.8 -- Bug fix: ESP scan now uses "uniq".
# 0.6.6 -- Bug fix: Upgrade drivers when installed to EFI/BOOT. Also enable
# copying shim.efi and MokManager.efi over themselves.
# 0.6.4 -- Copies ext2 driver rather than ext4 driver for ext2/3fs
fi
InstallDir=`echo $EspLine | cut -d " " -f 6`
if [[ -n $InstallDir ]] ; then
- EspFilesystem=`grep $InstallDir /etc/mtab | cut -d " " -f 3`
+ EspFilesystem=`grep $InstallDir /etc/mtab | uniq | cut -d " " -f 3`
fi
if [[ $EspFilesystem != 'vfat' ]] ; then
echo "$RootDir/boot/efi doesn't seem to be on a VFAT filesystem. The ESP must be"
EG_IMAGE * egCopyImage(IN EG_IMAGE *Image)
{
- EG_IMAGE *NewImage;
+ EG_IMAGE *NewImage = NULL;
- NewImage = egCreateImage(Image->Width, Image->Height, Image->HasAlpha);
+ if (Image != NULL)
+ NewImage = egCreateImage(Image->Width, Image->Height, Image->HasAlpha);
if (NewImage == NULL)
return NULL;
mcopy -irefind-bin-$Version.img -s EFI shell*.efi ::/
# Make the ISO-9660 image file....
-mkisofs -A "Bootable rEFInd" -V "rEFInd $Version" -volset "rEFInd $Version" \
+mkisofs -A "Bootable rEFInd" -V "rEFInd_$Version" -volset "rEFInd_$Version" \
-J -r -v -x ./lost+found -o ../../refind-cd-$Version.iso \
-eltorito-alt-boot -efi-boot refind-bin-$Version.img \
-no-emul-boot ./
Summary: EFI boot manager software
Name: refind
-Version: 0.6.7
+Version: 0.6.8
Release: 1%{?dist}
Summary: EFI boot manager software
License: GPLv3
else
GlobalConfig.RequestedScreenHeight = 0;
+ } else if (StriCmp(TokenList[0], L"screensaver") == 0) {
+ HandleInt(TokenList, TokenCount, &(GlobalConfig.ScreensaverTime));
+
} else if (StriCmp(TokenList[0], L"use_graphics_for") == 0) {
GlobalConfig.GraphicsFor = 0;
for (i = 1; i < TokenCount; i++) {
UINTN GraphicsFor;
UINTN LegacyType;
UINTN ScanDelay;
+ UINTN ScreensaverTime;
CHAR16 *BannerFileName;
EG_IMAGE *ScreenBackground;
CHAR16 *SelectionSmallFileName;
LastBufferSize = BufferSize;
}
if (EFI_ERROR(Status)) {
- FreePool(Buffer);
+ MyFreePool(Buffer);
+ Buffer = NULL;
break;
}
// check for end of listing
if (BufferSize == 0) { // end of directory listing
- FreePool(Buffer);
+ MyFreePool(Buffer);
+ Buffer = NULL;
break;
}
while (KeepGoing && (OnePattern = FindCommaDelimited(FilePattern, i++)) != NULL) {
if (MetaiMatch(DirIter->LastFileInfo->FileName, OnePattern))
KeepGoing = FALSE;
-// Print(L"%s did%s match %s\n", DirIter->LastFileInfo->FileName, KeepGoing ? L" not" : L"", OnePattern);
} // while
// else continue loop
} else
#define MACOSX_LOADER_PATH L"System\\Library\\CoreServices\\boot.efi"
#if defined (EFIX64)
-#define SHELL_NAMES L"\\EFI\\tools\\shell.efi,\\EFI\\tools\\shellx64.efi,\\shellx64.efi"
+#define SHELL_NAMES L"\\EFI\\tools\\shell.efi,\\EFI\\tools\\shellx64.efi,\\shell.efi,\\shellx64.efi"
#define DRIVER_DIRS L"drivers,drivers_x64"
#define FALLBACK_FULLNAME L"EFI\\BOOT\\bootx64.efi"
#define FALLBACK_BASENAME L"bootx64.efi"
#elif defined (EFI32)
-#define SHELL_NAMES L"\\EFI\\tools\\shell.efi,\\EFI\\tools\\shellia32.efi,\\shellia32.efi"
+#define SHELL_NAMES L"\\EFI\\tools\\shell.efi,\\EFI\\tools\\shellia32.efi,\\shell.efi,\\shellia32.efi"
#define DRIVER_DIRS L"drivers,drivers_ia32"
#define FALLBACK_FULLNAME L"EFI\\BOOT\\bootia32.efi"
#define FALLBACK_BASENAME L"bootia32.efi"
#else
-#define SHELL_NAMES L"\\EFI\\tools\\shell.efi"
+#define SHELL_NAMES L"\\EFI\\tools\\shell.efi,\\shell.efi"
#define DRIVER_DIRS L"drivers"
#define FALLBACK_FULLNAME L"EFI\\BOOT\\boot.efi" /* Not really correct */
#define FALLBACK_BASENAME L"boot.efi" /* Not really correct */
L"Insert or F2 for more options; Esc to refresh" };
static REFIT_MENU_SCREEN AboutMenu = { L"About", NULL, 0, NULL, 0, NULL, 0, NULL, L"Press Enter to return to main menu", L"" };
-REFIT_CONFIG GlobalConfig = { FALSE, FALSE, 0, 0, 0, DONT_CHANGE_TEXT_MODE, 20, 0, 0, GRAPHICS_FOR_OSX, LEGACY_TYPE_MAC, 0,
+REFIT_CONFIG GlobalConfig = { FALSE, FALSE, 0, 0, 0, DONT_CHANGE_TEXT_MODE, 20, 0, 0, GRAPHICS_FOR_OSX, LEGACY_TYPE_MAC, 0, 0,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
{TAG_SHELL, TAG_APPLE_RECOVERY, TAG_MOK_TOOL, TAG_ABOUT, TAG_SHUTDOWN, TAG_REBOOT, 0, 0, 0, 0, 0 }};
if (AboutMenu.EntryCount == 0) {
AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT);
- AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.6.7.1");
+ AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.6.8");
AddMenuInfoLine(&AboutMenu, L"");
AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer");
AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012 Roderick W. Smith");
} // if
MyFreePool(Extension);
} // while
+
NewLoader = LoaderList;
while (NewLoader != NULL) {
AddLoaderEntry(NewLoader->FileName, NULL, Volume);
NewLoader = NewLoader->NextEntry;
} // while
+
CleanUpLoaderList(LoaderList);
Status = DirIterClose(&DirIter);
- if (Status != EFI_NOT_FOUND) {
+ // NOTE: EFI_INVALID_PARAMETER really is an error that should be reported;
+ // but I've gotten reports from users who are getting this error occasionally
+ // and I can't find anything wrong or reproduce the problem, so I'm putting
+ // it down to buggy EFI implementations and ignoring that particular error....
+ if ((Status != EFI_NOT_FOUND) && (Status != EFI_INVALID_PARAMETER)) {
if (Path)
SPrint(FileName, 255, L"while scanning the %s directory", Path);
else
StrCpy(FileName, L"while scanning the root directory");
CheckError(Status, FileName);
} // if (Status != EFI_NOT_FOUND)
- } // if not scanning our own directory
+ } // if not scanning a blacklisted directory
return FoundFallbackDuplicate;
} /* static VOID ScanLoaderDir() */
UINTN i, Length;
BOOLEAN ScanFallbackLoader = TRUE;
-// Print(L"Entering ScanEfiFiles(), GlobalConfig.ScanAllLinux = %s\n", GlobalConfig.ScanAllLinux ? L"TRUE" : L"FALSE");
MatchPatterns = StrDuplicate(LOADER_MATCH_PATTERNS);
if (GlobalConfig.ScanAllLinux)
MergeStrings(&MatchPatterns, LINUX_MATCH_PATTERNS, L',');
-// Print(L"MatchPatterns = '%s'\n", MatchPatterns);
if ((Volume->RootDir != NULL) && (Volume->VolName != NULL)) {
// check for Mac OS X boot loader
} else if (HaveTimeout) {
refit_call1_wrapper(BS->Stall, 100000); // Pause for 100 ms
TimeoutCountdown--;
- } else
+ } else {
refit_call3_wrapper(BS->WaitForEvent, 1, &ST->ConIn->WaitForKey, &index);
+ }
continue;
}
if (HaveTimeout) {