Originally written: 9/23/2011; last update: 7/16/2017
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!
|Donate $1.00||Donate $2.50||Donate $5.00||Donate $10.00||Donate another value|
This page is part of my Managing EFI Boot Loaders for Linux document. If a Web search has brought you to this page, you may want to start at the beginning.
rEFIt is unusual in that it's not a full boot loader, in the sense that it can't load a Linux (or any other OS) kernel. (A kernel with EFI stub loader support is a partial exception, as described shortly.) Instead, rEFIt is a boot manager; its sole purpose is to launch other boot loaders. These include other EFI boot loaders that exist on the ESP, EFI boot loaders in a Mac's main partition, and as BIOS-style boot code detected in the disk's MBR and partitions' boot sectors.
Before reading further, be aware that rEFIt's author has discontinued the project; it hasn't been updated since 2010, and now bears a notice directing readers to my own project, rEFInd, which is a fork of rEFIt. Although some Mac users might still prefer rEFIt to rEFInd because of better Mac support in terms of installers and ancillary tools, rEFInd has significant improvements, particularly for use on UEFI-based PCs. In fact, rEFIt now has serious deficits on recent versions of OS X because of Apple's use of System Integrity Protection (SIP), which complicates rEFIt installation using OS X. SIP also complicates installation of rEFInd or any other boot loader or boot manager in OS X, but how to work around it is at least documented for rEFInd.
In the past, rEFIt was commonly used by Mac users who wanted to dual-boot with Windows; and indeed, it's still useful in that capacity. For most users, though, rEFInd is the better choice today because of its improvements over rEFIt and because I'm actively supporting it, whereas rEFIt's author has abandoned the original program.
Be aware that rEFIt has no Secure Boot support. Although you could theoretically sign it and launch it using shim, rEFIt would be unable to launch any programs except those that were signed by Microsoft (or whoever maintains the keys in your firmware). In theory, rEFIt would cope better with PreBootloader, which patches into the EFI's own Secure Boot system; but I've never tested it. Because rEFInd includes explicit Secure Boot support, it's the better choice if you need this support.
Nonetheless, rEFIt can be adequate if you're using ELILO or SYSLINUX to boot Linux but you also need to boot Windows or OS X. Similar comments apply if you're using GRUB Legacy or GRUB 2 but can't seem to get it to work with chainloading to your Windows or OS X boot loader.
rEFIt installation works as described in EFI Boot Loader Installation, with some caveats.
The most important issue is that the rEFIt binary packages available from its main Web page are built as mixed-mode ("fat") 32-/64-bit binaries. These work fine on Macs, but not on UEFI-based PCs. If you use such a computer, you must therefore track down a purely 64-bit binary and replace the original package's refit.efi file with the 64-bit file. Alternatively, you can use my thin utility to split the "fat" binaries into separate 32- and 64-bit varieties and use the latter. Ubuntu's refit package includes a suitable 64-bit binary, as /usr/lib/refit/x64/refit.efi. I also provide a version that's been patched with a few extensions (version 0.14-rws), although rEFInd takes these improvements much further. Nonetheless, if you want to try rEFIt on a UEFI-based PC, the following packages may be of interest:
Differences between this 0.14-rws version and the original 0.14 version are two new options, which are described under Configuring rEFIt. To compile it, I began with the original version and all of the Debian patches; the original source code doesn't compile properly under Linux.
When you install rEFIt, your ESP's rEFIt directory should contain a refit.efi file, a refit.conf configuration file, a refit.vollabel binary file, and an icons subdirectory that holds icons. You can also install a few special .efi files that enable rEFIt to provide additional functionality. Most notable among these are:
If you're installing rEFIt on a Mac, you should follow the instructions on the rEFIt Web site. Because a Mac's EFI can read HFS+ volumes, rEFIt is usually installed on the OS X system volume rather than on the ESP. Be aware, however, that some problem reports (such as this one and this one) have appeared concerning the rEFIt installer scripts causing corruption of large hard disks (those over about 500 MB) on Macs. Thus, you might want to stick with manual installation of rEFIt even on Macs. Also, as noted earlier, SIP (used on Macs beginning with OS X 10.11, aka El Capitan) will prevent installation of rEFIt on Macs using the Mac installer.
rEFIt's configuration file is refit.conf. It's well-commented and may need no adjustment, particularly on Macs. Three options deserve mention on UEFI-based PCs, though:
rEFIt requires no configuration to specify boot options; it probes the ESP, OS X partitions, and common locations for BIOS boot loaders to generate a menu of options. Although this is convenient, it does have its drawbacks: One problem is that your list of options can grow to ridiculous sizes if you install boot loaders to test them, or if you install EFI programs that aren't boot loaders (rEFIt tends to interpret them as if they were boot loaders). Another problem is that you can't give your boot loaders descriptive names, and sometimes the names are simply wrong—a Linux installation might be labelled as Windows, for example.
If you want to boot a Linux kernel with the EFI stub loader support, you can do so; however, rEFIt provides no mechanism to pass options to the kernel. Thus, if the kernel is to find its initial RAM disk and root filesystem, and if it's to use any other kernel options your system might need, you must include the options in the kernel binary itself. You can do this when you compile the kernel, as described on the EFI stub loader page.
When rEFIt is launched, it creates a display similar to the one shown here:
You can select your OS by using the arrow keys on the keyboard and pressing Enter, much as you would when using other boot loaders. If you use text mode, of course, the GUI display is replaced by a textual listing of options. The icons beneath the OS list provide access to rEFIt's tools—the shell, information about rEFIt, shutdown, and reboot options, in this case. You can sometimes pass special options to a specific boot by pressing the Insert key once it's highlighted.
I've already noted that rEFInd is a fork of rEFIt. Another such fork exists, too: Clover. I don't dedicate another page to this boot loader because, the last time I checked, Clover adds nothing to rEFIt that helps with booting Linux distributions. Instead, Clover is intended as a Hackintosh boot loader—that is, it helps users run OS X on non-Apple hardware.
Hackintosh configurations are technically violations of Apple's license agreement (which requires running the OS on Apple hardware), and so are of dubious legality in many areas. If you decide to use Clover, you can use it to chainload to another Linux boot loader; or you can use another boot manager to chainload to Clover or to your preferred Linux boot loader. There's little reason to use Clover in most non-Hackintosh environments, though.
One possible exception to this rule would be to use Clover on a BIOS-based computer. This is because Clover includes an optional EFI implemented as, essentially, a BIOS boot loader. The intent is to enable the EFI-based OS X to boot on a BIOS-based computer. You could use Clover to install other OSes in EFI mode on such computers. You might want to do this to make use of a hard disk larger than 2 TiB in a dual-boot configuration with Windows, which can't boot in BIOS mode from a GPT disk, for example. I don't have extensive notes on how to do this, though.
It might also be possible to use Clover to install more recent versions of OS X on older Mac hardware that officially does not support the newest OS X versions. I've never tried this, though, and I can't promise it would work.
In any event, if you need help with Clover, you should probably ask about it on a Hackintosh forum, even if you're not setting it up to run OS X on non-Apple hardware.
Ideally, rEFIt requires little maintenance. Because it auto-detects boot loaders, you shouldn't need to adjust it when you install a new OS, provided that OS installs its EFI boot files in a reasonable location. Because rEFIt doesn't directly boot Linux kernels, it requires no maintenance when you upgrade your kernels; however, you (or your distribution's scripts) must update your GRUB Legacy, GRUB 2, or ELILO configuration when you update your kernel.
Go on to "Using rEFInd"
Return to "Managing EFI Boot Loaders for Linux" main page
If you have problems with or comments about this web page, please e-mail me at firstname.lastname@example.org. Thanks.
Return to my main Web page.