]> code.delx.au - refind/blobdiff - docs/refind/installing.html
Version 0.6.3 release.
[refind] / docs / refind / installing.html
index 14f72ac62d553fa92577ffe37e06b19644cfcab7..64a89cfaf934ff7fa57b6d7cd37434d5c009b1fa 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:
-12/31/2012, referencing rEFInd 0.6.2-2</p>
+1/6/2013, referencing rEFInd 0.6.3</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>
@@ -128,7 +128,15 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
    <li class="tight"><a href="#efishell">Installing rEFInd Manually Using an EFI Shell</a></ul></li>
 
-<li class="tight"><a href="#naming">Alternative Naming Options</a></li>
+<li class="tight"><a href="#naming">Alternative Naming Options</a>
+
+   <ul>
+
+   <li class="tight"><a href="#mvrefind">Using <tt>mvrefind.sh</tt></li>
+
+   <li class="tight"><a href="#manual_renaming">Renaming Files Manually</li>
+
+   </ul></li>
 
 <li class="tight"><a href="#upgrading">Upgrading rEFInd</a></li>
 
@@ -156,6 +164,8 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Either command produces output similar to that described for <a href="#installsh">using the <tt>install.sh</tt> script,</a> 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.</p>
 
+<p>Since version 0.6.3, the installation script makes an attempt to install rEFInd in a bootable way even if you run the script from a BIOS-mode boot, and therefore the RPM and Debian packages do the same. I cannot guarantee that this will work, though, and even if it does, some of the tricks that <tt>install.sh</tt> uses might not last for long. You might therefore want to use <tt><a href="#mvrefind">mvrefind.sh</a></tt> to move your rEFInd installation to another name after you boot Linux for the first time from rEFInd.</p>
+
 <p>Since version 0.6.2-2, my package files have installed the rEFInd binaries to <tt>/usr/share/refind-<tt class="variable">version</tt></tt>, the documentation to <tt>/usr/share/doc/refind-<tt class="variable">version</tt></tt>, and a few miscellaneous files elsewhere. Upon installation, the package runs the <tt>install.sh</tt> script to copy the files to the ESP. This enables you to re-install rEFInd after the fact by running <tt>install.sh</tt>, should some other tool or OS wipe the ESP or should the installation go awry. In such cases you can <a href="#installsh">use <tt>install.sh</tt></a> or <a href="#manual">install manually.</a></p>
 
 <a name="installsh">
@@ -171,7 +181,7 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
 
 <p>Under Linux, the <tt>install.sh</tt> script installs rEFInd to your disk's ESP. Under Mac OS X, the script installs rEFInd to your current OS X boot partition by default; but you can install to your ESP instead by passing the script the <tt>--esp</tt> option. Under either OS, you can install to something other than the currently-running OS by using the <tt>--root <tt class="variable">/mountpoint</tt></tt> option. (See <a href="#table1">Table 1</a> for details.)</p>
 
-<p>Before running this script under Linux, you should ensure that your ESP is mounted at <tt>/boot</tt> or <tt>/boot/efi</tt>, as described in more detail in the <a href="#linux">Installing rEFInd Manually Using Linux</a> section. (If you installed Linux in EFI mode, chances are your ESP is properly mounted.) This precaution isn't necessary under OS X.</p>
+<p>Before running this script under Linux, you should ensure that your ESP is mounted at <tt>/boot</tt> or <tt>/boot/efi</tt>, as described in more detail in the <a href="#linux">Installing rEFInd Manually Using Linux</a> section. (If you installed Linux in EFI mode, chances are your ESP is properly mounted.) This precaution isn't necessary under OS X. If you run <tt>install.sh</tt> from a BIOS/legacy-mode boot, particularly on a computer that also runs Windows, you should be aware that the tricks the script uses to install itself from BIOS mode are rather delicate. You can convert to a more conventional configuration using the <a href="#mvrefind"><tt>mvrefind.sh</tt> script.</a></p>
 
 <p>A sample run under Linux looks something like this:</p>
 
@@ -636,19 +646,83 @@ $ <b>ioreg -l -p IODeviceTree | grep firmware-abi</b>
 <h2>Alternative Naming Options</h2>
 </a>
 
+<p>Some EFI implementations do a poor job of honoring the boot options set via Linux's <tt>efibootmgr</tt> or other tools. You may also lack access to such utilities, such as if you must install rEFInd in Windows. In such cases, you may need to change the boot loader's name so that the EFI will see it as the default boot loader. rEFInd should then boot when your NVRAM lacks information on specific boot loaders to use. Broadly speaking, there are two alternative names that are most useful:</p>
+<ul>
+
+<li><tt class="userinput">EFI/BOOT/boot<i>arch</i>.efi</tt>&mdash;This name
+    is the official EFI fallback filename. It's most commonly used on
+    bootable removable disks, but it can be used on hard disks. It's
+    typically used only if no NVRAM entry points to a valid boot
+    loader.</li>
+
+<li><tt class="userinput">EFI/Microsoft/Boot/bootmgfw.efi</tt>&mdash;This
+    filename has no official special standing in the EFI specification, but
+    as a practical matter, many EFI implementations use it as a fallback
+    boot loader in addition to or instead of
+    <tt>EFI/BOOT/boot<i>arch</i>.efi</tt>. In fact, some give it such a
+    high precedence that you can't boot anything that's not given this
+    name!
+
+</ul>
+
+<p>If you need to use one of these names, or something more exotic, you can do so in either of two ways: You can <a href="#mvrefind">use the <tt>mvrefind.sh</tt> script</a> to move your installation in one step, or you can <a href="#manual_renaming">move and rename your files manually.</a></p>
+
+<a name="mvrefind">
+<h3>Using <tt>mvrefind.sh</tt></h3>
+</a>
+
+<p>The easiest way to move a rEFInd installation, at least in Linux, is to use the <tt>mvrefind.sh</tt> script. If you installed from one of my RPM or Debian packages, this script should be installed in <tt>/usr/sbin</tt>, so you can use it like a regular Linux command; otherwise you'll need to install it to your path yourself or type its complete path. Either way, it works much like the Linux <tt>mv</tt> command, but you pass it the directory in which a rEFInd installation appears and a target location:</p>
+
+<pre class="listing">
+# <tt class="userinput">mvrefind.sh /boot/efi/EFI/BOOT /boot/efi/EFI/refind</tt>
+</pre>
+
+<p>This example moves rEFInd from <tt>/boot/efi/EFI/BOOT</tt> to <tt>/boot/efi/EFI/refind</tt>. It differs from <tt>mv</tt> in several ways:
+
+<ul>
+
+<li>The script renames rEFInd in a way that's sensitive to its source and
+    destination directories&mdash;for instance, <tt>mvrefind.sh</tt> knows
+    that rEFInd (or shim, for Secure Boot installations) must be called
+    <tt>bootx64.efi</tt> on a 64-bit installation in
+    <tt>/boot/efi/EFI/BOOT</tt>, so it looks for rEFInd under that name
+    when copying from this directory, or it renames rEFInd to that name
+    when copying to it.</li>
+
+<li>The script creates a new NVRAM entry for rEFInd when it copies to any
+    location but <tt>EFI/BOOT</tt> or <tt>EFI/Microsoft/Boot</tt>. It
+    refuses to copy to such locations if it's not run from an EFI-mode
+    boot.</li>
+
+<li>The script knows enough to back up existing boot loaders stored in
+    <tt>EFI/BOOT</tt> or <tt>EFI/Microsoft/Boot</tt> when copying to these
+    locations. For the former location, the script backs up
+    <tt>EFI/BOOT</tt> as <tt>EFI/BOOT-rEFIndBackup</tt>; for the latter, it
+    moves <tt>EFI/Microsoft/Boot/bootmgfw.efi</tt> to
+    <tt>EFI/Microsoft/bootmgfw.efi</tt>.</li>
+
+</ul>
+
+<p>The <tt>mvrefind.sh</tt> script is likely to be useful in resolving boot problems&mdash;if your system won't boot, you can try copying the installation to <tt>/boot/efi/EFI/BOOT</tt>, <tt>/boot/efi/EFI/Microsoft/Boot</tt>, and <tt>/boot/efi/EFI/refind</tt> in turn, testing the boot process after each attempt. (These filenames all assume your ESP is mounted at <tt>/boot/efi</tt>.) You could also copy a BIOS-mode install from <tt>/boot/efi/EFI/BOOT</tt> or <tt>/boot/efi/EFI/Microsoft/Boot</tt> to <tt>/boot/efi/EFI/refind</tt> to make it more robust against Windows repairs (assuming your firmware isn't broken).</p>
+
+<a name="manual_renaming">
+<h3>Renaming Files Manually</h3>
+</a>
+
 <p>Some EFI implementations do a poor job of honoring the boot options set via Linux's <tt>efibootmgr</tt> or other tools. You may also lack access to such utilities, such as if you must install rEFInd in Windows. In such cases, you may need to change the boot loader's name so that the EFI will see it as the default boot loader. rEFInd should then boot when your NVRAM lacks information on specific boot loaders to use. To do this, follow these steps:</p>
  
 <ol>
 
 <li>Access your ESP and install rEFInd to it, as described in earlier sections.</li>
 
-<li>Look for an existing directory called <tt>EFI/BOOT</tt> or <tt>EFI/Microsoft/BOOT</tt>. If neither of these directories exist, skip the next step. (Note that FAT is case-insensitive, so the name may vary in case.)</li>
+<li>Look for an existing directory called <tt>EFI/BOOT</tt> or <tt>EFI/Microsoft/Boot</tt>. If neither of these directories exist, skip the next step. (Note that FAT is case-insensitive, so the name may vary in case.)</li>
 
-<li>Rename the existing directory or boot loader file to something else. For <tt>EFI/BOOT</tt>, try renaming it to <tt>EFI/Oldboot</tt>. For <tt>EFI/Microsoft/BOOT</tt>, move or rename the <tt>bootmgfw.efi</tt> file it contains. For instance, you can move it to <tt>EFI/Microsoft</tt>. This will keep the boot loader accessible to rEFInd's menu, while preventing the firmware from launching it automatically.</li>
+<li>Rename the existing directory or boot loader file to something else. For <tt>EFI/BOOT</tt>, try renaming it to <tt>EFI/Oldboot</tt>. For <tt>EFI/Microsoft/Boot</tt>, move or rename the <tt>bootmgfw.efi</tt> file it contains. For instance, you can move it to <tt>EFI/Microsoft</tt>. This will keep the boot loader accessible to rEFInd's menu, while preventing the firmware from launching it automatically.</li>
 
-<li>Rename/move your <tt>EFI/refind</tt> directory to <tt>EFI/BOOT</tt>. If you're working from <tt>EFI/Microsoft/BOOT</tt>, you should move the contents of your rEFInd directory to <tt>EFI/Microsoft/BOOT</tt>.</li>
+<li>Rename/move your <tt>EFI/refind</tt> directory to <tt>EFI/BOOT</tt>. If you're working from <tt>EFI/Microsoft/Boot</tt>, you should move the contents of your rEFInd directory to <tt>EFI/Microsoft/Boot</tt>.</li>
 
-<li>Rename <tt>EFI/BOOT/refind_x64.efi</tt> to the name of the boot loader it's replacing&mdash;it should become <tt>EFI/BOOT/bootx64.efi</tt> or <tt>EFI/Microsoft/BOOT/bootmgfw.efi</tt>.</li>
+<li>Rename <tt>EFI/BOOT/refind_x64.efi</tt> to the name of the boot loader it's replacing&mdash;it should become <tt>EFI/BOOT/bootx64.efi</tt> or <tt>EFI/Microsoft/Boot/bootmgfw.efi</tt>.</li>
 
 </ol>
 
@@ -684,7 +758,16 @@ $ <b>ioreg -l -p IODeviceTree | grep firmware-abi</b>
     icons directory (<tt>icons-backup</tt>, which holds the original icons,
     whereas <tt>icons</tt> holds the icons from the new package). Normally
     this just wastes some disk space; but if you've customized your icons,
-    you'll need to copy your altered icons back.</li>
+    you'll need to copy your altered icons back. Since version 0.6.2,
+    <tt>install.sh</tt> has searched for rEFInd in several locations on the
+    ESP, and will upgrade whatever it finds.</li>
+
+<li>Under an RPM- or Debian-based Linux distribution, you can use your
+    package system to install a newer version of the RPM or Debian package
+    that I provide. This will upgrade the files in your Linux filesystem
+    and re-run the <tt>install.sh</tt> script, so as with the previous
+    options, you'll waste a little disk space on duplicated icons, but the
+    process should otherwise work quite well.</li>
 
 </ul>
 
@@ -782,6 +865,8 @@ $ <tt class="userinput">sudo rm -r /EFI/refind</tt>
 
 <p>Many variants of both of these commands are possible on both OS X and Linux. For instance, you'd probably use <tt>sudo</tt> on Ubuntu; and if you installed rEFInd to your ESP on a Mac, you'd need to first mount the ESP and include its path in the <tt>rm</tt> command.</p>
 
+<p>If you installed via an RPM or Debian package in Linux, using your package manager will remove the package files, but not the files that the installer places on your ESP. Thus, you must uninstall those files manually, as just described. To complete the job, you'll also have to remove <tt>/boot/refind_linux.conf</tt>, and perhaps the <tt>/etc/refind.d</tt> directory.</p>
+
 <p>From Windows, you must reverse the directions for <a href="#windows">installing in Windows</a>&mdash;type <tt class="userinput">mountvol S: /S</tt> to mount your ESP as <tt>S:</tt>, then navigate to the <tt>S:\EFI</tt> directory and delete the <tt>refind</tt> subdirectory.</p>
 
 <p>In any of these cases, when the computer boots and cannot find the rEFInd files, it should move on to the next boot loader in its list. In my experience, some EFI firmware implementations remove boot loaders they can't find from their NVRAM lists, so nothing else will be required, provided you have another working boot loader in your firmware's list. If your firmware doesn't automatically clean up its NVRAM entries, rEFInd's entry will do little harm; however, you can delete it with the <tt>efibootmgr</tt> utility in Linux:</p>
@@ -805,7 +890,7 @@ Boot0007* CD/DVD Drive</pre>
 
 <hr />
 
-<p>copyright &copy; 2012 by Roderick W. Smith</p>
+<p>copyright &copy; 2012&ndash;2013 by Roderick W. Smith</p>
 
 <p>This document is licensed under the terms of the <a href="FDL-1.3.txt">GNU Free Documentation License (FDL), version 1.3.</a></p>