]> code.delx.au - refind/commitdiff
Fix memory management error; version 0.6.4 release.
authorsrs5694 <srs5694@users.sourceforge.net>
Tue, 8 Jan 2013 18:38:41 +0000 (13:38 -0500)
committersrs5694 <srs5694@users.sourceforge.net>
Tue, 8 Jan 2013 18:38:41 +0000 (13:38 -0500)
21 files changed:
NEWS.txt
docs/refind/bootmode.html
docs/refind/configfile.html
docs/refind/drivers.html
docs/refind/features.html
docs/refind/getting.html
docs/refind/index.html
docs/refind/installing.html
docs/refind/linux.html
docs/refind/revisions.html
docs/refind/secureboot.html
docs/refind/themes.html
docs/refind/todo.html
docs/refind/using.html
filesystems/fsw_efi.c
install.sh
mkcdimage
refind.spec
refind/config.c
refind/lib.c
refind/main.c

index fe96fcf7c2cf875ed486a2a339863cc37251498b..9d5c04759370c9fb12aeec9a188589d1eb1b067d 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -1,8 +1,13 @@
-0.6.4 (1/?/2013):
+0.6.4 (1/8/2013):
 -----------------
 
-- Fixed bug that could cause a hang on boot if any partition had a name
-  that was less than three characters long.
+- Revised install.sh to copy ext2fs driver, rather than ext4fs driver, for
+  ext2/3 filesystems. This can help keep non-functional entries from links
+  from /vmlinuz to /boot/vmlinuz out of the menu if the system uses ext4fs
+  on root and ext2fs or ext3fs on /boot.
+
+- Fixed a couple of memory management bugs that cause rEFInd to hang at
+  startup on some systems.
 
 0.6.3 (1/6/2013):
 -----------------
index 531e5bf2abf51de7632bd1fb93ed03ea01569ae2..74e14711e16fc177e0a57c89c73d38b74a88139f 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>\r
 \r
 <p>Originally written: 3/14/2013; last Web page update:\r
-1/6/2012, referencing rEFInd 0.6.3</p>\r
+1/8/2012, referencing rEFInd 0.6.4</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
index 3b8e2712561ee5c37bacb0ae812fa71f99349dfa..b45b12957c3860a44bbe2041da893592f284d5b5 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Originally written: 3/14/2012; last Web page update:
-1/6/2013, referencing rEFInd 0.6.3</p>
+1/8/2013, referencing rEFInd 0.6.4</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>
@@ -92,7 +92,7 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <div style="float:right; width:55%">
 
-<p>Many casual users will be able to use rEFInd without making changes to its settings; in its default configuration, the boot manager automatically detects all the EFI boot loader programs you have on your ESP (or your OS X boot partition, in the case of Macs) and displays icons for them. On Macs, rEFInd also presents legacy BIOS boot options by default. Sometimes, though, you may want to tweak rEFInd's configuration. Sometimes you can obtain your desired results by adjusting the filenames of your boot loaders. Other times, you can edit rEFInd's configuration file, <tt>refind.conf</tt>, which resides in the same directory as its binary file (<tt>refind.efi</tt> or whatever you've renamed it).</p>
+<p>Many casual users will be able to use rEFInd without making changes to its settings; in its default configuration, the boot manager automatically detects all the EFI boot loader programs you have on your ESP (or your OS X boot partition, in the case of Macs) and displays icons for them. On Macs, rEFInd also presents legacy BIOS boot options by default. Sometimes, though, you may want to tweak rEFInd's configuration. Sometimes you can obtain your desired results by adjusting the filenames of your boot loaders. Other times, you can edit rEFInd's configuration file, <tt>refind.conf</tt>, which resides in the same directory as its binary file (<tt>refind_x64.efi</tt> or whatever you've renamed it).</p>
 
 </div>
 
@@ -186,7 +186,7 @@ timeout 20
 <tr>
    <td><tt>banner</tt></td>
    <td>filename</td>
-   <td>Specifies a custom banner file to replaced the rEFInd banner image. The file should be a BMP image with a color depth of 24, 8, 4, or 1 bits. The file path is relative to the directory where <tt>refind.efi</tt> is stored.</td>
+   <td>Specifies a custom banner file to replaced the rEFInd banner image. The file should be a BMP image with a color depth of 24, 8, 4, or 1 bits. The file path is relative to the directory where the rEFInd binary is stored.</td>
 </tr>
 <tr>
    <td><tt>selection_big</tt></td>
@@ -288,7 +288,7 @@ scanfor manual,external,optical
 default_selection elilo
 </pre>
 
-<p>This example sets a timeout of 5 seconds; loads a custom graphic file called <tt>custom.bmp</tt> from the directory in which <tt>refind.efi</tt> resides; scans the <tt>drivers</tt> and <tt>EFI/tools/drivers</tt> directories for EFI drivers; uses manual boot loader configuration but also scans for external EFI boot loaders and EFI boot loaders on optical discs; and sets the default boot loader to the first loader found that includes the string <tt>elilo</tt>. Of course, since this file specifies use of manual boot loader configuration, it's not complete; you'll need to add at least one OS stanza to be able to boot from anything but an external disk or optical drive, as described shortly.</p>
+<p>This example sets a timeout of 5 seconds; loads a custom graphic file called <tt>custom.bmp</tt> from the directory in which the rEFInd binary resides; scans the <tt>drivers</tt> and <tt>EFI/tools/drivers</tt> directories for EFI drivers; uses manual boot loader configuration but also scans for external EFI boot loaders and EFI boot loaders on optical discs; and sets the default boot loader to the first loader found that includes the string <tt>elilo</tt>. Of course, since this file specifies use of manual boot loader configuration, it's not complete; you'll need to add at least one OS stanza to be able to boot from anything but an external disk or optical drive, as described shortly.</p>
 
 <a name="stanzas">
 <h2>Creating OS Stanzas</h2>
index 4920313c566d01495fe1bb7ebb1b556c5d98001b..1e1dff126a2c0bb94df3546a950a765ce66bb68c 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Originally written: 4/19/2012; last Web page update:
-1/6/2013, referencing rEFInd 0.6.3</p>
+1/8/2013, referencing rEFInd 0.6.4</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>
index e3496a2fe4a83fe20fefebb82bcc47915edd149c..d1cb4d77e7d29ecc624bee4aed8f175bb9b2b35d 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Originally written: 3/14/2012; last Web page update:
-1/6/2013, referencing rEFInd 0.6.3</p>
+1/8/2013, referencing rEFInd 0.6.4</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>
 
index 0e720d25799726102a51804cb7f425b472ffd13d..0868692d441eba755715c16a2ff4612ca8eb035b 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Originally written: 3/14/2012; last Web page update:
-1/6/2013, referencing rEFInd 0.6.3</p>
+1/8/2013, referencing rEFInd 0.6.4</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>
 
@@ -98,7 +98,7 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 <ul>
 
 <li><b><a
-    href="http://sourceforge.net/projects/refind/files/0.6.3/refind-src-0.6.3.zip/download">A
+    href="http://sourceforge.net/projects/refind/files/0.6.4/refind-src-0.6.4.zip/download">A
     source code zip file</a></b>&mdash;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
@@ -107,7 +107,7 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
     development tools are also supported.</li>
 
 <li><b><a
-    href="http://sourceforge.net/projects/refind/files/0.6.3/refind-bin-0.6.3.zip/download">A
+    href="http://sourceforge.net/projects/refind/files/0.6.4/refind-bin-0.6.4.zip/download">A
     binary zip file</a></b>&mdash;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
@@ -117,7 +117,7 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
     href="installing.html">Installing rEFInd</a> page.</li>
 
 <li><b><a
-    href="http://sourceforge.net/projects/refind/files/0.6.3/refind-0.6.3-2.x86_64.rpm/download">A
+    href="http://sourceforge.net/projects/refind/files/0.6.4/refind-0.6.4-1.x86_64.rpm/download">A
     binary RPM file</a></b>&mdash;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
@@ -126,13 +126,13 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
     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.3/refind-0.6.3-2.src.rpm/download">source
+    href="http://sourceforge.net/projects/refind/files/0.6.4/refind-0.6.4-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.3/refind_0.6.3-2_amd64.deb/download">A
+    href="http://sourceforge.net/projects/refind/files/0.6.4/refind_0.6.4-1_amd64.deb/download">A
     binary Debian package</a></b>&mdash;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
@@ -151,10 +151,10 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
     either build.)</li>
 -->
 
-<p class="sidebar"><b>Tip:</b> If you want a bootable USB flash drive, download the binary zip file or CD-R image file, prepare a USB flash drive with a FAT32 partition, and then use the <tt>install.sh</tt> program's <tt>--usedefault</tt> option, and perhaps the <tt>--alldrivers</tt> option, as in <tt class="userinput">bash install.sh --usedefault /dev/sdd1 --alldrivers</tt> to install to the first partition on <tt>/dev/sdd</tt>. This procedure should work even on a BIOS-booted computer.</p>
+<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.3/refind-cd-0.6.3.zip/download">A
+    href="http://sourceforge.net/projects/refind/files/0.6.4/refind-cd-0.6.4.zip/download">A
     CD-R image file</a></b>&mdash;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
@@ -168,6 +168,22 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
     be an extremely valuable diagnostic tool if you know how to use an EFI
     shell.</li>
 
+<p class="sidebar"><b>Tip:</b> If you want to make your own bootable USB
+flash drive, download the binary zip file or CD-R image file, prepare a USB
+flash drive with a FAT32 partition, and then use the <tt>install.sh</tt>
+program's <tt>--usedefault</tt> option, and perhaps the
+<tt>--alldrivers</tt> option, as in <tt class="userinput">bash install.sh
+--usedefault /dev/sdd1 --alldrivers</tt> to install to the first partition
+on <tt>/dev/sdd</tt>. This procedure should work even on a BIOS-booted
+computer.</p>
+
+<li><b><a
+    href="http://sourceforge.net/projects/refind/files/0.6.4/refind-flashdrive-0.6.4.zip/download">A
+    USB flash drive image file</a></b>&mdash;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
+    other low-level disk copying utility.</li>
+
 <li><b><a href="https://sourceforge.net/p/refind/code">Source code via
     git</a></b>&mdash;If you want to peruse the source code in your Web
     browser or get the very latest version (including pre-release bug fixes
index ad30fa3362cbe44fc6e2f9c5e1190cf7f5f5fed2..a7d871233ba5123393c2b01cb54074ab01f8a3da 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Originally written: 3/14/2012; last Web page update:
-1/6/2013, referencing rEFInd 0.6.3</p>
+1/8/2013, referencing rEFInd 0.6.4</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>
index 64a89cfaf934ff7fa57b6d7cd37434d5c009b1fa..a38452c6fb24c8b3926e931bef29c4669ba1e4e2 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Originally written: 3/14/2012; last Web page update:
-1/6/2013, referencing rEFInd 0.6.3</p>
+1/8/2013, referencing rEFInd 0.6.4</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>
@@ -277,13 +277,10 @@ Installation has completed successfully.</pre>
     available, installs it. Note that the "<tt>/boot</tt> directory" may be
     on a separate partition or it may be part of your root (<tt>/</tt>)
     filesystem, in which case the driver for your root filesystem is
-    installed. If <tt>install.sh</tt> detects that the filesystem in
-    question is ext2fs or ext3fs, it installs the ext4fs driver, which can
-    handle all three of these filesystem types. This feature is unlikely to
-    work properly from an emergency system, although it might if you have a
-    separate <tt>/boot</tt> partition and if you mount that partition at
-    <tt>/boot</tt> in your emergency system, and the ESP at
-    <tt>/boot/efi</tt>.</li>
+    installed. This feature is unlikely to work properly from an emergency
+    system, although it might if you have a separate <tt>/boot</tt>
+    partition and if you mount that partition at <tt>/boot</tt> in your
+    emergency system, and the ESP at <tt>/boot/efi</tt>.</li>
 
 <li>If you run <tt>install.sh</tt> on Linux and if
     <tt>/boot/refind_linux.conf</tt> doesn't already exist,
@@ -378,7 +375,7 @@ Filesystem     1K-blocks  Used Available Use% Mounted on
 
 <li>Type <tt><b>cd /boot/efi/EFI/refind</b></tt> to change into rEFInd's new directory on the ESP.</li>
 
-<li>Type <tt><b>rm refind_ia32.efi</b></tt> to remove the IA32 binary if you're using an <i>x</i>86-64 (64-bit) system; or type <tt><b>rm refind_x64.efi</b></tt> to remove the <i>x</i>86-64 binary if you're using an <i>x</i>86 (32-bit) system. You can optionally rename the binary you keep as <tt>refind.efi</tt>, but this isn't required. (Note that you must keep the version that's the correct bit width for your EFI; if you've installed a 32-bit Linux on a 64-bit PC with a 64-bit EFI, you'd keep <tt>refind_x64.efi</tt>.</li>
+<li>Type <tt><b>rm refind_ia32.efi</b></tt> to remove the IA32 binary if you're using an <i>x</i>86-64 (64-bit) system; or type <tt><b>rm refind_x64.efi</b></tt> to remove the <i>x</i>86-64 binary if you're using an <i>x</i>86 (32-bit) system. (Note that you must keep the version that's the correct bit width for your EFI; if you've installed a 32-bit Linux on a 64-bit PC with a 64-bit EFI, you'd keep <tt>refind_x64.efi</tt>.</li>
 
 <li>Optionally, type <tt class="userinput">rm -r drivers_ia32</tt> to remove the <i>x</i>86 drivers from an <i>x</i>86-64 system, or <tt class="userinput">rm -r drivers_x64</tt> to remove the <i>x</i>86-64 drivers from a 32-bit <i>x</i>86 system. You may also want to remove some or all of the drivers for the architecture you are using. If you don't need them, they'll slow down the start process, and worse, if you're using Secure Boot, rEFInd can load just one shim/MOK-signed driver. See the <a href="drivers.html">page on drivers</a> for more on this topic.</li>
 
@@ -771,7 +768,7 @@ $ <b>ioreg -l -p IODeviceTree | grep firmware-abi</b>
 
 </ul>
 
-<p>In all cases, if the new version includes new or altered configuration file options, you may need to manually update your configuration file. Alternatively, if you've used the default configuration file, you can replace your working <tt>refind.conf</tt> with <tt>refind.conf-sample</tt> from the rEFInd zip file. (When using <tt>install.sh</tt>, this file will be copied to rEFInd's installation directory under its original name, so you can rename it within that directory to replace the old file.</p>
+<p>In all cases, if the new version includes new or altered configuration file options, you may need to manually update your configuration file. Alternatively, if you've used the default configuration file, you can replace your working <tt>refind.conf</tt> with <tt>refind.conf-sample</tt> from the rEFInd zip file. (When using <tt>install.sh</tt>, this file will be copied to rEFInd's installation directory under its original name, so you can rename it within that directory to replace the old file.)</p>
 
 <p>If you're upgrading to rEFInd from rEFIt, you can simply run the <tt>install.sh</tt> script as described earlier or perform a manual installation. Once installed, rEFInd will take over boot manager duties. You'll still be able to launch rEFIt from rEFInd; a rEFIt icon will appear in rEFInd's menu. You can eliminate this option by removing the rEFIt files, which normally reside in <tt>/EFI/refit</tt>.</p>
 
@@ -807,7 +804,7 @@ $ <b>ioreg -l -p IODeviceTree | grep firmware-abi</b>
     href="http://refit.sourceforge.net">original rEFIt package.</a></li>
 
 <li><b>Drivers</b>&mdash;You can install drivers to extend the capabilities
-    of the EFI. rEFInd ships with filesystem drivers for ext2fs and
+    of the EFI. rEFInd ships with filesystem drivers for ext2fs, ext4fs, and
     ReiserFS, which can enable you to boot a Linux kernel with EFI stub
     support from an ext2fs, ext3fs, ext4fs, or ReiserFS partition. (rEFInd also
     provides ISO-9660 and HFS+ drivers.) You can find additional drivers
@@ -875,7 +872,7 @@ $ <tt class="userinput">sudo rm -r /EFI/refind</tt>
 # <tt class="userinput">efibootmgr --verbose</tt>
 Timeout: 10 seconds
 BootOrder: 0000,0007
-Boot0000* rEFInd       HD(2,1b8,64000,f1b7598e-baa8-16ea-4ef6-3ff3b606ac1e)File(\EFI\refind\refind.efi)
+Boot0000* rEFInd       HD(2,1b8,64000,f1b7598e-baa8-16ea-4ef6-3ff3b606ac1e)File(\EFI\refind\refind_x64.efi)
 Boot0007* CD/DVD Drive BIOS(3,0,00)PATA: HP DVD Writer 1040r     .
 # <tt class="userinput">efibootmgr --delete-bootnum --bootnum 0000</tt>
 Timeout: 10 seconds
index 103795b3b85dedb6e24492d7ca0dcecc4f131fc9..6b1e147ba9892376cfe01521c28fd9fb1762dd5b 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Originally written: 3/19/2012; last Web page update:
-1/6/2013, referencing rEFInd 0.6.3</p>
+1/8/2013, referencing rEFInd 0.6.4</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>
index 6fa12ea8a3abd20ac1b4c27fdb78901ec2baf168..90f8b35d0d36c9ef6d9cc88ecb893f909c64a03f 100644 (file)
@@ -14,7 +14,7 @@
 <p class="subhead">by Roderick W. Smith, <a
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
-<p>Last Web page update: 1/6/2013</p>
+<p>Last Web page update: 1/8/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>
 
@@ -92,6 +92,8 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <ul>
 
+<li><b>0.6.4 (1/8/2013)</b>&mdash;Bug fixes motivate this release; it corrects a couple of memory management bugs in 0.6.3 that cause rEFInd to hang at startup on some computers (unfortunately not on any of mine, so I missed this). I've also made a small change to the <tt>install.sh</tt> script so that it installs the ext2fs driver rather than the ext4fs driver if the script detects that a Linux kernel is on an ext2fs or ext3fs partition. This can keep rEFInd from scanning ext4fs partitions and picking up non-functional symbolic links to vmlinuz on such partitions.</li>
+
 <li><b>0.6.3 (1/6/2013)</b>&mdash;The installation script and related tools see the biggest changes in this version of the program. The <tt>install.sh</tt> script can now detect a rEFInd installation in <tt>EFI/BOOT</tt> or <tt>EFI/Microsoft/Boot</tt> and update it rather than install to the default location of <tt>EFI/refind</tt>. It will also install to one of these fallback locations if it's run in BIOS mode, thus helping users who want to get a BIOS-mode install of Linux running on an EFI-based computer. A new <tt>mvrefind.sh</tt> script can move the installation between these three locations (or more exotic locations). Outside of scripts, the <tt>dont_scan_dirs</tt> and <tt>also_scan_dirs</tt> tokens can now accept volume specifications, as in <tt>myvol:EFI/bogus</tt> to not scan (or scan) the <tt>EFI/bogus</tt> directory on the <tt>myvol</tt> volume. I've also fixed a bug that caused rEFInd to ignore default boot loaders on removable disks if rEFInd was installed using the fallback filename. I've also modified the ISO-9660 driver so that it works with ISO-9660 images written to non-optical media. This may help with getting "hybrid ISO" images written to USB flash drives to boot.</li>
 
 <li><b>0.6.2 (12/30/2012)</b>&mdash;This version's biggest changes are "behind-the-scenes" improvements. Specifically, I've completely re-worked the shim/MOK Secure Boot code, based largely on an approach used by James Bottomley in his PreLoader boot loader. This fixes some bugs, such as the inability to launch more than one EFI boot loader in Secure Boot mode. The EFI filesystem drivers can now be built with GNU-EFI, which may help distribution maintainers. I'm also providing RPM packages of rEFInd, although I recommend installing from the binary zip file. Finally, I've changed rEFInd's default text-mode setting behavior to not adjust the text mode. (Recent previous versions forced the system to use text mode 0, which cuased problems on some systems.)</li>
index 2a24b483c950869f33e8fd48c3c0ec918209e0a3..099dfc7d47f7e761afc039f0bd1c423a5474c338 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Originally written: 11/13/2012; last Web page update:
-1/6/2013, referencing rEFInd 0.6.3</p>
+1/8/2013, referencing rEFInd 0.6.4</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>
index 43bb32f9e6b214175d3955e64daf03a4bc6cfbd0..ea14a303672a490caaca287158645794ab1ac291 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Originally written: 4/19/2012; last Web page update:
-1/6/2013, referencing rEFInd 0.6.3</p>
+1/8/2013, referencing rEFInd 0.6.4</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>
index 4eab151c9bb5c6c636403832a1f54dee442ce49b..4be866e180bf1a108cc546f0c32a872bbbed2e15 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Originally written: 3/14/2012; last Web page update:
-1/6/2013, referencing rEFInd 0.6.3</p>
+1/8/2013, referencing rEFInd 0.6.4</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>
index 85c2ed21eaaeaa7b83c5457887481cc9eaeb0e93..f4a091b92d3a9f248f17651361b5da0ad856e35f 100644 (file)
@@ -15,7 +15,7 @@
 href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Originally written: 3/14/2012; last Web page update:
-1/6/2013, referencing rEFInd 0.6.3</p>
+1/8/2013, referencing rEFInd 0.6.4</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>
index 5aa293685cf51c7b6d53d34daa046315f05d6312..75a29d0d7ec09bd0ba386c216af91e749b30c694 100644 (file)
@@ -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.3 " FSW_EFI_STRINGIFY(t) L" File System Driver"
+#define FSW_EFI_DRIVER_NAME(t) L"rEFInd 0.6.4 " FSW_EFI_STRINGIFY(t) L" File System Driver"
 
 // function prototypes
 
index e5fd60452a7c702de5c8b0933f9e5a011075a980..8268e409187dc7bd35a29317b27e6dd548a71284 100755 (executable)
@@ -29,6 +29,7 @@
 #
 # Revision history:
 #
+# 0.6.4   -- Copies ext2 driver rather than ext4 driver for ext2/3fs
 # 0.6.3   -- Support for detecting rEFInd in EFI/BOOT and EFI/Microsoft/Boot
 #            directories & for installing to EFI/BOOT in BIOS mode
 # 0.6.2-1 -- Added --yes option & tweaked key-copying for use with RPM install script
@@ -219,7 +220,11 @@ CopyDrivers() {
       BootFS=`blkid -o export $BootPart 2> /dev/null | grep TYPE= | cut -f 2 -d =`
       DriverType=""
       case $BootFS in
-         ext2 | ext3 | ext4) DriverType="ext4"
+         ext2 | ext3) DriverType="ext2"
+              # Could use ext4, but that can create unwanted entries from symbolic
+              # links in / to /boot/vmlinuz if a separate /boot partition is used.
+              ;;
+         ext4) DriverType="ext4"
               ;;
          reiserfs) DriverType="reiserfs"
               ;;
index 648da71929c1204b47bd507c8c69b0d6890c3a18..4dc8b0bb2d39d50302c17d6894ed1410439ecf95 100755 (executable)
--- a/mkcdimage
+++ b/mkcdimage
@@ -86,21 +86,23 @@ mkisofs -A "Bootable rEFInd" -V "rEFInd $Version" -volset "rEFInd $Version" \
 # Note: Seems to work on only a few systems, so I'm not distributing
 # the resulting images yet....
 #
-rm ../../refind-flashdrive-$Version.*
-cat $StartDir/flashparts.img refind-bin-$Version.img > refind-flashdrive-$Version.img
-cp $StartDir/README-flashdrive.txt ./
+rm -f ../../refind-flashdrive-$Version.*
+let FatSize=`du -s refind-bin-$Version.img | cut -f 1`
+let FatSize=($FatSize)+2048
+dd if=/dev/zero of=../../refind-flashdrive-$Version.img bs=1024 count=$FatSize
+sgdisk -n 1:2048:0 -t 1:EF00 -g ../../refind-flashdrive-$Version.img
+if [[ $? != 0 ]] ; then
+   echo "sgdisk failed! Exiting!"
+   exit 1
+fi
+dd if=refind-bin-$Version.img of=../../refind-flashdrive-$Version.img bs=512 seek=2048 conv=notrunc
+
 cd ..
-mv refind-bin-$Version refind-flashdrive-$Version
-zip -9r ../refind-flashdrive-$Version.zip \
-    refind-flashdrive-$Version/refind-flashdrive-$Version.img \
-    refind-flashdrive-$Version/docs refind-flashdrive-$Version/LICENSE.txt \
-    refind-flashdrive-$Version/install.sh \
-    refind-flashdrive-$Version/COPYING.txt \
-    refind-flashdrive-$Version/CREDITS.txt \
-    refind-flashdrive-$Version/README.txt \
-    refind-flashdrive-$Version/SHELLS.txt \
-    refind-flashdrive-$Version/README-flashdrive.txt
-mv refind-flashdrive-$Version/refind-flashdrive-$Version.img ../
+mkdir refind-flashdrive-$Version
+ln ../refind-flashdrive-$Version.img refind-flashdrive-$Version
+cp $StartDir/README-flashdrive.txt $StartDir/COPYING.txt $StartDir/NEWS.txt \
+   $StartDir/CREDITS.txt $StartDir/LICENSE.txt $StartDir/SHELLS.txt refind-flashdrive-$Version
+zip -9r ../refind-flashdrive-$Version.zip refind-flashdrive-$Version
 
 cd ../
 
index 152e2ad29d86552a50be59d41332a75208c99379..7b694729b9dd633d1ed9f11cd8cb5b7dd079c788 100644 (file)
@@ -1,6 +1,6 @@
 Summary: EFI boot manager software
 Name: refind
-Version: 0.6.3.2
+Version: 0.6.4
 Release: 1%{?dist}
 License: GPLv3
 URL: http://www.rodsbooks.com/refind/
index 99b9f7a8f88c655881c46b33f354d9530791a6d1..12375c4868e04382d7009e5e4aac02b37a79df22 100644 (file)
@@ -349,12 +349,15 @@ VOID ReadConfig(CHAR16 *FileName)
        MyFreePool(GlobalConfig.AlsoScan);
        GlobalConfig.AlsoScan = StrDuplicate(ALSO_SCAN_DIRS);
        MyFreePool(GlobalConfig.DontScanDirs);
-       if (SelfVolume->VolName) {
-          SelfPath = StrDuplicate(SelfVolume->VolName);
-       } else {
-          SelfPath = AllocateZeroPool(256 * sizeof(CHAR16));
-          SPrint(SelfPath, 255, L"fs%d", SelfVolume->VolNumber);
-       } // if/else
+       if (SelfVolume) {
+          if (SelfVolume->VolName) {
+             SelfPath = StrDuplicate(SelfVolume->VolName);
+          } else {
+             SelfPath = AllocateZeroPool(256 * sizeof(CHAR16));
+             if (SelfPath != NULL)
+                SPrint(SelfPath, 255, L"fs%d", SelfVolume->VolNumber);
+          } // if/else
+       }
        MergeStrings(&SelfPath, SelfDirPath, L':');
        GlobalConfig.DontScanDirs = SelfPath;
        MyFreePool(GlobalConfig.DontScanFiles);
index 7d6a29abf7a362624c06bc01de66397ecce45417..b4d93a8cc03de8ffd72a74f7f429a31758e7fa7d 100644 (file)
@@ -1640,7 +1640,7 @@ BOOLEAN IsIn(IN CHAR16 *SmallString, IN CHAR16 *List) {
 
 // Implement FreePool the way it should have been done to begin with, so that
 // it doesn't throw an ASSERT message if fed a NULL pointer....
-VOID MyFreePool(IN OUT VOID *Pointer) {
+VOID MyFreePool(IN VOID *Pointer) {
    if (Pointer != NULL)
       FreePool(Pointer);
 }
index 669cdb83fe873d95084218e8fad4b9f9f468d6ae..9f4578ff819cffc2fac065bda127670fc0398415 100644 (file)
@@ -128,7 +128,7 @@ static VOID AboutrEFInd(VOID)
 
     if (AboutMenu.EntryCount == 0) {
         AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT);
-        AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.6.3.2");
+        AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.6.4");
         AddMenuInfoLine(&AboutMenu, L"");
         AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer");
         AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012 Roderick W. Smith");
@@ -1032,7 +1032,7 @@ static VOID ScanEfiFiles(REFIT_VOLUME *Volume) {
          SplitVolumeAndFilename(&Directory, &VolName);
          CleanUpPathNameSlashes(Directory);
          Length = StrLen(Directory);
-         if ((Length > 0) && (StrLen(VolName) > 2) && (VolName[0] == L'f') && (VolName[1] == L's') &&
+         if (VolName && (Length > 0) && (StrLen(VolName) > 2) && (VolName[0] == L'f') && (VolName[1] == L's') &&
              (VolName[2] >= L'0') && (VolName[2] <= L'9'))
             VolNum = Atoi(VolName + 2);
          if ((Length > 0) && ((VolName == NULL) || (StriCmp(VolName, Volume->VolName) == 0) || (Volume->VolNumber == VolNum)))
@@ -2018,6 +2018,7 @@ efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
     FindLegacyBootType();
     if (GlobalConfig.LegacyType == LEGACY_TYPE_MAC)
        CopyMem(GlobalConfig.ScanFor, "ihebocm   ", NUM_SCAN_OPTIONS);
+    ScanVolumes();
     ReadConfig(CONFIG_FILE_NAME);
 
     InitScreen();
@@ -2030,7 +2031,7 @@ efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
     // further bootstrap (now with config available)
     SetupScreen();
     MokProtocol = SecureBootSetup();
-    ScanVolumes();
+//    ScanVolumes();
     LoadDrivers();
     ScanForBootloaders();
     ScanForTools();