X-Git-Url: https://code.delx.au/refind/blobdiff_plain/5664ed3ea160466286aa2c5711f8094b0ec7003b..a0a4ba44f4dc01c86499c0fc80730940b53f75c6:/docs/refind/installing.html diff --git a/docs/refind/installing.html b/docs/refind/installing.html index 84e70ac..3da2d2b 100644 --- a/docs/refind/installing.html +++ b/docs/refind/installing.html @@ -11,10 +11,11 @@

The rEFInd Boot Manager:
Installing rEFInd

-

by Roderick W. Smith, by Roderick W. Smith, rodsmith@rodsbooks.com

-

Originally written: 3/14/2012; last Web page update: 3/26/2012, referencing rEFInd 0.2.3

+

Originally written: 3/14/2012; last Web page update: +10/6/2012, referencing rEFInd 0.4.6

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!

@@ -89,27 +90,123 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com


- + +

Installing rEFInd Using install.sh under Linux or Mac OS X

-

Once you've uncompressed a rEFInd binary zip file, you can copy the entire refind directory into your EFI System Partition's (ESP's) EFI directory on UEFI-based PCs, so that rEFInd resides in EFI/refind. If you've tried rEFInd using a CD-R image file, you can copy the files from the EFI/refind directory on the CD to create an equivalent directory on the ESP. To avoid confusion, though, you should delete the rEFInd binary file for the CPU type your computer does not use. To the best of my knowledge, all UEFI-based PCs use 64-bit CPUs, so you should keep the refind_x64.efi binary and delete the refind_ia32.efi binary. Most Intel-based Macs also have 64-bit EFI implementations, so you should do the same thing; but very early Intel-based Macs have 32-bit EFIs (and sometimes 32-bit CPUs), which require the refind_ia32.efi file. You can determine whether your Mac needs the x86-64 or IA32 build by typing the following command in a Mac Terminal window:

+ + +

If you're using Linux or Mac OS X, the easiest way to install rEFInd is to use the install.sh script. Under Linux, this 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 esp option.

+ +

Before running this script under Linux, you should ensure that your ESP is mounted at /boot or /boot/efi, as described in more detail in the Installing rEFInd Manually Using Linux section. (If you installed Linux in EFI mode, chances are your ESP is properly mounted.) This precaution isn't necessary under OS X.

+ +

A sample run under Linux looks something like this:

-$ ioreg -l -p IODeviceTree | grep firmware-abi
-
+# ./install.sh +Installing rEFInd on Linux.... +ESP was found at /boot/efi using vfat +Copied rEFInd binary file refind_x64.efi + +Copying sample configuration file as refind.conf; edit this file to configure +rEFInd. + + +Installation has completed successfully. + +

The output under OS X is a bit different:

+ +
+$ ./install.sh
+Not running as root; attempting to elevate privileges via sudo....
+Password:
+Installing rEFInd on OS X....
+Installing rEFInd to the partition mounted at '/'
+Copied rEFInd binary file refind_ia32.efi
+
+Copying sample configuration file as refind.conf; edit this file to configure
+rEFInd.
+
 
-

The result should read either EFI32 or EFI64, indicating that you should use the refind_ia32.efi or refind_x64.efi binary, respectively.

+WARNING: If you have an Advanced Format disk, *DO NOT* attempt to check the +bless status with 'bless --info', since this is known to cause disk corruption +on some systems!! -

Of course, before you can install the files, you must be able to access the ESP. The details of this task vary from one OS to another. If you have a choice, I recommend using Linux for rEFInd installation on UEFI PCs and OS X on Macs. (On Macs, you can optionally use OS X's main partition rather than the ESP for this purpose.) Windows provides relatively primitive tools for accessing the ESP and manipulating the EFI's boot list. I also describe some options for naming rEFInd that may be useful on some systems. Finally, I describe how to install some extra tools that you may find useful but that are not included with rEFInd.

+NOTE: If you want to boot an OS via BIOS emulation (such as Windows or some +Linux installations), you *MUST* edit the ///EFI/refind/refind.conf +file's 'scanfor' line to include the 'hdbios' option, and perhaps +'biosexternal' and 'cd', as well. + + +Installation has completed successfully.
+ +

In either case, the details of the output differ depending on your existing configuration and how you ran the program. Some details that can affect how the script runs include the following:

+ + + +

In any event, you should peruse the script's output to ensure that everything looks OK. install.sh displays error messages when it encounters errors, such as if the ESP is mounted read-only or if you run out of disk space. You may need to correct such problems manually and re-run the script. In some cases you may need to fall back on manual installation, which gives you better control over details such as which partition to use for installation.

-

Installing rEFInd Using Linux

+

Installing rEFInd Manually Using Linux

-

Accessing the ESP is easiest from Linux: The ESP is usually mounted at /boot/efi. You can verify that this is the case by using the df command:

+

On a UEFI-based PC, you'll normally install rEFInd to the ESP, which is usually mounted at /boot/efi. You can verify that this is the case by using the df command:

 $ df /boot/efi
@@ -117,25 +214,23 @@ Filesystem     1K-blocks  Used Available Use% Mounted on
 /dev/sda1         191284 16604    174681   9% /boot/efi
 
-

This example shows that /dev/sda1 is mounted at /boot/efi, which is a typical configuration. (The ESP can be on another disk or partition, but /dev/sda1 is the most common place for an ESP.) If your output shows /boot or / under the Mounted on column, then your ESP isn't mounted. If you get a df: `/boot/efi': No such file or directory error message, then the /boot/efi directory doesn't even exist. In such cases, you may need to jump through some extra hoops, as described on my EFI Boot Loader Installation page.

+ + +

This example shows that /dev/sda1 is mounted at /boot/efi, which is a typical configuration. (The ESP can be on another disk or partition, but /dev/sda1 is the most common place for an ESP.) If your output shows /boot or / under the Mounted on column, then your ESP isn't mounted. (An exception is if you're mounting the ESP at /boot. This is an unusual configuration. If you're using it, you can proceed, making suitable adjustments to subsequent commands.) If you get a df: `/boot/efi': No such file or directory error message, then the /boot/efi directory doesn't even exist. In such cases, you may need to jump through some extra hoops, as described on my EFI Boot Loader Installation page.

Assuming the ESP is mounted at /boot/efi, you can install the rEFInd files as follows (you must be root to issue these commands, or precede each of them with sudo):

    -
  1. Type cp -r refind /boot/efi/EFI/ from the refind-version directory in which the refind directory exists. This copies all the files that rEFInd needs to work.
  2. +
  3. Type cp -r refind /boot/efi/EFI/ from the refind-version directory in which the refind directory exists. This copies all the files that rEFInd needs to work. Note that this includes all of rEFInd's drivers.
  4. Type cd /boot/efi/EFI/refind to change into rEFInd's new directory on the ESP.
  5. -
  6. Type rm refind_ia32.efi to remove the IA32 binary if you're using an x86-64 (64-bit) system; or type rm refind_x64.efi to remove the x86-64 binary if you're using an x86 (32-bit) system. You can optionally rename the binary you keep as refind.efi, but this isn't required.
  7. - -
  8. Rename the configuration file by typing mv refind.conf-sample refind.conf. Consult the Editing the rEFInd Configuration File page for information on how to adjust your options.
  9. +
  10. Type rm refind_ia32.efi to remove the IA32 binary if you're using an x86-64 (64-bit) system; or type rm refind_x64.efi to remove the x86-64 binary if you're using an x86 (32-bit) system. You can optionally rename the binary you keep as refind.efi, 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 refind_x64.efi.
  11. - +
  12. Rename the configuration file by typing mv refind.conf-sample refind.conf. Consult the Editing the rEFInd Configuration File page for information on how to adjust your options.
  13. On a UEFI-based system, type efibootmgr -c -l \\EFI\\refind\\refind_x64.efi -L rEFInd to add rEFInd to your EFI's list of available boot loaders, which it stores in NVRAM. (Adjust the path to the binary as required if you install somewhere else.) You may need to install this program on some systems; it's a standard part of most distributions' repositories.
  14. @@ -150,43 +245,98 @@ Filesystem 1K-blocks Used Available Use% Mounted on

    On some systems, efibootmgr won't do what you expect. On such systems, you may have better luck renaming the rEFInd files, as described in the Alternative Naming Options section.

    -

    Installing rEFInd Using Mac OS X

    +

    Installing rEFInd Manually Using Mac OS X

    - - -

    The procedure for installing rEFInd on a Mac is similar to that for installing it under Linux, except that you can install it to the OS X's system directory rather than to the ESP, and you must use the bless utility rather than efibootmgr. To be precise, you should follow these steps:

    - -
      - -
    1. Open a Terminal window in which you'll type the following commands.
    2. +

      Before installing rEFInd on a Mac, you must determine whether it uses a 32-bit or 64-bit EFI implementation. Most Intel-based Macs have 64-bit EFIs, so you should use the refind_x64.efi file with them; but very early Intel-based Macs have 32-bit EFIs (and sometimes 32-bit CPUs), which require the refind_ia32.efi file. You can determine whether your Mac needs the x86-64 or IA32 build by typing the following command in a Mac Terminal window:

      -
    3. If you want to install rEFInd on your ESP, you must first mount it. You can do this by typing mkdir /Volumes/esp followed by sudo mount_msdos /dev/disk0s1 /Volumes/esp. Note that this step is optional. Also, you may need to change /dev/disk0s1 to something else if your ESP is at an unusual location. Use a tool such as my GPT fdisk (gdisk) to examine your partition table to find your ESP if necessary.
    4. +
      +$ ioreg -l -p IODeviceTree | grep firmware-abi
      +
      -
    5. Type sudo mkdir -p /efi/refind to create a suitable directory for rEFInd. If you want to place rEFInd on your ESP, you should adjust the pathname appropriately, as in /Volumes/esp/efi/refind if you mounted your ESP as described in the previous step. Alternatively, you can use the Finder to create the directory.
    6. +

      The result should include either EFI32 or EFI64, indicating that you should use the refind_ia32.efi or refind_x64.efi binary, respectively.

      -
    7. Copy the files in the refind subdirectory of the rEFInd binary package to the like-named directory you've just created. You can do this in the Finder or by typing sudo cp -r refind/* /efi/refind/ in your Terminal window after changing into the rEFInd package's main directory.
    8. + -
    9. Remove the file for the version of rEFInd you're not using, as in sudo rm /efi/refind/refind_ia32.efi on a Mac with a 64-bit EFI or sudo rm /efi/refind/refind_x64.efi on a Mac with a 32-bit EFI.
    10. +

      The procedure for installing rEFInd on a Mac is similar to that for installing it under Linux, except that you can (and probably should) install it to OS X's system partition or some other HFS+ partition rather than to the ESP, and you must use the bless utility rather than efibootmgr. To be precise, you should follow these steps:

      -
    11. If this is your first installation, type sudo mv /efi/refind/refind.conf-sample /efi/refind/refind.conf (adjusting the path as necessary) to rename the sample configuration file so that it will serve as a real configuration file. (Again, you can do this with the Finder, if you prefer.)
    12. +
        -
      1. Type sudo bless --setBoot --folder /efi/refind --file /efi/refind/refind_x64.efi to tell the computer to use rEFInd as the primary boot program. (Adjust the path and filename as necessary if you're placing rEFInd somewhere else or using the 32-bit version.) If you're installing rEFInd to an ESP (or to any partition other than the OS X system partition), you may need to add --mount /Volumes/mounpoint to the command, where /Volumes/mounpoint is the location where you've mounted the partition.
      2. +
      3. Open a Terminal window in which you'll type the following + commands.
      4. + +
      5. If you want to install rEFInd on your ESP, you must first mount it. You + can do this by typing mkdir /Volumes/esp followed by + sudo mount -t msdos /dev/disk0s1 /Volumes/esp. Note + that this step is usually optional, and it makes the procedure a bit + more complex, so you might want to forego it. On the other hand, + installing to the ESP is required if you're using the whole-disk + encryption feature of OS X 10.7. Note that you may need to change + /dev/disk0s1 to something else if your ESP is at an unusual + location. Use a tool such as my GPT fdisk (gdisk) + to examine your partition table to find your ESP if necessary.
      6. + +
      7. Type sudo mkdir -p /efi/refind to create a suitable + directory for rEFInd. If you want to place rEFInd on the ESP or some + other partition, you should adjust the pathname appropriately, as in + /Volumes/esp/efi/refind. Alternatively, you can use the Finder + to create the directory.
      8. + +
      9. Copy the files in the refind subdirectory of the rEFInd binary + package to the like-named directory you've just created. You can do + this in the Finder or by typing sudo cp -r refind/* + /efi/refind/ in your Terminal window after changing into the + rEFInd package's main directory.
      10. + +
      11. Remove the file for the version of rEFInd you're not using, as in + sudo rm /efi/refind/refind_ia32.efi on a Mac with a + 64-bit EFI or sudo rm /efi/refind/refind_x64.efi on a + Mac with a 32-bit EFI.
      12. + +
      13. Optionally, remove the drivers directory for the architecture you're + not using—/efi/refind/drivers_ia32 or + /efi/refind/drivers_x64, as appropriate. 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. See the page on drivers for more on this topic. Note + that Apple's firmware includes its own HFS+ driver, so the HFS+ driver + provided with rEFInd is useless on Macs.
      14. + +
      15. If this is your first installation, type sudo mv + /efi/refind/refind.conf-sample /efi/refind/refind.conf + (adjusting the path as necessary) to rename the sample configuration + file so that it will serve as a real configuration file. (Again, you + can do this with the Finder, if you prefer.)
      16. + +
      17. "Bless" rEFInd by typing one of the following two commands: +
          +
        • If you're installing rEFInd to an ordinary HFS+ volume, type sudo bless --setBoot --folder /efi/refind --file + /efi/refind/refind_x64.efi. (Adjust the path and filename as + necessary if you're placing rEFInd somewhere else or using the + 32-bit version.)
        • +
        • If you're installing rEFInd on the ESP, type sudo bless --mount /Volumes/esp --setBoot --file + /Volumes/esp/efi/refind/refind_x64.efi, adjusting the mount + point and exact path to the file as appropriate for your + installation.
        • +
        + As per the Warning earlier, do not use bless's + --info option to try to confirm the change to the boot status + unless you're certain you do not have an Advanced Format hard + disk.
      -

      When you reboot, your Mac should bring up the rEFInd menu, and should continue to do so thereafter. If you make changes that break this association, you can re-run the bless command (if necessary, restoring the rEFInd files first). This might be necessary after installing system updates from Apple.

      +

      When you reboot, your Mac should bring up the rEFInd menu, and should continue to do so thereafter. If you make changes that break this association, you can re-run the bless command (if necessary, restoring the rEFInd files first). This might be necessary after installing system updates from Apple or if you upgrade rEFInd to a newer version.

      -

      If you're replacing rEFIt, you may discover that rEFInd works on the first boot, but the system reverts back to rEFIt or a direct boot to OS X on the second boot. To fix this problem, you can remove the rEFItBlesser program, which is located at /Library/StartupItems/rEFItBlesser. This program attempts to keep rEFIt set as the default boot loader, but it also has the purpose of protecting the computer from launching the wrong OS after waking from sleep. If you want that protection, my suggestion is to install rEFIt and rEFItBlesser and then replace the refit.efi file with refind_x64.efi or refind_ia32.efi (renaming it to refit.efi. Used in this way, rEFInd will still look for its own configuration file, refind.conf, so you'll need to move it but not rename it. If you don't move the icons from the rEFInd package, your icons will continue to look like rEFIt icons, and you'll be missing the new icons for specific Linux distributions that rEFInd provides.

      +

      If you're replacing rEFIt, you may discover that rEFInd works on the first boot, but the system reverts back to rEFIt or a direct boot to OS X on the second boot. To fix this problem, you can remove the rEFItBlesser program, which is located at /Library/StartupItems/rEFItBlesser. This program attempts to keep rEFIt set as the default boot loader, but it also has the purpose of protecting the computer from launching the wrong OS after waking from sleep. If you want that protection, my suggestion is to install rEFIt and rEFItBlesser and then replace the refit.efi file with refind_x64.efi or refind_ia32.efi (renaming it to refit.efi. Used in this way, rEFInd will still look for its own configuration file, refind.conf, so you'll need to move it but not rename it. If you don't move the icons from the rEFInd package, your icons will continue to look like rEFIt icons, and you'll be missing the new icons for specific Linux distributions that rEFInd provides. One final caveat: It's conceivable that rEFItBlesser is what's causing filesystem corruption for some users, so if you've been having this problem with rEFIt, it might be worth disabling this program and not using it with rEFInd.

      If you want to remove rEFInd from your system, you can delete its files. The Mac will revert to booting using whatever standard boot loader it can find. Alternatively, you can use bless to bless another EFI boot loader. The GUI Startup Disk utility in System Preferences provides a simplified interface that enables you to select which OS X installation to boot, but it doesn't look for non-Apple boot loaders, so you can't use it to enable rEFInd.

      -

      Installing rEFInd Using Windows

      +

      Installing rEFInd Manually Using Windows

      To install rEFInd under Windows, you must first find a way to access the ESP, which Windows normally hides from view. One way to accomplish this goal, and to proceed forward once the ESP is accessible, is as follows:

      @@ -207,11 +357,17 @@ Filesystem 1K-blocks Used Available Use% Mounted on
    13. Type del refind_ia32.efi to delete the unused 32-bit version of rEFInd. (Windows only supports EFI boots on 64-bit EFI implementations and in 64-bit versions of Windows.)
    14. +
    15. Optionally type rd /s drivers_ia32 to delete the drivers_ia32 directory and its contents. You may also want to selectively delete some of the drivers in the drivers_x64 directory, depending on your needs. Unnecessary drivers may slow the rEFInd start process. See the page on drivers for more on this topic.
    16. +
    17. Type rename refind.conf-sample refind.conf to rename rEFInd's configuration file.
    18. +
    19. Type bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi to set rEFInd as the default EFI boot program. Note that {bootmgr} is entered as such; that's not a notation for a variable.
    20. + +
    21. If you like, type bcdedit /set {bootmgr} description "rEFInd description" to set a description (change rEFInd description as you see fit).
    22. +
    -

    Unfortunately, I know of no Windows tool that's equivalent to efibootmgr under Linux or bless under OS X. (Such a tool must exist, but I don't know what it is. If you do, please e-mail me a pointer!) This can make adding rEFInd to your system a bit tricky, particularly if your firmware provides few boot options. In the best of all possible worlds, you'll be able to use your firmware's user interface to add rEFInd to your firmware's own boot manager; however, far too many EFI implementations lack even this modest capability. If you're stuck in this boat, you have several options, such as:

    +

    At this point, when you reboot, rEFInd should appear as your new default boot program. One caveat: My only EFI Windows installation uses UEFI DUET, which "forgets" its boot options upon reboot. Thus, I'm unable to test the last two steps (which were provided by a helpful user) myself. If it doesn't work for you, you have several other options, such as: