Managing EFI Boot Loaders for Linux:
Using rEFIt

by Rod Smith, rodsmith@rodsbooks.com

Originally written: 9/23/2011; last update: 7/7/2018

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
Donate with PayPal
Donate with PayPal
Donate with PayPal
Donate with PayPal
Donate with PayPal

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 a boot manager, not a boot loader; 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 macOS because of Apple's use of System Integrity Protection (SIP), which complicates rEFIt installation using macOS. SIP also complicates installation of rEFInd or any other boot loader or boot manager in macOS, but how to work around it is at least documented for rEFInd. A second fork of rEFIt, Clover, is primarily a Hackintosh boot loader—it enables booting macOS on non-Apple hardware. You could use Clover in a non-Hackintosh environment much as rEFIt was intended to be used, but outside of Hackintosh needs, Clover offers few advantages over rEFInd, or even the original rEFIt.

When to Use rEFIt

Overall, conditions when you might want to consider using rEFIt include:

Conditions in which you should probably not use rEFIt include:

Although I've noted more advantages than disadvantages to rEFIt, some of the disadvantages are pretty major, and rEFInd inherits most of rEFIt's advantages, adds more advantages, and removes most of rEFIt's disadvantages. In practice, if you use rEFIt, you're likely to have to use it in conjunction with ELILO, SYSLINUX, GRUB Legacy, or GRUB 2. When used in this way, you'll need to factor in the follow-on boot loader's features, such as whether it can read a kernel from a Linux filesystem. Overall, rEFIt is not a good choice for most modern installations.

Installing rEFIt

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 macOS 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 macOS 10.11, aka El Capitan) will prevent installation of rEFIt on Macs using the Mac installer.

Configuring rEFIt

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, macOS 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. Such a kernel must also normally be located where rEFIt will detect it (such as a subdirectory of EFI) and have a .efi filename extension.

Using rEFIt

When rEFIt is launched, it creates a display similar to the one shown here:


rEFIt presents a GUI menu for selecting your boot OS.

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.

Clover: Another rEFIt Variant

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 macOS 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 macOS 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 macOS on older Mac hardware that officially does not support the newest macOS 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 macOS on non-Apple hardware.

Maintaining rEFIt

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. The biggest maintenance headache for rEFIt, at least on a Mac, is related to the fact that it's no longer supported, but the Mac environment has moved on. Apple has introduced a new Apple Filesystem (APFS), changed the location of its boot loader, implemented SIP, and done other things that make it increasingly difficult for rEFIt to work. These issues don't affect non-Apple installations, of course, but rEFIt's main advantages used to lie on Macs.


Go on to "Using rEFInd"

Return to "Managing EFI Boot Loaders for Linux" main page


copyright © 2011–2018 by Roderick W. Smith

If you have problems with or comments about this web page, please e-mail me at rodsmith@rodsbooks.com. Thanks.

Return to my main Web page.