GPTSYNC_DIR=gptsync
EFILIB_DIR=EfiLib
export EDK2BASE=/usr/local/UDK2014/MyWorkSpace
-export REFIND_VERSION='L"0.10.2.1"'
+export REFIND_VERSION='L"0.10.3"'
# The "all" target builds with the TianoCore library if possible, but falls
# back on the more easily-installed GNU-EFI library if TianoCore isn't
-0.10.3 (?/??/2016):
+0.10.3 (4/24/2016):
-------------------
+- Changed description of BIOS/CSM/legacy OS loaders on Macs to include the
+ string "(Legacy)", so as to more easily identify BIOS/CSM/legacy-mode OSes
+ in the rEFInd main menu.
+
+- Added recognition of the fwupx64.efi file as a firmware update tool.
+ This filename is excluded from the first-row launchers, and is instead
+ presented on the second row, controlled by the "fwupdate" item on the
+ "showtools" option line. It's enabled by default. Note that it's still a
+ bit unclear to me how this tool is supposed to be used. rEFInd launches it
+ with no options, but if it should take options, this will have to be
+ changed in the future.
+
- Tightened exclusion of shell binary filenames from boot loader scan.
Previously, any filename containing the substring "shell" was excluded
from scans. Now it's tighter; only files matching one of the filenames in
+refind (0.10.3-0ppa1) wily; urgency=medium
+
+ * Version bump
+
+ -- Roderick Smith <rodsmith@rodsbooks.com> Sun, 24 Apr 2016 11:51:14 -0400
+
refind (0.10.2-0ppa1) wily; urgency=medium
* Version bump
icons/os_refit.png
icons/os_win.png
icons/tool_apple_rescue.png
+ icons/tool_fwupdate.png
icons/tool_memtest.png
icons/tool_rescue.png
icons/transparent.png
.\" Copyright 2015-2016 Roderick W. Smith (rodsmith@rodsbooks.com)
.\" May be distributed under the GNU Free Documentation License version 1.3 or
any later version
-.TH "MKRLCONF" "8" "0.10.2" "Roderick W. Smith" "rEFInd Manual"
+.TH "MKRLCONF" "8" "0.10.3" "Roderick W. Smith" "rEFInd Manual"
.SH "NAME"
mkrlconf \- Create a Linux kernel configuration file for rEFInd
.SH "SYNOPSIS"
.\" Copyright 2015-2016 Roderick W. Smith (rodsmith@rodsbooks.com)
.\" May be distributed under the GNU Free Documentation License version 1.3 or
any later version
-.TH "MVREFIND" "8" "0.10.2" "Roderick W. Smith" "rEFInd Manual"
+.TH "MVREFIND" "8" "0.10.3" "Roderick W. Smith" "rEFInd Manual"
.SH "NAME"
mvrefind \- Move a rEFInd installation from one location to another
.SH "SYNOPSIS"
.\" Copyright 2015-2016 Roderick W. Smith (rodsmith@rodsbooks.com)
.\" May be distributed under the GNU Free Documentation License version 1.3 or
any later version
-.TH "REFIND-INSTALL" "8" "0.10.2" "Roderick W. Smith" "rEFInd Manual"
+.TH "REFIND-INSTALL" "8" "0.10.3" "Roderick W. Smith" "rEFInd Manual"
.SH "NAME"
refind-install \- Install rEFInd to the ESP and create an NVRAM entry
.SH "SYNOPSIS"
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-1/26/2016, referencing rEFInd 0.10.2</p>
+4/24/2016, referencing rEFInd 0.10.3</p>
<p>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>
</tr>
<tr>
<td><tt>showtools</tt></td>
- <td><tt>shell</tt>, <tt>memtest</tt>, <tt>gdisk</tt>, <tt>gptsync</tt>, <tt>apple_recovery</tt>, <tt>csr_rotate</tt>, <tt>mok_tool</tt>, <tt>netboot</tt>, <tt>about</tt>, <tt>exit</tt>, <tt>shutdown</tt>, <tt>reboot</tt>, and <tt>firmware</tt></td>
- <td>Specifies which tool tags to display on the second row. <tt>shell</tt> launches an EFI shell, <tt>memtest</tt> (or <tt>memtest86</tt>) launches the <a href="http://www.memtest86.com/download.htm">Memtest86</a> program, <tt>gdisk</tt> launches the partitioning tool of the same name, <tt>gptsync</tt> launches a tool that creates a hybrid MBR, <tt>apple_recovery</tt> boots the OS X Recovery HD, <tt>csr_rotate</tt> rotates through System Integrity Protection (SIP) values specified by <tt>csr_values</tt>, <tt>windows_recovery</tt> boots a Windows recovery tool, <tt>mok_tool</tt> launches a tool to manage Machine Owner Keys (MOKs) on systems with Secure Boot active, <tt>netboot</tt> launches the network boot tool (iPXE), <tt>about</tt> displays information about rEFInd, <tt>exit</tt> terminates rEFInd, <tt>shutdown</tt> shuts down the computer (or reboots it, on some UEFI PCs), <tt>reboot</tt> reboots the computer, and <tt>firmware</tt> reboots the computer into the computer's own setup utility. The tags appear in the order in which you specify them. The default is <tt>shell, memtest, gdisk, apple_recovery, mok_tool, about, shutdown, reboot, firmware</tt>. Note that the <tt>shell</tt>, <tt>memtest</tt>, <tt>apple_recovery</tt>, and <tt>mok_tool</tt> options all require the presence of programs not included with rEFInd. The <tt>gptsync</tt> option requires use of a like-named program which, although it ships with rEFInd 0.6.9 and later, is not installed by default except under OS X. 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 the shell, Memtest86, and <tt>gptsync</tt> programs. The <tt>apple_recovery</tt> option will appear only if you've got an Apple Recovery HD partition (which has a boot loader called <tt>com.apple.recovery.boot/boot.efi</tt>). The <tt>firmware</tt> option works only on computers that support this option; on other computers, the option is quietly ignored. See the <a href="secureboot.html">Secure Boot</a> page for information on Secure Boot and MOK management.</td>
+ <td><tt>shell</tt>, <tt>memtest</tt>, <tt>gdisk</tt>, <tt>gptsync</tt>, <tt>apple_recovery</tt>, <tt>csr_rotate</tt>, <tt>mok_tool</tt>, <tt>fwupdate</tt>, <tt>netboot</tt>, <tt>about</tt>, <tt>exit</tt>, <tt>shutdown</tt>, <tt>reboot</tt>, and <tt>firmware</tt></td>
+ <td>Specifies which tool tags to display on the second row. <tt>shell</tt> launches an EFI shell, <tt>memtest</tt> (or <tt>memtest86</tt>) launches the <a href="http://www.memtest86.com/download.htm">Memtest86</a> program, <tt>gdisk</tt> launches the partitioning tool of the same name, <tt>gptsync</tt> launches a tool that creates a hybrid MBR, <tt>apple_recovery</tt> boots the OS X Recovery HD, <tt>csr_rotate</tt> rotates through System Integrity Protection (SIP) values specified by <tt>csr_values</tt>, <tt>windows_recovery</tt> boots a Windows recovery tool, <tt>mok_tool</tt> launches a tool to manage Machine Owner Keys (MOKs) on systems with Secure Boot active, <tt>fwupdate</tt> launches a firmware-update tool, <tt>netboot</tt> launches the network boot tool (iPXE), <tt>about</tt> displays information about rEFInd, <tt>exit</tt> terminates rEFInd, <tt>shutdown</tt> shuts down the computer (or reboots it, on some UEFI PCs), <tt>reboot</tt> reboots the computer, and <tt>firmware</tt> reboots the computer into the computer's own setup utility. The tags appear in the order in which you specify them. The default is <tt>shell, memtest, gdisk, apple_recovery, mok_tool, about, shutdown, reboot, firmware</tt>. Note that the <tt>shell</tt>, <tt>memtest</tt>, <tt>apple_recovery</tt>, and <tt>mok_tool</tt> options all require the presence of programs not included with rEFInd. The <tt>gptsync</tt> option requires use of a like-named program which, although it ships with rEFInd 0.6.9 and later, is not installed by default except under OS X. 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 the shell, Memtest86, and <tt>gptsync</tt> programs. The <tt>apple_recovery</tt> option will appear only if you've got an Apple Recovery HD partition (which has a boot loader called <tt>com.apple.recovery.boot/boot.efi</tt>). The <tt>firmware</tt> option works only on computers that support this option; on other computers, the option is quietly ignored. See the <a href="secureboot.html">Secure Boot</a> page for information on Secure Boot and MOK management.</td>
</tr>
<tr>
<td><tt>font</tt></td>
/** 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.10.1 " FSW_EFI_STRINGIFY(t) L" File System Driver"
+#define FSW_EFI_DRIVER_NAME(t) L"rEFInd 0.10.3 " FSW_EFI_STRINGIFY(t) L" File System Driver"
// function prototypes
os_refit.png
os_win.png
tool_apple_rescue.png
+tool_fwupdate.png
tool_memtest.png
tool_rescue.png
transparent.png
<key>ProductName</key>
<string>rEFInd</string>
<key>ProductVersion</key>
- <string>0.10.2</string>
+ <string>0.10.3</string>
</dict>
</plist>
ENDOFHERE
# reboot - a tag to reboot the computer
# firmware - a tag to reboot the computer into the firmware's
# user interface (ignored on older computers)
+# fwupdate - a tag to update the firmware; launches the fwupx64.efi
+# (or similar) program
# netboot - launch the ipxe.efi tool for network (PXE) booting
-# Default is shell,memtest,gdisk,apple_recovery,windows_recovery,mok_tool,about,shutdown,reboot,firmware
+# Default is shell,memtest,gdisk,apple_recovery,windows_recovery,mok_tool,about,shutdown,reboot,firmware,fwupdate
#
-#showtools shell, gdisk, memtest, mok_tool, apple_recovery, windows_recovery, about, reboot, exit, firmware
+#showtools shell, gdisk, memtest, mok_tool, apple_recovery, windows_recovery, about, reboot, exit, firmware, fwupdate
# Boot loaders that can launch a Windows restore or emergency system.
# These tend to be OEM-specific.
Summary: EFI boot manager software
Name: refind
-Version: 0.10.2
+Version: 0.10.3
Release: 1%{?dist}
Summary: EFI boot manager software
License: GPLv3
# thus wiping out the just-updated files.
%changelog
+* Sun Apr 24 2016 R Smith <rodsmith@rodsbooks.com> - 0.10.3
+- Updated spec file for 0.10.3
* Tue Jan 26 2016 R Smith <rodsmith@rodsbooks.com> - 0.10.2
- Updated spec file for 0.10.2
* Sat Dec 12 2015 R Smith <rodsmith@rodsbooks.com> - 0.10.1
MyFreePool(GlobalConfig.DontScanFiles);
GlobalConfig.DontScanFiles = StrDuplicate(DONT_SCAN_FILES);
MergeStrings(&(GlobalConfig.DontScanFiles), MOK_NAMES, L',');
+ MergeStrings(&(GlobalConfig.DontScanFiles), FWUPDATE_NAMES, L',');
MyFreePool(GlobalConfig.DontScanVolumes);
GlobalConfig.DontScanVolumes = StrDuplicate(DONT_SCAN_VOLUMES);
GlobalConfig.WindowsRecoveryFiles = StrDuplicate(WINDOWS_RECOVERY_FILES);
GlobalConfig.ShowTools[i - 1] = TAG_WINDOWS_RECOVERY;
} else if (MyStriCmp(FlagName, L"mok_tool")) {
GlobalConfig.ShowTools[i - 1] = TAG_MOK_TOOL;
+ } else if (MyStriCmp(FlagName, L"fwupdate")) {
+ GlobalConfig.ShowTools[i - 1] = TAG_FWUPDATE_TOOL;
} else if (MyStriCmp(FlagName, L"csr_rotate")) {
GlobalConfig.ShowTools[i - 1] = TAG_CSR_ROTATE;
} else if (MyStriCmp(FlagName, L"firmware")) {
#define TAG_GDISK (16)
#define TAG_NETBOOT (17)
#define TAG_CSR_ROTATE (18)
-#define NUM_TOOLS (19)
+#define TAG_FWUPDATE_TOOL (19)
+#define NUM_TOOLS (20)
#define NUM_SCAN_OPTIONS 10
// Names of binaries that can manage MOKs....
#define MOK_NAMES L"MokManager.efi,HashTool.efi,HashTool-signed.efi,KeyTool.efi,KeyTool-signed.efi"
+// Names of binaries that can update firmware....
+#if defined (EFIX64)
+#define FWUPDATE_NAMES L"fwupx64.efi"
+#elif defined(EFI32)
+#define FWUPDATE_NAMES L"fwupia32.efi"
+#elif defined(EFIAARCH64)
+#define FWUPDATE_NAMES L"fwupaa64.efi"
+#else
+#define FWUPDATE_NAMES L"fwup.efi"
+#endif
// Directories to search for these MOK-managing programs. Note that SelfDir is
// searched in addition to these locations....
#define MOK_LOCATIONS L"\\,EFI\\tools,EFI\\fedora,EFI\\redhat,EFI\\ubuntu,EFI\\suse,EFI\\opensuse,EFI\\altlinux"
{ NULL, L"tool_apple_rescue", ICON_SIZE_SMALL },
{ NULL, L"tool_windows_rescue", ICON_SIZE_SMALL },
{ NULL, L"tool_mok_tool", ICON_SIZE_SMALL },
+ { NULL, L"tool_fwupdate", ICON_SIZE_SMALL },
{ NULL, L"tool_memtest", ICON_SIZE_SMALL },
{ NULL, L"tool_netboot", ICON_SIZE_SMALL },
{ NULL, L"vol_internal", ICON_SIZE_BADGE },
#define BUILTIN_ICON_TOOL_APPLE_RESCUE (9)
#define BUILTIN_ICON_TOOL_WINDOWS_RESCUE (10)
#define BUILTIN_ICON_TOOL_MOK_TOOL (11)
-#define BUILTIN_ICON_TOOL_MEMTEST (12)
-#define BUILTIN_ICON_TOOL_NETBOOT (13)
-#define BUILTIN_ICON_VOL_INTERNAL (14)
-#define BUILTIN_ICON_VOL_EXTERNAL (15)
-#define BUILTIN_ICON_VOL_OPTICAL (16)
-#define BUILTIN_ICON_VOL_NET (17)
-#define BUILTIN_ICON_COUNT (18)
+#define BUILTIN_ICON_TOOL_FWUPDATE (12)
+#define BUILTIN_ICON_TOOL_MEMTEST (13)
+#define BUILTIN_ICON_TOOL_NETBOOT (14)
+#define BUILTIN_ICON_VOL_INTERNAL (15)
+#define BUILTIN_ICON_VOL_EXTERNAL (16)
+#define BUILTIN_ICON_VOL_OPTICAL (17)
+#define BUILTIN_ICON_VOL_NET (18)
+#define BUILTIN_ICON_COUNT (19)
#endif
FindMem(Buffer, SECTOR_SIZE, "ISOLINUX", 8) >= 0) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"linux";
- Volume->OSName = L"Linux";
+ Volume->OSName = L"Linux (Legacy)";
} else if (FindMem(Buffer, 512, "Geom\0Hard Disk\0Read\0 Error", 26) >= 0) { // GRUB
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"grub,linux";
- Volume->OSName = L"Linux";
+ Volume->OSName = L"Linux (Legacy)";
} else if ((*((UINT32 *)(Buffer + 502)) == 0 &&
*((UINT32 *)(Buffer + 506)) == 50000 &&
FindMem(Buffer, SECTOR_SIZE, "Starting the BTX loader", 23) >= 0) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"freebsd";
- Volume->OSName = L"FreeBSD";
+ Volume->OSName = L"FreeBSD (Legacy)";
// If more differentiation needed, also search for
// "Invalid partition table" &/or "Missing boot loader".
(FindMem(Buffer, SECTOR_SIZE, "I/O error loading boot loader", 29) >= 0)) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"freebsd";
- Volume->OSName = L"FreeBSD";
+ Volume->OSName = L"FreeBSD (Legacy)";
} else if (FindMem(Buffer, 512, "!Loading", 8) >= 0 ||
FindMem(Buffer, SECTOR_SIZE, "/cdboot\0/CDBOOT\0", 16) >= 0) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"openbsd";
- Volume->OSName = L"OpenBSD";
+ Volume->OSName = L"OpenBSD (Legacy)";
} else if (FindMem(Buffer, 512, "Not a bootxx image", 18) >= 0 ||
*((UINT32 *)(Buffer + 1028)) == 0x7886b6d1) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"netbsd";
- Volume->OSName = L"NetBSD";
+ Volume->OSName = L"NetBSD (Legacy)";
// Windows NT/200x/XP
} else if (FindMem(Buffer, SECTOR_SIZE, "NTLDR", 5) >= 0) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"win";
- Volume->OSName = L"Windows";
+ Volume->OSName = L"Windows (Legacy)";
// Windows Vista/7/8
} else if (FindMem(Buffer, SECTOR_SIZE, "BOOTMGR", 7) >= 0) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"win8,win";
- Volume->OSName = L"Windows";
+ Volume->OSName = L"Windows (Legacy)";
} else if (FindMem(Buffer, 512, "CPUBOOT SYS", 11) >= 0 ||
FindMem(Buffer, 512, "KERNEL SYS", 11) >= 0) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"freedos";
- Volume->OSName = L"FreeDOS";
+ Volume->OSName = L"FreeDOS (Legacy)";
} else if (FindMem(Buffer, 512, "OS2LDR", 6) >= 0 ||
FindMem(Buffer, 512, "OS2BOOT", 7) >= 0) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"ecomstation";
- Volume->OSName = L"eComStation";
+ Volume->OSName = L"eComStation (Legacy)";
} else if (FindMem(Buffer, 512, "Be Boot Loader", 14) >= 0) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"beos";
- Volume->OSName = L"BeOS";
+ Volume->OSName = L"BeOS (Legacy)";
} else if (FindMem(Buffer, 512, "yT Boot Loader", 14) >= 0) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"zeta,beos";
- Volume->OSName = L"ZETA";
+ Volume->OSName = L"ZETA (Legacy)";
} else if (FindMem(Buffer, 512, "\x04" "beos\x06" "system\x05" "zbeos", 18) >= 0 ||
FindMem(Buffer, 512, "\x06" "system\x0c" "haiku_loader", 20) >= 0) {
Volume->HasBootCode = TRUE;
Volume->OSIconName = L"haiku,beos";
- Volume->OSName = L"Haiku";
+ Volume->OSName = L"Haiku (Legacy)";
}
BANNER_NOSCALE, NULL, NULL, NULL, NULL, CONFIG_FILE_NAME, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
{ TAG_SHELL, TAG_MEMTEST, TAG_GDISK, TAG_APPLE_RECOVERY, TAG_WINDOWS_RECOVERY,
- TAG_MOK_TOOL, TAG_ABOUT, TAG_SHUTDOWN, TAG_REBOOT, TAG_FIRMWARE,
+ TAG_MOK_TOOL, TAG_ABOUT, TAG_SHUTDOWN, TAG_REBOOT, TAG_FIRMWARE, TAG_FWUPDATE_TOOL,
0, 0, 0, 0, 0, 0, 0, 0 }
};
FindTool(MokLocations, MOK_NAMES, L"MOK utility", BUILTIN_ICON_TOOL_MOK_TOOL);
break;
+ case TAG_FWUPDATE_TOOL:
+ FindTool(MokLocations, FWUPDATE_NAMES, L"firmware update utility", BUILTIN_ICON_TOOL_FWUPDATE);
+ break;
+
case TAG_CSR_ROTATE:
if ((GetCsrStatus(&CsrValue) == EFI_SUCCESS) && (GlobalConfig.CsrValues)) {
TempMenuEntry = CopyMenuEntry(&MenuEntryRotateCsr);