Burg Bootloader Grub With Graphics Like Refit For Mac Average ratng: 5,0/5 3916 reviews
  • This page covers Intel-based Macs – all models since 2006, including MacBooks and ?MacBook Pros

Jan 01, 2017  BURG – is a beautiful boot loader based on GRUB. It uses a new object format which allows you to choose from: Linux, Windows, OSX, Solaris, FreeBSD, etc installed on your computer. Has a custom menu that works in both text and graphical mode.

Birthday

The most delicate part of installing operating systems, other than drive partitioning (which can destroy data), is configuring the boot loader, which can render your system unbootable. Best practice on ?IntelMacs has been changing with improved development of GRUB and supporting software.

This page only covers changing boot loaders, and does not cover the far more dangerous process of partitioning. For partitioning Intel Macs, see ?IntelMac/Partitioning.

On an Intel Mac, currently the best stable (lenny) configuration is:

  • chain loading by first loading rEFIt (in EFI), then using the BIOS version of GRUB 2 (grub-pc) to load Linux (or Windows).

This allows multi-booting to Linux, Mac OS X, and Windows, yields accelerated graphics, and does not require LILO to be run every time a kernel or init ramdisk change occurs.

In future, this may be replaced by:

  • a single stage boot, with the EFI version of GRUB 2 (grub-efi).

This is similar to rEFIt + GRUB 2 (BIOS version), but somewhat simpler. Currently there are limitations in Linux and X.org which need addressing (their video drivers need BIOS to initial video hardware for acceleration), but longer-term this should be an acceptable solution.

In the past, (etch?), practice was:

  • chain loading by first loading rEFIt (in EFI), then using LILO.

This worked, but had the usual limitations of LILO (system wouldn’t boot if forgot to run lilo after kernel changes, etc.), and was necessary because GRUB Legacy does not (easily) support Intel Macs.

Any OS can be selected as default if you use rEFIt (version 0.14+) then the BIOS version of GRUB 2, or just GRUB 2 in EFI.

First, make a rescue CD/DVD, or get a Live DVD (or Live CD, or Live USB) and test it by booting with it. If rEFIt is properly configured, you will be able to boot from discs or USB drives from the rEFIt screen. Alternatively, holding the Option key during boot should start the Apple Startup Manager, while holding the ‘C’ key during boot should boot to CD (or DVD) – these should work even if rEFIt is broken.

Having a separate working computer available is wise, in case of difficulty it allows you to research the problem without needing to reboot the non-working computer.

Worst case

Likely worst case – assuming you do not change partitions, which can destroy data – is to render the hard drive unbootable, requiring the use of a boot CD/DVD.

Booting from a CD/DVD should always work (assuming firmware is ok: you do not need to change firmware in any way to install Debian or change the boot loader), but in worst case scenario, you can always remove the hard drive, connect it to another computer (such as in a USB hard drive enclosure), and fix it there.

Similarly, if the firmware is corrupt, you can restore the firmware as described at Apple support (About the Firmware Restoration CD (Intel-based Macs)) or by taking it to an Apple store, but this should not prove necessary.

This is mentioned simply to alleviate fears – if you’re only changing boot loaders, not booting from hard drive (and requiring rescue CD/DVD) is likely the worst case.

Complexity in Intel Mac booting is due to the transition from BIOS firmware to the EFI system.

  • Mac Books now use EFI to boot
  • GRUB Legacy (prior to GRUB 2) cannot boot from EFI

In parallel with this is the transition from the BIOS system of partitioning (MBR) to the EFI system of partitioning (GPT). During this transition you’ll want to use a GPT/MBR hybrid system, but these are potentially very painful. Notably, the GPT and MBR partition tables can get out of sync, so after using non-GPT aware partitioning tools, you must use gptsync (either in Mac OS X or Debian) to sync the partition information. In squeeze, gdisk is a GPT-aware fdisk, but in lenny, you’ll need to use gptsync in addition to fdisk, and gptsync is useful if you’ve used Mac OS X partitioning.

Components

There are 3 components in the boot process, as described here:

  • Mac firmware
  • rEFIt (EFI bootloader) – chooses partition

  • GRUB (BIOS bootloader) – boots Debian

In general, once set up, you will not need to touch the firmware or rEFIt, but you can safely upgrade these without harm, and they will not touch your Linux partition.

Mac firmware

You mostly needn’t concern yourself with this, except as backup.

This is sometimes upgraded, which is a reason to keep Mac OS X around; see #Upgrading EFI Firmware, below.

It is also possible to:

  • use the built-in boot loader (hold “Option” on start up)
  • boot directly to CD (hold “C” on start up)
  • restore original firmware (erase settings and upgrades), in dire situations

See:

  • http://support.apple.com/kb/ht1379

  • http://www.hackerskitchen.com/mac-old/nvram-detailed.html#nvram

  • http://www.hackerskitchen.com/mac-old/#specific

for details on firmware hacking. These should not be necessary, but are included for reference.

rEFIt

rEFIt is an EFI bootloader, particularly for Intel Macs.

rEFIt can be installed via Mac OS X, which is the easiest way to use it. There is also refit, which is a re-packaging that has licensing that is conformant to Debian Free Software standards (rEFIt itself does not). The Debian package is not necessary to use rEFIt, and requires manual installation in Mac OS X, but it may prove useful.

rEFIt 0.14 (2010 March) has some useful enhancements, notably more configurable default boot, and detection of GRUB 2, so it is a recommended upgrade.

A subtlety is that the Mac firmware (specifically the PRAM (Programmable RAM), which stores variables) stores which partition to boot, which it calls “blessing”. Mac OS X is in the second partition, while rEFIt is installed in the first (EFI boot) partition (it also has files in the OS X partition, but copies these to the EFI boot partition). Blessing is done so the Mac will use rEFIt (or other EFI-capable bootloader) to boot.

A sub-subtlety is that when returning from Safe Sleep, Macs will boot – which should always be the Mac partition, not rEFIt, but due to a bug they may boot into the “blessed” partition, rather than into Mac. Thus rEFIt includes a program “rEFItBlesser” which blesses the Mac partition on startup, then blesses the rEFIt partition on shutdown. Thus you may sometimes boot into OS X instead of into the rEFIt menu, particularly after installing or upgrading rEFIt or following power loss or OS X Safe Sleep. Rebooting should bless rEFIt on shutdown and thus reboot into rEFIt. On reinstall you may need to reboot twice – the first time rEFItBlesser now starts, and blesses on shutdown, the second time it boots into rEFIt.

Bootloader

See No rEFIt menu after Safe Sleep or power loss for details.

There are many possible configurations, depending on whether you want to boot only Debian or wish to multi-boot, and what boot loader you use in EFI.

For concreteness and maximal compatibility, one may assume that one wishes to triple-boot to Mac OS X, Debian, and Windows (possibly non-EFI aware, e.g., prior to 2008). In that case one:

  • partitions in hybrid GPT/MBR (as is done by Boot Camp), with a GPT partition, the Mac OS X partition, the Debian Linux partition, and (optionally) a Windows partition,
  • boots via rEFIt in EFI, then GRUB 2 (BIOS version) on the Linux partition.

The other boot options, in order of complexity:

  • elilo (EFI LILO) in EFI, booting to Debian only
  • GRUB 2 in EFI, multi-booting, but not to Windows prior to 2008, and not providing accelerated graphics
  • rEFIt in EFI, multi-booting, using LILO on the Linux partition to boot Debian
  • rEFIt in EFI, multi-booting, using GRUB 2 (BIOS version) on the Linux partition to boot Debian

Note the key distinction between installing GRUB 2 in EFI versus on the partition. Concretely, grub-install /dev/sda installs GRUB 2 to the hard drive (EFI), while grub-install /dev/sda3 (note the “3”, indicating partition) installs GRUB 2 to the partition. (Formally, when installing in the partition, GRUB is in the “Partition Boot Record” or “PBR”; see Volume boot record.)

It is also possible to multi-boot without using rEFIt (holding down the “Option” key at boot to access the built-in Mac multi-boot), but rEFIt makes matters much easier.

On top of this is the distinction between using a pure GPT system (which to the eyes of MBR has only a single partition) versus using a hybrid GPT/MBR system, which to the eyes of MBR has up to 4 primary partitions, consisting of a GPT partition, the Mac OS X partition, the Debian Linux partition, and optionally a Windows partition.

If you wish to retain OS X, which you may desire either to use OS X applications, to easily upgrade EFI firmware, or simply as a backup system, then easiest is to use Boot Camp to resize/repartition, and retain the Mac OS X partition. Alternatively, you can wipe the hard drive and use Debian only (or Debian and Windows, or other combinations).

One can set any OS as the default, as follows:

  • If GRUB 2 is in EFI, one can set the default OS by configuring GRUB 2.
  • If rEFIt is in EFI, use rEFIt version 0.14+ and configure the refit.config file as documented there to select default system.

You can also triple-chain: first rEFIt → GRUB 2 on the Linux partition, then GRUB 2 to another OS (such as Windows).

  • See: ?Debian Install Tutorial for MacBook

Installing Grub2 has also been fine for Lenny. This is the grub-pc version which boot through rEFIt (not grub-efi). This is tested on amd64 and i386.

Lenny install CD can install GRUB as bootloader. Its dialogue can be misleading if you wish to install bootloader to MBR. You must create proper MBR/GPT hybrid. It can be done by:

  • gptsync command on Linux

  • menu from rEFIt boot loader

Switching from LILO to GRUB

If you wish to switch from lilo to GRUB (BIOS version), while still using rEFIt in EFI:

  • First, please read and understand some basics at: Debian Reference: 3.3. Stage 2: the boot loader.

  • Second, make rescue media (a rescue CD) using grub-rescue-pc, or some Live CD/DVD, such as Knoppix, and test it.

  • Third, check which partition Linux is on, either using gparted in Debian or the disc tool in Mac OS X. It is probably /dev/sda3 (third partition ‘3’ on primary drive ‘a’), assuming you’re also booting into Mac OS X (EFI is partition 1, Mac OS X is partition 2), but please check.

Also, you will need to ensure the rEFIt is at least at version 0.9 (0.14 is preferred); previous versions don’t play nice with GNU parted and GRUB 2; see [http://refit.sourceforge.net/doc/c4s5_parted.html rEFIt: Linux partition shows as EFI System (FAT)] for details.

Testing Live CD/DVD

To test your Live CD/DVD:

  • boot with it (via rEFIt or by holding ‘C’ during boot)
  • mount your Linux partition via

…or similar (above works in Knoppix), and then chroot to it:

At this point you should be booted as usual into your system, and should be able to edit files, run aptitude, etc.

Installing GRUB

Now you are ready to install the packages:

This is safe – it installs the packages, but does not change the boot loader.

grub-pc is GRUB 2 (BIOS version), while os-prober detects other OSes and automatically includes them in your GRUB menu (lenny version detects Windows, while squeeze version detects Windows and Mac OS X), and gptsync ensures that GPT and MBR partition information are in sync, just like it says on the tin.

Now for the actual installation:

Note that:

  • gptsync is likely no longer necessary in squeeze,
  • grub-install will likely warn you against installing in a partition (which we need for multi-boot) and need to be run with --force
  • you cannot use reiserfs in your main partition (or rather, should not); this is potentially very dangerous and risks FILESYSTEM DESTRUCTION (quoting grub-install), and you are recommended to instead convert your filesystem to ext3, as per Serverfault: How to convert a reiserfs partition to ext3? (make sure to update fstab to read ext3 instead of reiserfs)

At this point GRUB should be correctly installed.

The need for gptsync to be run in Linux is as follows: for GRUB 2 to successfully load, the partition number must be 83 (Linux). However, the gptsync included in rEFIt in Mac OS X does not set this partition number, and thus will not load GRUB 2; this may be fixed in rEFIt 0.14.

You may instead be able to run grub-install '(hd0)' ((hd0) in GRUB = sda in Linux), but this may instead install GRUB to EFI. Alternatively, grub-install '(hd0,3)' ((hd0,3) in GRUB = sda3 in Linux) may work.

To ensure that the menu is correctly updated, edit /etc/kernel-img.conf to include the following lines (these were previously documented at zless /usr/share/doc/grub/README.Debian.gz):

You can test that this updates GRUB by reconfiguring your running kernel:

(BTW, the difference between GRUB and LILO is that GRUB can successfully load the kernel even if the menu hasn’t been updated, since it can read the file system, while LILO simply fails. However, this requires manually finding and entering the path to the kernel.)

If you are ready to reboot, cross your fingers, and reboot, either interactively or via the command line:

(If you find yourself here after your system failed to reboot, we are very sorry – if you can identify the problem, please correct it above.)

Upgrading EFI Firmware

Upgrading EFI Firmware (which Apple does through Software Update) does not affect boot loaders in any way, and is completely fine – rEFIt, GRUB 2, elilo, LILO, and Windows should continue to work exactly as before.

In fact, upgrading EFI Firmware may improve boot loaders – early firmwares sometimes caused problems with failing to recognize keyboards, preventing you from selecting different boot options in GRUB 2.

You can see the latest EFI Firmware at Apple Support here: EFI and SMC firmware updates for Intel-based Macs.

  • /GRUB Legacy – out of date, but kept for reference

  • CategoryMacintoshComputer

by Rod Smith, rodsmith@rodsbooks.com

Originally written: 1/2011; Last Web page update: 6/17/2013 (last major update: 5/4/2012)

I'm a technical writer and consultant specializing in Linuxtechnologies. This Web page is provided free of charge and with no annoyingoutside ads; however, I did take time to prepare it, and Web hosting doescost money. If you find this Web page useful, please consider making asmall donation to help keep this site up and running. Thanks!

Donate $1.00Donate $2.50Donate $5.00Donate $10.00Donate another value

Note: This page is written using a rather elderly 32-bit Mac Mini as a reference, and using Ubuntu 12.04 as a reference. Developments in the last year have rendered certain of the procedures on this page sub-optimal. I've tried to point these out, but I haven't fully researched better replacements, and I lack the modern hardware on which to test some of the better methods on more recent 64-bit Macs. Thus, you may need to deviate from these instructions on modern computers.

The Problem

When installing Ubuntu Linux on an Intel-based Macintosh, most peoplefollow any of several guides available on the Internet, such as thisUbuntu document. Most of these guides, however, rely on features of theMacintosh that are intended to enable it to boot Windows. In particular,these guides typically end up creating a configuration that boots Linuxusing its Compatibility Support Module (CSM), which provides BIOSemulation on the Mac. In this mode, the Mac sets up a Basic Input OutputSystem (BIOS) layer that the OS can use, rather than rely on the ExtensibleFirmware Interface (EFI) that OS X uses to run on the computer. BIOSemulation is expedient, and it's the only way that most versions of Windowscan boot directly on a Mac, but it's got several drawbacks:

  • Longer boot times—BIOS emulation is widely regarded as slowing the boot process. I've not tested this effect myself, so I'm not sure how significant it is.
  • Reduced graphics card flexibility—On some models with multiple graphics chipsets, you can't select which chipset to use in BIOS mode, but you can in EFI mode. My own Mac isn't one of the affected models, so I can't comment further on this issue.
  • Use of a hybrid MBR—Intel-based Macs use the GUID Partition Table (GPT) rather than the more common Master Boot Record (MBR) partitioning system. Windows, however, can't boot from GPT disks on BIOS-based computers (which it thinks a Mac is thanks to Apple's BIOS emulation). Therefore, Apple uses an ugly and dangerous hack known as a hybrid MBR, in which a GPT data structure known as the protective MBR is altered to make the disk look like an MBR disk to Windows. The trouble is that hybrid MBRs frequently cause problems. In fact, even the Ubuntu installer often gets it wrong; it tries to be helpful by creating a hybrid MBR, but depending on your partition layout, it can create a partition table that the popular libparted-based partitioning tools won't touch.

As far as I can tell, BIOS emulation mode only works when a hybrid MBRis present on the hard disk or when a BIOS-bootable optical disk isinserted in the optical drive. Thus, you can't use BIOS emulation mode witha conventional GPT disk unless you plan to use a bootable optical disc toboot Linux.

Ubuntu can use the BIOS emulation and hybrid MBR that enable Windows toboot on Macs, but it doesn't need to! If you don't use thesefeatures, you won't see their problems. Hybrid MBRs, in particular, are aBad Idea (with a capital B and a capital I). I've seen numerous problemsreported at the Ubuntu Forums relatedto Ubuntu installations on Macs with hybrid MBRs, and more problems withsimilar configurations elsewhere. See my hybrid MBR Web pagefor a technical description of what they are and what can go wrong withthem. In short, they can get out of sync, cause confusion about whichpartition is which, and become damaged in frustrating ways. Whenever Ithink I've heard of every possible problem with hybrid MBRs, I stumbleacross a new one. You're better off without one, if that'spossible—and it is, if you dual-boot OS X and Linux but notWindows.

The trouble is that Ubuntu doesn't support installing to a Mac in EFImode, at least not as of version 12.04. (Some sources claim that this nowworks on some later versions, but I haven't tested this claim—indeed,I lack the hardware to do so!) The normal 64-bit discs can boot on PCs ineither BIOS mode or (if the PC supports it) UEFI mode (UEFI being,essentially, EFI 2.x). These discs reportedly do not boot on Macs(although I suspect they might with the help of rEFIt or rEFInd). The 32-bit Ubuntuinstallation discs lack EFI support. Ubuntu has also released 64-bit discimages for Macs. Ironically, these boot only in BIOS mode! Therefore, torid your computer of the dangerous hybrid MBR, you'll need to jump throughsome hoops. An alternative to all of this is to run Ubuntu in a virtualenvironment, such as VirtualBox.This can be a good solution in some cases, but it doesn't give Linux directaccess to the hardware and you'll lose some speed.

Some Caveats

Although my opinion is that Intel-based Macs are best booted using EFIand a GPT with a protective MBR rather than a hybrid MBR, there aredrawbacks to doing it this way. These include:

  • No Windows—As noted earlier, Windows relies heavily on BIOS emulation to boot on a Mac; therefore, if you want to triple-boot OS X, Linux, and Windows, you'll need a hybrid MBR to boot Windows. (You might, however, consider dual-booting OS X and Linux and run Windows in a virtual machine such as VirtualBox. This will eliminate the need for BIOS emulation and hybrid MBRs.) In theory, you could triple-boot with a hybrid MBR but still use EFI mode to boot Linux. I've not tested this, and the benefits are greatly reduced since you've still got the hybrid MBR on your hard disk.
  • Limited nVidia driver support—The biggest caveat to booting Linux in EFI mode on Macs is that some Linux video drivers, particularly for nVidia chipsets, don't work well when you boot in EFI mode. Thus, if you've got a Mac with an nVidia video chipset, you'll need to use the less capable fbdev drivers rather than the faster nVidia drivers. My own first-generation Intel Mac Mini uses an Intel video chipset and is not affected by this problem, so it doesn't bother me, but it could be a deal-breaker for you. I've seen some suggestions that these problems are less serious now (in April of 2012) than they were a year or two ago. The UEFIBooting page has some notes on specific Mac models' video support when booted in EFI mode; see the table under 'Tested Configurations' about 2/3 of the way down the page.
  • Missing hardware features—I've seen reports that Linux features such as screen brightness control and suspend/resume may not work correctly when booting using EFI. I don't use such features, so I can't comment personally.
  • Virtual terminals—I've seen reports that text-mode virtual terminals don't work from an EFI boot; however, this limitation doesn't apply to my computer. Perhaps it interacts with the video chipset, framebuffer driver use, kernel version, or some other variable.
  • OS architecture limitations—Older Intel-based Macs, such as my Mac Mini, use 32-bit CPUs and EFIs. Newer models come with 64-bit CPUs and EFIs. If you try to run a 32-bit distribution on a 64-bit EFI, you may not have access to EFI Runtime Services. This can reportedly limit some features, but I'm a bit unclear about the details. In my opinion, it's best to stick with 64-bit distributions on 64-bit hardware even on BIOS-based computers, so I don't see this as a big problem.

If you're running Fedora, CentOS, Mandriva, OpenSUSE, Gentoo, Debian, ormost other Linux distributions, the procedure I'm about to describe willprobably work; however, some details may differ. In fact, at one time oranother, I've installed Ubuntu, CentOS, and OpenSUSE on my Mac Mini, allusing EFI-mode boots. It's possible that your preferred distributionalready supports direct EFI installation, in which case the problem ofinstalling to a Mac in EFI mode may not exist. Check your distribution'sdocumentation to be sure.

I've tested this procedure only on my first-generation Intel-based MacMini. This computer uses a 32-bit CPU and 32-bit EFI, so I've tested onlythe 32-bit version of Ubuntu. It's possible that the 64-bit version hasdifferent requirements, or you may need to do things differently on newer64-bit Macs. You can check which type of EFI you've got with the followingcommand, typed in an OS X Terminal:

The result should include the string EFI32 or EFI64;the meaning of each should be obvious.

Prerequisites

Before proceeding, you'll need to download a few items:

  • Ubuntu Linux—You can obtain Ubuntu from its main Web site. The Web site describes the 32-bit version as 'recommended,' but lacks such a description for the 64-bit version. Don't worry, though; the 64-bit version works fine for almost everything. Remember that you'll probably need the Mac-specific version to boot on a Mac if you've got a 64-bit system. This version can be harder to track down; I used this torrent list. I recommend using the 64-bit version if you've got a 64-bit EFI, as described earlier. (Note that the string AMD64 appears in many places in reference to the 64-bit version of Ubuntu, but this version works fine on Intel's x86-64 CPUs; the AMD64 string is used simply because AMD invented the architecture.) I used a desktop version of Ubuntu 12.04 as a reference for this Web page, but the basic procedures should be similar for the server or alternate installer, as well as for Ubuntu variants such as Kubuntu and Edubuntu. I strongly recommend installing Ubuntu 12.04.2 or a more recent version rather than the original 12.04, since more recent versions come with kernels that include an EFI stub loader, which can simplify certain configuration procedures. Burn the disc and check that it includes directories called boot, install, isolinux, and so on. If you prefer to use a USB flash drive or similar device, you can do so. See Ubuntu's Installing Ubuntu Desktop page for instructions on creating bootable USB flash drives under various OSes.
  • GPT fdisk (gdisk)—Go to the GPT fdisk Sourceforge download page and download the Mac (gdisk-version.pkg) package. Install this package in OS X. Once you have Linux installed, you may want to install the Linux version from the Ubuntu repositories (it's in a package called gdisk.)
  • Super GRUB 2 Disk—Download this handy CD image from its home page. Be sure to get Super GRUB 2 Disk, not Super GRUB Disk. Burn the disc image like you burned the Ubuntu install disc image, or copy it to a second USB flash drive.
  • rEFInd—This is a fork of the earlier rEFIt Mac boot manager. It's part of the boot process as described on this Web page. Download either the ISO image or the binary .zip file from its Web page. If you're already using rEFIt, you can continue to use it rather than install rEFInd; however, rEFIt appears to have been abandoned, and rEFInd adds many improvements, so you may want to upgrade sooner or later.

With these items in hand, you can proceed with installing Ubuntu, andthen fix it up so that it doesn't use a hybrid MBR.

Installing Ubuntu

If you've already got a working dual-boot configuration with OS X andUbuntu, you can skip this section and jump ahead to 'Fixing the Installation.' You may be able to skip someof the steps in that section, too, such as rEFInd installation.

To install Ubuntu Linux 12.04 on an Intel-based Mac, follow thesedirections:

  1. If necessary, install Mac OS X.
  2. Boot into Mac OS X.
  3. If necessary, using OS X's Disk Utility, adjust the sizes of your partitions, making room for Linux. Note that resizing partitions is inherently dangerous, so back up your data before beginning! You may also want to create a FAT or unjournaled HFS+ ('Mac OS Extended') shared-data partition. The result might look like the below (the Linux partition in this screen shot could as easily be blank space; I've created it here mainly to show you where Linux will reside).
  4. If you haven't done so already, install the OS X version of GPT fdisk (gdisk).
  5. Open a Terminal program.
  6. In the Terminal program, type sudo gdisk /dev/disk0 (change /dev/disk0 to /dev/disk1 or above if your computer has multiple hard disks and the one on which you want to install Ubuntu isn't /dev/disk0).
  7. In gdisk, type p to display your partition table. Verify that it's the same one shown by Disk Utility. (Note that Disk Utility hides the EFI System Partition (ESP), which is normally the first partition on the disk.)
  8. If you created a Linux partition, type d in gdisk to delete it. Enter its number when prompted. (If you created multiple partitions for Linux with the intention of using them as you created them, you can skip this step.)
  9. In gdisk, type n to create a new partition. Give it a number of 99, hit the Enter key to use the default starting sector (the program may tell you it's changed the sector value, but you can ignore this message), +128M as the ending sector, and a hex code of ef02. This creates a BIOS Boot Partition of 128 MiB at the start of the largest block of free space on the disk. This partition will be used by the initial Ubuntu GRUB installation, but you can delete it once you've got native EFI booting working. 128 MiB is actually much bigger than is required for this purpose, but OS X likes to see gaps between partitions when it installs or upgrades the OS, so when you eventually delete this partition, it will leave the type of gap that OS X likes to see. (If you created all your Linux partitions in OS X's Disk Utility, you can put the BIOS Boot Partition in one of the gaps that Disk Utility leaves, but you may need to accept a default value or use +1M rather than enter +128M as the end value.) Type p again to see the results; they should look something like this (although I've got two OS X partitions):
  10. In gdisk, type w to save your changes. When asked, type y to confirm this choice.
  11. Insert your Ubuntu installation CD or DVD in the computer's drive, or plug in the USB flash drive that holds the Ubuntu installer.
  12. Restart your Mac and hold down the Option key (Alt if you're using a PC keyboard) as it restarts to get the Mac's OS selection screen.
  13. Pick the Ubuntu install disc from the options. (It may be mis-labelled as 'Windows.') The Ubuntu installer will start up. If you're using a CD and the installer doesn't boot, try using a USB flash drive instead.
  14. When the appropriate screen comes up, select Install Ubuntu and proceed with a normal Ubuntu installation, except as noted in the next few steps..
  15. When the Installation Type dialog box appears, select 'Something Else.'
  16. You will initially see a partitioning screen with your original OS X partitions, a biosgrub partition (what Ubuntu's partitioner calls the BIOS Boot Partition), and free space at the end of the disk. Select the free space and click Add to begin adding partitions..
  17. Create partitions for your Ubuntu installation in the free space near the end of the disk. (If you did this in OS X's Disk Utility, you should modify each partition by selecting it and clicking Change, then clicking the Format option and setting an appropriate filesystem and mount point.) I recommend creating the following partitions:
    • /boot—500 MiB, ReiserFS or ext2fs. This partition is optional. It can simplify some types of boot loader configurations, particularly if you want to use XFS, JFS, or Btrfs on your root (/) partition.
    • / (root)—5–25 GiB, ext4fs or your preferred Linux filesystem. This partition is absolutely vital. If you choose not to create a separate /home partition, make the root partition suitably larger. Take note of the number of this partition (7 in the below screen shot).
    • swap—1–2 times your system's RAM size.
    • /home—The rest of your available disk space, in ext4fs or your preferred Linux filesystem. You can merge this with the root (/) partition if you're short on space or plan to store little in the way of Ubuntu-specific files. Having a separate /home partition simplifies OS re-installations and some types of upgrades, though.
    When you're done, you'll see your new partitions displayed..
  18. Be sure that the 'Device for boot loader installation' option is set to /dev/sda (it will include a complete name for your hard disk—I used VirtualBox to collect the last few screen shots, but yours will show a real disk model number).
  19. Click Install Now. The installation will proceed as on a PC. You can find generic installation guides online, such as this one at the Ubuntu site.

When the installation finishes, the computer will reboot—straightinto Mac OS X! (See the below note if it doesn't boot, though.) You mustnow proceed with fixing it up in various ways..

Fixing the Installation

If you've followed the directions, your computer should now be bootedinto OS X, looking very much like it did before. Ubuntu isinstalled, however, and your disk has a hybrid MBR. You must now take stepsto return the hybrid MBR to a safer protective MBR, as the GPT standardrequires, and to set up a boot loader that enables you to select which OSto boot when the computer powers up. To do so, follow these steps:

  1. In OS X, launch a Terminal.
  2. Type sudo gdisk /dev/disk0 (changing the disk identifier as necessary). If at any point in the next few steps something seems wrong, type q to exit without saving your changes.
  3. In gdisk, type x. The command prompt will change to read Expert command (? for help):.
  4. In gdisk, type o. This command displays the contents of the hybrid MBR, which will probably consist of four partitions, one of which is of type 0xEE. The Ubuntu installer created a hybrid MBR (if one wasn't already present) in an attempt to be helpful.
  5. In gdisk, type n. The program won't seem to do anything; it will just show you another command prompt.
  6. In gdisk, type o again. The MBR contents should be different from before; there should just be one partition, of type 0xEE. This is a standards-compliant protective MBR.
  7. In gdisk, type w to save your changes.
  8. Unpack the rEFInd zip file you downloaded earlier. If you downloaded the CD image, mount it.
  9. In the Terminal, change into the directory created by unpacking the rEFInd zip file, or to the CD image's mount point.
  10. Type ./install.sh. This runs a script that installs rEFInd to your OS X boot partition and 'blesses' the program so that the Mac will use it when you next boot. If you're using whole-disk encryption on your OS X partition or if you want to install rEFInd to the ESP rather than to the OS X boot partition, type ./install.sh esp rather than ./install.sh.

    Update:If you're using a 3.3.0 or later kernel, you can skip most of the rest of this page, and instead perform a much simpler operation:

    1. Copy an EFI driver for the filesystem you used on /boot (or your root filesystem, if you didn't split off /boot) from the rEFInd package to the drivers subidrectory of the rEFInd installation directory, which is normally /EFI/refind. Note that you must copy the driver for your EFI's architecture—architecture codes appear in the filesystem drivers' filenames. If you did not use ext2/3/4fs or ReiserFS on /boot, this variant procedure will not work.
    2. When you reboot, highlight one of the Linux options that refers to a file called vmlinuz-version, where version is a version number.
    3. Press F2 or Insert twice to open a line editor.
    4. Add roroot=/dev/sda5 to the kernel options, changing/dev/sda5 to your root filesystem's identifier.
    5. Press Enter. This should boot Linux, although the screen might go completely blank for a few seconds.
    6. If it doesn't already exist, create a directory called /boot/efi.
    7. Edit /etc/fstab and add an entry to mount your ESP (normally) /dev/sda1 at /boot/efi. The entry should resemble the following:
    8. Type mount -a to mount the ESP at /boot/efi.
    9. Run the mkrlconf.sh script that comes with rEFInd, as in sudo ./mkrlconf.sh, typed from the directory where the file exists. This action should create a file called /boot/refind_linux.conf, which is briefly described in the Improving the Boot Method section.

    At this point, it should be possible to boot Linux by rebooting thecomputer and selecting one of the vmlinuz-version entriesin rEFInd's menu. If this doesn't work, continue with the main proceduredescribed here..

  11. Load /efi/refind/refind.conf into a text editor and locate the commented-out scanfor line. (If you installed rEFInd to the ESP, you'll need to mount the ESP and load the configuration file from there.) Uncomment the scanfor line by removing the leading hash mark (#) and then add a new item, cd, to the end of the line. It should read scanfor internal,external,optical,cd. (If you're using USB flash drives, add biosexternal instead of or in addition to cd.)
  12. Reboot. The rEFInd menu should appear, as shown below. Your menu options might differ from these, though. (This system has two OS X installations and a working OpenSUSE installation accessible via two entries.)
  13. Insert the Super GRUB 2 Disk into the computer's DVD drive.
  14. Restart your Mac by selecting the reboot item (the yellow icon with the circular arrow on the far right of the row of smaller icons).
  15. When the rEFInd menu re-appears, you'll see a new Linux icon on the far right of the display. (Depending on your screen's size and the number of OS loaders rEFInd discovers, you may need to scroll over to see it.) Select it.
  16. After a while, a GRUB 2 menu should appear. Pick the Detect any GRUB 2 installation (even if MBR is overwritten) option from the menu. Note: On my system, if I leave this menu up for more than two or three seconds, it hangs at this point. If yours is the same, you'll need to act quickly!
  17. A new menu should appear listing the GRUB 2 installations it could locate. On my system, this consisted of a grand total of one installation, identified as (hd1,gpt6)/grub/core.img, so there's no ambiguity: Select it! (Of course, your disk device numbers are likely to differ from mine.)
  18. At this point, a normal Ubuntu GRUB 2 menu should appear, enabling you to boot Ubuntu as you would on a PC. (The screen may go completely black for part of the boot process. Don't worry; this is normal.)
  19. When the login screen appears, log into your Ubuntu installation.
  20. Click Dash Home (the icon in the upper-left corner of the screen) and type term in the search field. A few icons should appear, including one called Terminal. Click it to launch a Terminal program.
  21. Type sudo mkdir /boot/efi to create the standard mount point for the EFI System Partition (ESP).
  22. Type sudo mount /dev/sda1 /boot/efi to mount the ESP at /boot/efi. (Change /dev/sda1 if your ESP has an unusual partition number.) You can use gdisk to check the ESP's number, if you like.
  23. Type ls /boot/efi. You should see the contents of the ESP, which will probably consist of a single directory called efi. There could be other files and directories, but probably not many of them. If it appears you've mounted the wrong partition, review your partition layout and the commands you've typed to mount the ESP. Proceed only when you're sure you've mounted the ESP at /boot/efi.
  24. Type sudo apt-get install grub-efi. This replaces the BIOS version of GRUB that the Ubuntu installer installed with an EFI-based version of GRUB. In fact, there are two different EFI-enabled versions of GRUB: grub-efi-ia32 and grub-efi-amd64. Installing grub-efi installs the package that's appropriate for your system, assuming you installed the optimum architecture. If you're running a 32-bit version of Ubuntu on a recent 64-bit OS X firmware, you may need to explicitly install grub-efi-amd64. Installing grub-efi also installs a number of dependencies, such as efibootmgr
  25. Type sudo mkdir /boot/efi/efi/ubuntu/. This command creates a home for GRUB on the ESP. (Note the doubled-up efi in the path. This is not a typo.)
  26. Type sudo grub-install. (Recent versions of GRUB seem to require an option. Pass it your ESP's device filename, as in sudo grub-install /dev/sda1.) You'll see a few messages appear on the screen, including a couple of 'fatal' errors about EFI variables. Ignore those messages. They're caused by the fact that you're booted in BIOS mode, and they're irrelevant because the task they're intended to perform will be handled by rEFInd.
  27. Type ls -l /boot/efi/efi/ubuntu. You should see two files, boot.efi and either grubia32.efi or grubx64.efi, depending on your platform. They should have the same file size; in fact, they're identical.
  28. If both of those files are present, remove one of them; having both will just clutter your rEFInd menu unnecessarily. If you somehow wound up with just one file, though, leave it in place. If you don't see either file, then do some troubleshooting now; you won't be able to boot into Ubuntu without one of those files (or some other EFI boot loader for Linux).

At this point, if you did everything exactly correctly, you should beable to boot Ubuntu in EFI mode. When you reboot, your rEFInd menu shouldinclude a new Ubuntu option, as shown below. Select it and your GRUB menushould appear; it will resemble the one shown earlier, although it may usea different font and color scheme.


Once you're satisfied with your ability to boot and use both Linux andOS X, you can delete the BIOS Boot Partition from your hard disk. It'sno longer needed, but OS X may want free space where it resides in thefuture. You can use GParted, parted, gdisk, or any otherpartitioning tool to delete this partition.

Although my own system doesn't seem to suffer from its presence, it'sconceivable that some Macs will experience boot-time slowdowns because ofthe presence of the BIOS version of GRUB's boot code in the hard disk'sMBR. If you think this is happening, you can type sudo dd if=/dev/zero of=/dev/sda bs=440 count=1 toeliminate it. Be very careful with that command, though! Beabsolutely positive that you've typed it correctly, and particularlythe bs=440 and count=1 numbers. If you write too muchdata in this way, you can damage your partition table!

If you've not used it before, you may want to peruse the rEFInd documentation. Althoughthe default options work well for most systems, you may want to tweak someof them or install ancillary programs, such as an EFI shell program.

You may want to add an entry for the ESP to your /etc/fstabfile so that it will be mounted automatically whenever you boot. Thefollowing line will do the trick on most systems:

You can tweak this entry as you see fit. The /dev/sda1specification works for most people, but you could change it to use aLABEL or UUID specification, as inUUID=2B68-9A85. This will make the configuration more robustshould the disk identifier change because you boot with a different diskconfiguration or you repartition the disk. If you this change, you'll needto obtain the label or UUID value for your ESP. Typing blkid /dev/sda1 (changing the device identifier, ifnecessary) should do this.

Improving the Boot Method

Although GRUB 2 often works in a configuration like the one I've justdescribed, it also often misbehaves. For instance, on my brand-new Ubuntu12.04 installation (less than 24 hours old as I type), GRUB 2 often givesme a 'file not found' error when selecting the Ubuntu entry; then if Iselect the same entry, it boots fine. On other installations andcomputers, GRUB 2 has resulted in kernels that begin to boot and then fail;it's begun returning a grub> emergency prompt for no apparentreason; and it's done a poor job of detecting OSes and kernels. What'smore, on my Mac, Ubuntu's packaging system keeps trying to replacegrub-efi with grub-pc, which would result in anunbootable installation if allowed to continue! For these reasons, GRUB 2is the EFI boot loader that I favor least. That said, some peoplesay it works acceptably for them, and it's Ubuntu's default boot loader, soUbuntu's installation scripts usually do a tolerable to good job ofautomatically configuring it. These are the reasons I provided instructionsfor installing GRUB 2. I personally try to remove it as soon as possibleafter an installation, or at least shove it out of the way so that it can'tdo any real damage.

If you have problems with it, you can switch to another EFI boot loader.My EFI Boot Loaders forLinux Web page describes the options that are available. If you'vefollowed the directions on this page, my personal favorite is actuallyquite close to working: If you can install a Linux kernel with the EFI stubloader support enabled, rEFInd can launch it directly, without the helpof GRUB. The major hurdle to overcome on this score is that Ubuntu 12.04installs a 3.2.0 kernel, but the EFI stub loader became available with the3.3.0 kernel. This is why I recommended installing Ubuntu 12.04.2, 13.04,or a more recent version of Ubuntu; these versions ship with 3.3.0 or laterkernels. In broad outline, to use the EFI stub loader, you must:

  1. Obtain a kernel with an EFI stub loader, either by finding a suitable binary package or by compiling the kernel yourself.
  2. Optionally install an EFI driver for the filesystem you used on your Linux /boot partition. This isn't required, but it can simplify setup by enabling the EFI to load the kernel from its normal home in /boot. If you omit this step, you'll need to copy the kernel to a FAT or HFS+ volume. (The possibility of using this approach to booting is why I recommended creating a separate ReiserFS or ext2fs /boot partition; those are the Linux filesystems for which EFI drivers are available.)
  3. Install the new kernel and initial RAM disk in a place where the ESP can read it. As just noted, this can be /boot if you've installed an EFI driver. If not, the ESP can work, at least in theory (it doesn't on my Mac Mini, but that may be a model-specific problem). An HFS+ volume is also an option. (Odd as it may sound, converting /boot to use HFS+ can work quite well on Macs—but not on UEFI-based PCs.)
  4. Either rename the Linux kernel file so that it includes a .efi extension or uncomment the scan_all_linux_kernels option in rEFInd's refind.conf file. The former method works best if you have kernels that do not have EFI stub loader support enabled in directories that rEFInd will scan. The latter method works well if you're using a distribution that provides suitable kernels and you've loaded drivers so that the EFI can read /boot.
  5. Create a file called refind_linux.conf in the directory that holds your kernels. This file holds kernel option sets, one per line, as in:

This refind_linux.conf file is taken from a workinginstallation, but you'll need to adjust the UUID value for your owncomputer if you use it as a model. When you boot, rEFInd uses the firstline's options by default, but by pressing F2 or Insert when you select akernel in rEFInd, you can choose another option set.

The beauty of this method of booting is that you don't need to changeconfiguration files when you install a new kernel—just place it, witha suitable filename, in the kernel directory and rEFInd will detect it anduse the options from refind_linux.conf to boot it. Although GRUB 2is supposed to be as easy to use, it accomplishes this goal by running aseries of configuration scripts whenever you install a new kernel andupdating its configuration file. This process can go wrong, particularly inadvanced or exotic setups.

If you have problems with GRUB 2, ELILO and GRUB Legacy are the bestoptions, as described on my EFI boot loaders page.Each has advantages and disadvantages. On my Mac Mini, ELILO doesn't work,but that may be a model-specific quirk. Unfortunately, you'll need toadjust either boot loader's configuration whenever you upgrade your kernel,so keep an eye on that!

Going Further

You can consult the UEFIBooting page tolearn about more options for GRUB on a Mac. Some of that page'sinstructions didn't work for me, though; presumably they're either specificto particular Mac models or the page is dated.

I hope you've found this Web page informative. I realize the proceduresoutlined here are complex, but in my opinion, it's worth getting rid of theflaky and dangerous hybrid MBR even if doing so requires investing theeffort described here.

Burg Bootloader Grub With Graphics Like Refit For Mac

References

The following sites have additional information that you might finduseful:

  • The Linux on Your Apple Mac wiki has a variety of information on Linux/Mac integration.
  • The Arch Linux on a Macbook Air 4,2 site describes an EFI-only installation of Arch Linux on a Mac.
  • I guess Arch people like Macbooks, since there's another site with instructions on installing Arch to a Macbook Air using an EFI boot.
  • The Booting Linux Inside a MacBook Using GRUB and EFI page outlines the process with an emphasis on Debian and Ubuntu.
  • My EFI Boot Loaders for Linux page describes all of the major Linux boot loaders and boot managers for EFI-based computers.
  • My Linux on UEFI: A Quick Installation Guide page provides helpful tips on how to install Linux on EFI-based systems.
  • You can learn about additional tweaks for rEFInd at its official documentation site.

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

Return to my main Web page.

Most Viewed News