0.7.9 (?/??/2014):
------------------
+- Attempt to fix rEFInd perpetually re-scanning after ejecting a disc on
+ some Macs.
+
+- Added check to remove redundant (or non-functional if Secure Boot is
+ active) kernel entries for Ubuntu, which is now including two versions of
+ kernels, one signed and the other unsigned.
+
- Fixed bug in install.sh that could cause it to display error messages
if the dmraid utility was not installed.
- Fixed mistaken identification of the MOK utility as the "MOK utility
utility."
-- Added detection of German-language FAT (non-)boot sector created by
- iPartition to keep it out of the Mac boot menu.
0.7.8 (3/9/2014):
-----------------
if (FindMem(Buffer, 512, "Press any key to restart", 24) >= 0)
Volume->HasBootCode = FALSE;
- // dummy FAT boot sector (created by iPartition)
- if ((FindMem(Buffer, 512, "Medienfehler", 12) >= 0) &&
- (FindMem(Buffer, 512, "Neustart: Taste dr\x81" "cken", 22) >= 0))
- Volume->HasBootCode = FALSE;
-
// check for MBR partition table
if (*((UINT16 *)(Buffer + 510)) == 0xaa55) {
MbrTable = (MBR_PARTITION_INFO *)(Buffer + 446);
{
if (AboutMenu.EntryCount == 0) {
AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT);
- AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.7.8.4");
+ AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.7.8.6");
AddMenuInfoLine(&AboutMenu, L"");
AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer");
AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012-2014 Roderick W. Smith");
return (DirEntry->FileSize != FileSize2);
} // BOOLEAN IsSymbolicLink()
+// Returns TRUE if a file with the same name as the original but with
+// ".efi.signed" is also present in the same directory. Ubuntu is using
+// this filename as a signed version of the original unsigned kernel, and
+// there's no point in cluttering the display with two kernels that will
+// behave identically on non-SB systems, or when one will fail when SB
+// is active.
+static BOOLEAN HasSignedCounterpart(IN REFIT_VOLUME *Volume, IN CHAR16 *Path, IN CHAR16 *Filename) {
+ CHAR16 *NewFile = NULL;
+ BOOLEAN retval = FALSE;
+
+ MergeStrings(&NewFile, Path, 0);
+ MergeStrings(&NewFile, Filename, L'\\');
+ MergeStrings(&NewFile, L".efi.signed", 0);
+ if (FileExists(Volume->RootDir, NewFile))
+ retval = TRUE;
+ MyFreePool(NewFile);
+
+ return retval;
+} // BOOLEAN HasSignedCounterpart()
+
// Scan an individual directory for EFI boot loader files and, if found,
// add them to the list. Exception: Ignores FALLBACK_FULLNAME, which is picked
// up in ScanEfiFiles(). Sorts the entries within the loader directory so that
(StriCmp(DirEntry->FileName, FALLBACK_BASENAME) == 0 && (StriCmp(Path, L"EFI\\BOOT") == 0)) ||
StriSubCmp(L"shell", DirEntry->FileName) ||
IsSymbolicLink(Volume, Path, DirEntry) || /* is symbolic link */
+ HasSignedCounterpart(Volume, Path, DirEntry->FileName) || /* a file with same name plus ".efi.signed" is present */
FilenameIn(Volume, Path, DirEntry->FileName, GlobalConfig.DontScanFiles))
continue; // skip this
// The Escape key triggers a re-scan operation....
if (MenuExit == MENU_EXIT_ESCAPE) {
+ MenuExit = 0;
RescanAll();
continue;
}