From: srs5694
Originally written: 3/14/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -26,49 +26,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comOriginally written: 3/14/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -26,49 +26,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comOriginally written: 4/19/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -26,49 +26,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comOriginally written: 3/14/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -25,49 +25,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comI've used rEFIt on a couple of computers for over a year, but I've found that it has some frustrating limitations. It tends to flood the screen with non-functional BIOS boot options, for instance; and it has a number of bugs on UEFI-based systems. I therefore expanded on rEFIt, giving rEFInd features that improve on or go beyond those of rEFIt, such as:
+rEFInd expands on rEFIt by providing features that improve on or go beyond those of rEFIt, such as:
On the flip side, at least for Mac users, rEFInd comes with less sophisticated Mac installation tools than does rEFIt, in favor of more OS-agnostic packaging.
diff --git a/docs/refind/getting.html b/docs/refind/getting.html index 0faf42f..c3cb9bf 100644 --- a/docs/refind/getting.html +++ b/docs/refind/getting.html @@ -1,4 +1,4 @@ -F + @@ -15,7 +15,7 @@ F href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comOriginally written: 3/14/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -25,49 +25,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comOriginally written: 3/14/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -26,49 +26,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comThis page describes rEFInd, my fork of the rEFIt boot manager for computers based on the Extensible Firmware Interface (EFI) and Unified EFI (UEFI). Like rEFIt, rEFInd is a boot manager, meaning that it presents a menu of options to the user when the computer first starts up, as shown below. rEFInd is not a boot loader, which is a program that loads an OS kernel and hands off control to it. Many popular boot managers, such as the Grand Unified Bootloader (GRUB), are also boot loaders, which can blur the distinction in many users' minds. rEFInd, though, relies on a separate boot loader to finish the handoff to an OS; it just presents a pretty menu and gives you options for how to proceed prior to booting an OS. All EFI-capable OSes include boot loaders, so this limitation isn't a problem. If you're using Linux, you should be aware that several EFI boot loaders are available, so choosing between them can be a challenge. See my Web page on this topic for more information.
+This page describes rEFInd, my fork of the rEFIt boot manager for computers based on the Extensible Firmware Interface (EFI) and Unified EFI (UEFI). Like rEFIt, rEFInd is a boot manager, meaning that it presents a menu of options to the user when the computer first starts up, as shown below. rEFInd is not a boot loader, which is a program that loads an OS kernel and hands off control to it. Many popular boot managers, such as the Grand Unified Bootloader (GRUB), are also boot loaders, which can blur the distinction in many users' minds. rEFInd, though, relies on a separate boot loader to finish the handoff to an OS; it just presents a pretty menu and gives you options for how to proceed prior to booting an OS. All EFI-capable OSes include boot loaders, so this limitation isn't a problem. If you're using Linux, you should be aware that several EFI boot loaders are available, so choosing between them can be a challenge. In fact, the Linux kernel can function as an EFI boot loader for itself, which gives rEFInd characteristics similar to a boot loader for Linux. See my Web page on this topic for more information.
-In theory, EFI implementations should provide boot managers. Unfortunately, in practice these boot managers are often so poor as to be useless. The worst I've personally encountered is on Gigabyte's Hybrid EFI, which provides you with no boot options whatsoever, beyond choosing the boot device (hard disk vs. optical disc, for instance). I've heard of others that are just as bad. For this reason, a good EFI boot manager—either standalone or as part of a boot loader—is a practical necessity for multi-booting on an EFI computer. That's where rEFIt and rEFInd come into play.
-I decided to fork the earlier rEFIt project because, although rEFIt is a useful program, it's got several important limitations, such as poor control over the boot loader detection process and an ability to display at most a handful of boot loader entries on its main screen. I fixed a few of these bugs and released a patched version here; however, rEFIt's author, Christoph Pfisterer, didn't respond to my e-mails, and the latest official version of rEFIt, 0.14, was released in March of 2010. Thus, it appears that rEFIt has been abandoned. Forking the project to give rEFIt new features seemed like the thing to do.
+I decided to fork the earlier rEFIt project because, although rEFIt is a useful program, it's got several important limitations, such as poor control over the boot loader detection process and an ability to display at most a handful of boot loader entries on its main screen. Christoph Pfisterer, rEFIt's author, stopped updating rEFIt with version 0.14, which was released in March of 2010. Since I forked rEFIt to rEFInd, Christoph has begun pointing rEFIt users to rEFInd as a successor project.
The rEFIt Web page has a distinct Mac bias, and the provided binaries work only on Macs because they're 32-/64-bit "fat" binaries, which Macs can handle but UEFI-based PCs can't. rEFIt can be recompiled to work on UEFI-based PCs, but prebuilt binaries for such systems are relatively rare. Although I do own a Mac Mini, my interest lies more on the side of standard PC hardware, and hence with UEFI. My development platform is Linux, and my installation instructions and binaries are much more platform-neutral. I'm aware that many Mac users will consider this a step backward, but I ask their indulgence; I only have so many hours a week to work on this project, and I prefer to devote my efforts to improvements that will benefit all rEFInd users, at least initially.
diff --git a/docs/refind/installing.html b/docs/refind/installing.html index a34ca1d..db34db9 100644 --- a/docs/refind/installing.html +++ b/docs/refind/installing.html @@ -15,7 +15,7 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comOriginally written: 3/14/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -26,49 +26,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comBeginning with version 0.6.2, I've included RPM and Debian package files for rEFInd. If you have a working RPM-based or Debian-based Linux installation that boots in EFI mode, using one of these files is likely to be the easiest way to install rEFInd: You need only download the file and issue an appropriate installation command. In some cases, double-clicking the package in your file manager will install it. If that doesn't work, a command like the following will install the RPM on an RPM-based system:
-# rpm -Uvh refind-0.6.8-1.x86_64.rpm+
# rpm -Uvh refind-0.6.9-1.x86_64.rpm
On a Debian-based system, the equivalent command is:
-# dpkg -i refind_0.6.8-1_amd64.deb+
# dpkg -i refind_0.6.9-1_amd64.deb
Either command produces output similar to that described for using the install.sh script, so you can check it for error messages and other signs of trouble. The package file installs rEFInd and registers it with the EFI to be the default boot loader. The script that runs as part of the installation process tries to determine if you're using Secure Boot, and if so it will try to configure rEFInd to launch using shim; however, this won't work correctly on all systems. Ubuntu 12.10 users who are booting with Secure Boot active should be wary, since the resulting installation will probably try to use Ubuntu's version of shim, which won't work correctly with rEFInd.
@@ -786,7 +824,7 @@ $ ioreg -l -p IODeviceTree | grep firmware-abirEFInd includes the ability to launch any EFI program; however, rEFInd detects only certain programs. These include boot loaders in traditional locations and a handful of other programs. To launch these other programs, you must download and install them separately from rEFInd:
+rEFInd includes the ability to launch any EFI program; however, rEFInd detects only certain programs. These include boot loaders in traditional locations and a handful of other programs. To launch most of these other programs, you must download and install them separately from rEFInd:
Originally written: 3/19/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -26,49 +26,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comby Roderick W. Smith, rodsmith@rodsbooks.com
-Last Web page update: 3/18/2013
+Last Web page update: 4/25/2013
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!
@@ -24,49 +24,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comOriginally written: 11/13/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -26,49 +26,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comOriginally written: 4/19/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -26,49 +26,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comOf course, not all of these elements are likely to be included in all themes. You might want to change just one or two elements—say, to add an icon for your OS or to change the banner or background.
-Note: If you'd like to design a banner logo for rEFInd, please do so! I lack the sort of artistic talent required for creating logos, so I just used plain text. I'd like to have something more eye-catching, though. I don't promise to use the first logo I'm given, but if you have some ideas, or would like to discuss some ideas, feel free to e-mail me. I'm currently distributing one proposed alternative in the banners subdirectory.
-Originally written: 3/14/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -26,49 +26,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comOriginally written: 3/14/2012; last Web page update: -3/18/2013, referencing rEFInd 0.6.8
+4/25/2013, referencing rEFInd 0.6.9I'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!
@@ -26,49 +26,87 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comAssuming rEFInd starts up correctly, you should see its main screen, which resembles the following:
-If you don't press any key before the timeout (shown below the icons and description line) expires, the default boot loader will launch. This is normally the first item in the menu, but you can adjust the default by editing the configuration file. (In this example, it's the Linux Mint loader, which is further identified by text above the timeout as vmlinuz-3.5.0-17-generic from LINUXMINT.)
+If you don't press any key before the timeout (shown below the icons and description line) expires, the default boot loader will launch. This is normally the first item in the menu, but you can adjust the default by editing the configuration file. (In this example, it's the Ubuntu Linux loader, which is further identified by text above the timeout as vmlinuz-3.5.0-27-generic from UBUNTU BOOT.)
-This display is dominated by the central set of OS tags (icons), which in this example includes tags for OS X, Windows, Mint, and an unkown boot loader. All but the last of these are on hard disks, but the unknown boot loader is on an optical disc, as revealed by the small icons (known as badges) in the lower-right corner of the OS icons.
+This display is dominated by the central set of OS tags (icons), which in this example includes tags for an unknown boot loader, OS X, Windows, and Ubuntu. All but the first of these are on hard disks, but the unknown boot loader is on an optical disc, as revealed by the small icons (known as badges) in the lower-right corner of the OS icons.
-In this example, the Linux Mint tag is selected. You can move the selection left by pressing the left arrow key and right by pressing the right arrow key. If your system has many boot loaders, an arrow icon will appear to the right and/or left of the boot loader list, indicating that the boot loader list will scroll when you move off the edge. (Such an arrow is visible to the right in the sample screen, but not to the left.) You can scroll the list by one line full of icons by using the Page Up or Page Down keys to move left and right, respectively. Moving past the final selection or using the down arrow key moves the selection to the second row of small tags, which launch ancillary programs or perform special actions. If you've moved the selection cursor to the second row, pressing the up arrow key or scrolling past the left edge of the second row moves the cursor to the top row. In this figure, these four tags are present:
+In this example, the Ubuntu tag is selected. You can move the selection left by pressing the left arrow key and right by pressing the right arrow key. If your system has many boot loaders, an arrow icon will appear to the right and/or left of the boot loader list, indicating that the boot loader list will scroll when you move off the edge. (Such arrows are visible to the right and left in the sample screen.) You can scroll the list by one line full of icons by using the Page Up or Page Down keys to move left and right, respectively. Moving past the final selection or using the down arrow key moves the selection to the second row of small tags, which launch ancillary programs or perform special actions. If you've moved the selection cursor to the second row, pressing the up arrow key or scrolling past the left edge of the second row moves the cursor to the top row. In this figure, these five tags are present:
The last three of these options are always available by default, but the first depends on the presence of the EFI shell program file, as described earlier. Other ancillary tags may be present on some computers.
+By default, the options to display an information page, shutdown the computer, and reboot the computer are present. Options to launch a shell, launch the Apple recovery utility, and launch the Machine Owner Key (MOK) utility will also appear automatically if these utilities are installed. Options to launch the hybrid MBR tool and to exit from rEFInd are not displayed by default; you must edit the configuration file to enable these features, or to disable those that are displayed by default.
To launch an OS or utility, you should select its tag and then press the Enter key or the space bar.
diff --git a/filesystems/fsw_efi.c b/filesystems/fsw_efi.c index 67c7186..9aadb45 100644 --- a/filesystems/fsw_efi.c +++ b/filesystems/fsw_efi.c @@ -98,7 +98,7 @@ EFI_GUID gEfiFileSystemVolumeLabelInfoIdGuid = EFI_FILE_SYSTEM_VOLUME_LABEL_INFO /** 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.8 " FSW_EFI_STRINGIFY(t) L" File System Driver" +#define FSW_EFI_DRIVER_NAME(t) L"rEFInd 0.6.9 " FSW_EFI_STRINGIFY(t) L" File System Driver" // function prototypes diff --git a/gptsync/gptsync.c b/gptsync/gptsync.c index 2ba4418..5d442c5 100644 --- a/gptsync/gptsync.c +++ b/gptsync/gptsync.c @@ -138,16 +138,16 @@ static UINTN write_mbr(VOID) table[i].end_chs[2] = 0xff; lba = new_mbr_parts[k].start_lba; - if (lba > 0xffffffffULL) { + if (lba > MAX_MBR_LBA) { Print(L"Warning: Partition %d starts beyond 2 TiB limit\n", i+1); - lba = 0xffffffffULL; + lba = MAX_MBR_LBA; } table[i].start_lba = (UINT32)lba; lba = new_mbr_parts[k].end_lba + 1 - new_mbr_parts[k].start_lba; - if (lba > 0xffffffffULL) { + if (lba > MAX_MBR_LBA) { Print(L"Warning: Partition %d extends beyond 2 TiB limit\n", i+1); - lba = 0xffffffffULL; + lba = MAX_MBR_LBA; } table[i].size = (UINT32)lba; } @@ -214,7 +214,7 @@ static UINTN check_gpt(VOID) } return 0; -} +} // VOID check_gpt() // // compare GPT and MBR tables @@ -260,14 +260,15 @@ static VOID generate_hybrid_mbr(VOID) { UINTN i, k, iter, count_active; UINT64 first_used_lba; - i = 0; new_mbr_part_count = 1; - first_used_lba = 0xFFFFFFFF; + first_used_lba = (UINT64) MAX_MBR_LBA + (UINT64) 1; // Copy partitions in three passes.... // First, do FAT and NTFS partitions.... + i = 0; do { if ((gpt_parts[i].start_lba > 0) && (gpt_parts[i].end_lba > 0) && + (gpt_parts[i].end_lba <= MAX_MBR_LBA) && (gpt_parts[i].gpt_parttype->kind == GPT_KIND_BASIC_DATA) && /* MS Basic Data GPT type code */ (gpt_parts[i].mbr_type != 0x83)) { /* Not containing Linux filesystem */ copy_gpt_to_new_mbr(i, new_mbr_part_count); @@ -279,10 +280,13 @@ static VOID generate_hybrid_mbr(VOID) { i++; } while (i < gpt_part_count && new_mbr_part_count <= 3); - // Second, do Linux partitions.... - i = 0; - while (i < gpt_part_count && new_mbr_part_count <= 3) { + // Second, do Linux partitions. Note that we start from the END of the + // partition list, so as to maximize the space covered by the 0xEE + // partition if there are several Linux partitions. + i = gpt_part_count - 1; // Note that gpt_part_count can't be 0; filtered by check_gpt() + while (i >= 0 && new_mbr_part_count <= 3) { if ((gpt_parts[i].start_lba > 0) && (gpt_parts[i].end_lba > 0) && + (gpt_parts[i].end_lba <= MAX_MBR_LBA) && ((gpt_parts[i].gpt_parttype->kind == GPT_KIND_DATA) || (gpt_parts[i].gpt_parttype->kind == GPT_KIND_BASIC_DATA)) && (gpt_parts[i].mbr_type == 0x83)) { copy_gpt_to_new_mbr(i, new_mbr_part_count); @@ -291,7 +295,7 @@ static VOID generate_hybrid_mbr(VOID) { new_mbr_part_count++; } - i++; + i--; } // while // Third, do anything that's left to cover uncovered spaces; but this requires @@ -300,10 +304,13 @@ static VOID generate_hybrid_mbr(VOID) { new_mbr_parts[0].index = 0; new_mbr_parts[0].start_lba = 1; new_mbr_parts[0].end_lba = (disk_size() > first_used_lba) ? (first_used_lba - 1) : disk_size() - 1; - new_mbr_parts[0].mbr_type = 0xee; + if (new_mbr_parts[0].end_lba > MAX_MBR_LBA) + new_mbr_parts[0].end_lba = MAX_MBR_LBA; + new_mbr_parts[0].mbr_type = 0xEE; i = 0; while (i < gpt_part_count && new_mbr_part_count <= 3) { if ((gpt_parts[i].start_lba > new_mbr_parts[0].end_lba) && (gpt_parts[i].end_lba > 0) && + (gpt_parts[i].end_lba <= MAX_MBR_LBA) && (gpt_parts[i].gpt_parttype->kind != GPT_KIND_BASIC_DATA) && (gpt_parts[i].mbr_type != 0x83)) { copy_gpt_to_new_mbr(i, new_mbr_part_count); diff --git a/gptsync/gptsync.h b/gptsync/gptsync.h index 2a1bbf0..6ac9838 100644 --- a/gptsync/gptsync.h +++ b/gptsync/gptsync.h @@ -116,6 +116,13 @@ void Print(wchar_t *format, ...); #endif +#define GPT_KIND_SYSTEM (0) +#define GPT_KIND_DATA (1) +#define GPT_KIND_BASIC_DATA (2) +#define GPT_KIND_FATAL (3) + +#define MAX_MBR_LBA 0xFFFFFFFF + // // platform-independent types // @@ -160,11 +167,6 @@ typedef struct { CHAR16 name[36]; } GPT_ENTRY; -#define GPT_KIND_SYSTEM (0) -#define GPT_KIND_DATA (1) -#define GPT_KIND_BASIC_DATA (2) -#define GPT_KIND_FATAL (3) - typedef struct { UINT8 guid[16]; UINT8 mbr_type; diff --git a/gptsync/os_efi.c b/gptsync/os_efi.c index 91ee3a7..e40037f 100644 --- a/gptsync/os_efi.c +++ b/gptsync/os_efi.c @@ -51,7 +51,7 @@ EFI_BLOCK_IO *BlockIO = NULL; // Returns size of disk in blocks UINT64 disk_size(VOID) { - return (UINT64) BlockIO->Media->LastBlock; + return (UINT64) (BlockIO->Media->LastBlock + 1); } // UINT64 disk_size() UINTN read_sector(UINT64 lba, UINT8 *buffer) diff --git a/install.sh b/install.sh index ded9192..66d3e9c 100755 --- a/install.sh +++ b/install.sh @@ -252,6 +252,10 @@ CopyTools() { mkdir -p $InstallDir/EFI/tools if [[ $OSName == 'Darwin' ]] ; then cp -f $RefindDir/tools_$1/gptsync_$1.efi $InstallDir/EFI/tools/ + if [[ -f $InstallDir/EFI/tools/gptsync.efi ]] ; then + mv $InstallDir/EFI/tools/gptsync.efi $InstallDir/EFI/tools/gptsync.efi-disabled + echo "Found old gptsync.efi; disabling it by renaming it to gptsync.efi-disabled" + fi fi } # CopyTools() diff --git a/refind.spec b/refind.spec index af87411..7f96a60 100644 --- a/refind.spec +++ b/refind.spec @@ -1,6 +1,6 @@ Summary: EFI boot manager software Name: refind -Version: 0.6.8.4 +Version: 0.6.9 Release: 1%{?dist} Summary: EFI boot manager software License: GPLv3 @@ -71,10 +71,14 @@ if [[ -f %{keydir}/refind.key && -x $SBSign ]] ; then for File in `ls drivers_%{efiarch}/*_x64.efi` ; do $SBSign --key %{keydir}/refind.key --cert %{keydir}/refind.crt --output $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/$File $File done + mkdir -p $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/tools_%{efiarch} + $SBSign --key %{keydir}/refind.key --cert %{keydir}/refind.crt --output $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/tools_%{efiarch}/gptsync_%{efiarch}.efi gptsync/gptsync_%{efiarch}.efi else install -Dp -m0644 refind/refind*.efi $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/ mkdir -p $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/drivers_%{efiarch} cp -a drivers_%{efiarch}/* $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/drivers_%{efiarch}/ + mkdir -p $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/tools_%{efiarch} + install -Dp -m0644 gptsync/gptsync_%{efiarch}.efi $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/tools_%{efiarch}/gptsync_%{efiarch}.efi fi # Copy configuration and support files to /usr/share/refind-%{version} @@ -150,5 +154,5 @@ fi # wiping out the just-updated files. %changelog -* Sun Feb 3 2013 R Smith