How to install Linux on a Macintosh computer

tux_apple

So, you’ve got one of those shiny Macbook Pro retinas?

..But you are a Linux fiend, and now you want to rid yourself of the poor mans’ Unix that Apple call Mac OS X? This tutorial is for you!

This is an advanced tutorial which works at the command line and can cause irreparable damage to your data. If you are a novice, it is not recommended that you undertake this tutorial. If you do proceed, make sure you have backed everything up with TimeMachine or such like tools. I must also acknowledge the awesome work of Jessie Frazelle, her blog entitled ‘Linux or Death’ was the inspiration for this article, and much of it is shamelessly cribbed from there, simply because it worked, unlike any other blog on the subject we found on the interwebs!

This tutorial has been tested on a late 2013 Macbook Pro 15″, however it should work with any EFI based Mac (more on that in a bit). EFI based Mac’s started around 2008 (you can check the list of the Apple EFI systems here). This should include Macbook Pros, Macbook Air, iMac etc…

I am also working on the basis that you want to keep Mac OS X on your hard drive and that you wish to dual-boot it at any time. You should have plenty of free space on your disk drive (the more the better), so either delete some cruft or move some of your old data onto a separate external archive hard drive (because I know you got one or ten of them lying around!).

Finally, we used Mac OS X 10.11.1, ‘El Capitan’, which is the latest OS X at the time of the release. El Capitan introduced a ‘security feature’ called ‘SIP’ (System Integrity Protection) which you will additionally have to overcome if you are using El Capitan or newer. More on that in a bit. We will be installing Ubuntu, specifically Ubuntu GNOME 15.10, but this should apply to any Linux distro more or less, although your mileage may vary with Video stuff particularly.

The tutorial you are about to read has six main sections. These are:

  • Installing the EFI boot manager
  • Downloading and converting your Linux distro of choice
  • Partitioning your hard drive
  • Installing Linux
  • Finishing up and nice to have items.

Installing the EFI boot manager

EFI stands for Extensible Firmware Interface and is now pretty much commonplace in Macs and PCs across the industry. It replaced the trusty old BIOS system that PCs had used since the 1980s. Installing Linux on a BIOS based machine was trivial, but now with Apple’s take on EFI on their customised hardware, it can be a little challenging. No worries, this is the Ultimate Linux Newbie Guide. We got this!

Disabling SIP

Before we go ahead and install rEFInd, we will need to take care of that pesky SIP (System Integrity Protection) rubbish. There are a couple of ways to do this, but we found the easiest way to do so, is pop your system into recovery mode and issue a command from the terminal there. There is a bit more information on this process over here.

To enter recovery mode on your Mac, shut your machine down completely. Give the machine around 30 seconds and then switch back on. Now quickly hold down the Command and R key at the same time until at least you hear the Apple ‘chime’ sound. Shortly you will enter recovery mode. I recommend plugging in an Ethernet cable to do this, however it is possible to do with WiFi.

Once you are in the Recovery tool, enter the Utilities menu up on the top bar, and click on Terminal.

Issue the following command:

csrutil disable

That’s it! Restart your computer and you are done. If you ever want to re-enable the SIP functionality (why?), then you can transpose disable with enable using the same steps.

Now you should head back to the terminal. We are ready to install refind!

Download rEFInd

The red circle indicates where to download rEFInd

The red circle indicates where to download rEFInd

rEFInd is a boot-loader for EFI based machines. Think of it like bootcamp, or GRUB for GRUB 🙂 You’ll want to download rEFInd from the rEFInd website:

Now, if you take a look around the rEFInd website, you’ll see it looks like the guy that wrote it believes in punishing everyone that wants to use it. It took us about 20 minutes just to find the frigging download link! So the ULNG has taken the time to go through all the pertinent steps to make it shit tons easier for you!

The version of rEFInd that we used is 0.10.0, and we used the zip archive version. Once you download the binary, you are going to need to start the rest of your work from the Terminal, so open up the Terminal from the Utilities folder on your mac and head over to your Downloads folder where you saved rEFInd to.

If the zip archive is not already unzipped, unzip it using the unzip command and head into the newly created refind-bin-0.10.0 folder:

$unzip refind-bin-0.10.0.zip

$cd refind-bin-0.10.0

We now want to install rEFInd, and we should install all the EFI drivers just in case we need them at any time. rEFInd 0.10.0 offers a substantially more improved installer than previous versions. Which is nice 🙂

$sudo ./refind-install --alldrivers

Now it’s time to edit the EFI config file, but you will need to mount that hidden EFI partition first. Thankfully, rEFInd has a little tool you can use to mount the partition:

$sudo mountesp

Edit /Volumes/ESP/EFI/refind/refind.conf. Like us, you may find the refind.conf file is in /Volumes/ESP/EFI/BOOT, instead of a folder called refind. This is probably because we fiddled around with rEFInd and it’s predecessor, rEFIt before. Just because.

$vi refind.conf (or nano, if you are that way inclined. Just not emacs!).

locate the line that says scanfor and edit it to say:

scanfor internal

If no such line exists, add it into the file near the top.

Load the linux file system driver. Check for a line that starts fs0. If no such line exists, add it as below, otherwise edit it:

fs0: load ext4_x64.efi

fs0: map -r

Save the file and quit your editor. That’s pretty much it for the rEFInd bit. That is the hardest part over and done with. If you want to be sure it worked, you should power off your machine and power on again. If you see a grey screen with the rEFInd logo, then it has worked. You should be able to chose the Mac OS X logo and hit return to start up OS X again.

Downloading and converting your Linux distro image of choice

Next, unless you haven’t already downloaded the iso image of your choice, it’s time to go grab it. For this particular demonstration, we are using Ubuntu 15.10, however most other distros should work. Using more hard-ass systems like Arch or Slackware, or even Debian, will be more challenging. This is challenging enough, so do what you will, but we will stick to the easier distros for now!

Make sure you download the x64 version of the distribution you choose, if there is an EFI boot version, choose that also.

Write Linux ISO to USB stickNext, you need to convert the iso file into an image file that Mac OS X recognizes so that you can stick it on a USB stick to boot from. Although you are back at the terminal for this, thankfully it’s not that onerous a task.

cd (directory where you downloaded the distro to)

hdiutil convert -format UDRW -o <<filename you want.iso.img>> <<filename of the download.iso>>

(so, in other words, hdiutil convert -format UDRW -o ubuntu1510.iso.img ubuntu-gnome-15.10-desktop-amd64.iso would convert the latter file into ubuntu1510.iso.img, which would be in the RAW, or more specifically UDRW format).

Mac OS likes to rename the file with a .dmg extension, to avoid confusion over that, it’s probably best that you rename it. A simple mv command will sort that one:

mv ubuntu1510.iso.img.dmg ubuntu1510.iso.img

(renames the file ubuntu1510.iso.img.dmg to ubuntu1510.iso.img).

Next, quickly type in diskutil list in the terminal. It should list one disk drive (if you have any external drives connected, disconnect them for now). Take a note of your Mac OS disk. It should be called /dev/disk0. Look for tell tale signs in there like ‘Macintosh HD’

Next, locate that USB stick of yours and whap it into the usb port. Please note that you want to have an empty USB stick, because this process will destroy any existing data on it.

Once you have the USB stick plugged in and all settled down, issue the following command:

diskutil list

You should see a list of disks like the one in the screenshot to the above. Note the red box around /dev/disk2. You can see that it has a Windows FAT32 partition, our usb stick is 8 GB big, you can see the size there is 8.1GB, which is clearly much smaller than the main hard drive, which is 500GB in size. Just make sure you identify which disk your usb stick is and take a note of that. The one we are using is /dev/disk2.

Now you need to unmount the usb disk, to do that issue the following command

diskutil unmountDisk /dev/disk2

Obviously if your USB stick is not disk2 then change it to suit. It should tell you that the unmount of all volumes on the disk were successful. Now all we have to do is copy the UDRW version of the iso image to your USB stick. For that, we will use trusty old dd 🙂

sudo dd if=ubuntu1510.iso.img of=/dev/rdisk2 bs=1m

The things you have to be aware of here:

  1. This is a fully destructive command. It will blow up any disk you point it to, that’s why we made sure you got the note of that USB stick in diskutil list, above.
  2. if= is short for input file, meaning the input file is the name of the iso file you converted into the iso.img file. We are using the shortened filename here just for an example filename.
  3. of= is short for output file. The output file, is in fact a device. In this case, we are using (r)disk2; disk2 obviously is the drive we noted earlier, we use the r in front of it because that allows raw device access, so its marginally quicker.
  4. bs=1m means block size, 1 megabyte. You don’t have to use this option, however it will significantly increase the speed of the transfer to your USB stick.

 

Mac OS is going to bitch and moan that you have a volume it can’t read inserted. If it says Eject, click that, otherwise type diskutil eject /dev/disk2.

Partitioning your hard drive

This part chops your disk up in the way you want it. Back in the bad old days of Linux, you used to have to download a partition manager and use that to resize your disk. These days, that’s mainly gone, but because of Journaled, Encrypted HFS+ partitions, that’s not a good idea to let a Linux based partition manager loose with, unless you want to toast your Mac OS data.

Using Disk Utility to resize your Mac OS X hard drive partition for Linux

Using Disk Utility to resize your Mac OS X hard drive partition for Linux

Thankfully, this can easily be solved. In your Utilities apps folder, you’ll find Disk Utility. If you like, quickly scan your hard drive for errors, just to make sure it’s all toot sweet before we get down to business. Repair any errors you may have.

Once you are ready, you will see a list of internal drives on the left hand side. Your Disk Utility may look different if you are using an older version of OS X, but it still offers the ability to resize a volume.

On the hard drive that your Mac OS X partition exists on, click on the top drive, not any subsequent partitions listed below it. Click on the ‘partition’ button, and you’ll see a pie chart like the one above (don’t worry if it’s not quite like that). You will see you can move the slider around the pie to resize your partition(s). Pull the size slider back for the Mac OS partition to release the free space on the disk. Make a blank partition until you have enough space for your new Linux system. As much space as you are willing to.

Apply the changes and let the resize operation complete. If you have an SSD, this should be relatively quick (a few minutes).

Installing Linux

Woo-hoo! This is the fun part! Now we get to install the operating system that your mac has been longing for!

Switch your mac off completely. Connect your Ethernet to Thunderbolt adapter and your USB drive we made earlier. If you don’t have one of those thunderbolt adapters, life is going to be tricky for you, you are going to have to download the wireless drivers and install them manually to get things working. If you don’t have one of the adapters, ask a friend for one, or buy one cheap from Ebay or such like. It will save your sanity.

Turn on your computer and hold down the option/alt key. You’ll see a menu pop up which you can see your Macintosh HD as well as the USB stick (it’s a yellow looking drive thing). It will be named EFI or something similar. Use the cursor keys to select that and hit return. PS: if you are having issues with your bluetooth keyboard at this point, make sure you revert to using your laptop’s keyboard and mouse for the time being.

At the step where you have to choose the partition and you are using the Ubuntu style installer, select ‘Something else’ from the options around partitioning. Locate the empty partition you made and create 2 partitions out of it. Make a big partition and a small partition (roughly 8-16 GB in size). The big partition should be the remainder of the free space. The big partition should be ext4 in type, and should be formatted with the mount point of “/”. The small partition should be formatted as swap.

Press next and let the good times roll. Everything else should be pretty normal.

Once the install has finished, restart the computer, no need to hold down alt/option this time. All going well, you should be seeing the rEFInd menu. Use the cursor key to select your Linux installation and hit that return key. Fingers crossed, your system will start up without much of a hitch!

Notably though, you probably won’t have a few things that work out of the box. Most of these can be covered off on the next section.

Finishing up and nice to have items.

  • Wifi.

Some lucky people will experience that their WiFi works straight out of the box. For most of us, we are going to need to install it. You can do this with:

sudo apt-get install firmware-linux-nonfree broadcom-sta-dkms

The broadcom wl, bcwl43 and fwcutter software should all be installed. Reboot to enable the puppy and all should be good when you select your wifi from your system’s networking setup menu.

  • Graphics.

The graphics display should generally work out of the box, however there may be ‘interesting’ graphical issues. Not all of these might be fixable, but give the NVidia drivers a try, and if you still don’t have any luck, read the many forums until you get a solution that works for you.

sudo apt-get install nvidia-driver xserver-xorg-video-intel

Note if you are not using xorg, you’ll need to make the appropriate changes here. Maybe best to stick with xorg for now!

  • Screen backlight.

This is a /bit/ of a hack, but it works!

Check out Jessie’s blog for the screen-backlight script. The screen backlight section is near the bottom of the blog article.

  • Keyboard backlight.

Again, Jessie Frazelle to the rescue here. The section below the screen-backlight section has a keyboard backlight bit too!

  • Mounting your MacOS X partition.

Okay cokey. Now here’s the thing. Apple can be real pains in the asses some times. It is quite likely that you have what’s called CoreStorage, if you have anything OS X 10.10 or newer. This provides an encrypted, journaled file system; even if you haven’t installed FileVault2 (if you have, turn that off!).

To give full read/write access to your Mac OS X partition from Linux, you will need to revert it back to standard HFS+. To do this, you can pretty much enter one simple non-destructive command.

First up, at the terminal, issue the command diskutil cs list. You will see something like the below. If you know LVM in Linux, this is pretty much the same thing. Your main Mac OS X partition (Logical Volume) should be in Apple_HFS format.

Revert a volume to HFS+ using diskutilAs long as the ‘Revertible’ flag is set to Yes, you are good to go. Simply enter the following command:
diskutil coreStorage revert [THAT LONG STRING OF STUFF]

The long string of stuff is that big long alphanumeric string of text highlighted in the red box, you want to use copy and paste it to make sure you don’t make a mistake!

The conversion took ages for us, however your mileage may vary, depending upon how much data is on your drive, and how fast your drive is. If you type diskutil cs list again, you’ll see how much % of the conversion has been accomplished. Don’t reboot your machine until that’s over and done with, but after then, you can safely mount your OS X partition with full read/write access.

First, make sure that you have hfsprogs installed. Example installation command:

sudo apt-get install hfsprogs

Next, mount or remount the HFS+ drive; commands need to be as follows:

sudo mount -t hfsplus -o force,rw /dev/sdXY /media/mntpoint

or

sudo mount -t hfsplus -o remount,force,rw /mount/point

Okay, that about wraps it up for this ditty, I hope it has worked for you. If it hasn’t, or you have some feedback to offer, we would love to hear it! Drop it in the comments, y’all 🙂

18 Comments on "How to install Linux on a Macintosh computer"

  1. Everything went according to Hoyle, on my MBP 8,2 late 2011, OS X 10.11.3 was very easy to follow (Thank You) except the last three commands, not that they were not easy to follow, it was I didn’t understand them. Would I mount my OS X partition to read and write from Linux MInt 17.3 Cinnamon x64 or back in OS X? And why would I want to when I want to use Linux as my operating day to day system? I’m beginning to hate OS X as much as I hate Windows.

    Can I put a plug in for tips, tricks, and tweaks for Linux Mint (mainly) but there is tweaks for Ubuntu also.
    https://sites.google.com/site/easylinuxtipsproject/mint-cinnamon-first

    Now on to read Jessie’s blog. Once again thank you for putting refind in noob’s terms.

    • Thanks Dave! The only reason for mounting your Mac OS partition would be to be able to either move or access your docs/music/photos from your Mac partition. You would be mounting from linux for this .

      Plug accepted! If you’d like to see more mint stuff or other tips and tweaks on the site I’m open to ideas, and if you fancy being a contributor, let me know!

  2. So I had Kubuntu partitioned on my drive before installing El Capitan, that I was able to dual Boot into simply by holding optino and selecting it from the Mac’s startup screen (it read Windows, like a Boot Camp partition). I tried this, and wasn’t clear on loading the Linux file system driver, and how to access that. I won’t need to delete and reinstall Kubuntu will I? I figured once I can get reFInd working it will recognize the partition that’s there already.

    • In theory, yes, as long as you re-install grub, it should boot your existing Kubuntu partition without having to re-install. I’d recommend you do it though, and just save your data into a separate partition. It’ll make things cleaner.

  3. Thanks a million!!! I’ve spent days trying to install Ubuntu on my Macbook Air 13 2013 for at least five times without any success. With the help of your guide, I have now successfully dual-booted Ubuntu 14.04 on my Mac!!! Can’t thank you enough!!!

  4. Thanks for your detailed tutorial.

    I’m trying to install Linux Mint 17.3 64-bit on a MacBook Air (Early 2015), with OSX 10.11.3 (El Capitan).

    I followed your tutorial, but when I boot from the Live USB and I arrived to the “partitioning screen”, I don’t see any partition, and my /dev/sda seems to be empty.

    What I’ve tried so far:

    1) turn off the encryption of the hard disk

    2) disable SIP protection and install rEFInd 0.10.2, which is working properly at boot time

    However, my /dev/sda still seems to be empty.

    Any help about how to manage to install Linux Mint on this MacBook Air would be very much appreciated.

    • hmm, it’s not 100% clear what you mean when you say your /dev/sda is empty. Have you created the new Linux partitions at the installation phase? Are you saying that they are created, yet they don’t have any data in them?

      Can you paste the output of sudo fdisk /dev/sda here? Your disk might not be sda. It should be, but sometimes it can be something else.

      • Hi,

        Thanks for your reply.

        When I arrive to the “partitioning screen”, the only partition I’m able to select is ‘sda’, because there are no other alternatives in the dropdown menu box. Therefore, I’m not able to install Mint or Ubuntu because I don’t see any hard drive to store the installation files.

        After a lot of ‘googling’ I finally found a pretty similar issue:

        https://askubuntu.com/questions/728988/ubuntu-live-usb-cant-see-internal-drive-on-macbook-air-early-2015

        and if they are correct, the next Kernel 4.4 should solve my problem. The bad news is that I’ll have to wait until Ubuntu 16.04….

  5. Hi,
    It appears that after I installed ubuntu, I was unable to boot back into osx (didn’t see refind). Luckily I just got a new computer so I didn’t have anything on it, but do you have any suggestions for restoring osx as well? I’m not sure what went wrong.

  6. This is what worked for me. After install of LM on mbp 8,2 I had 3 icons, osx, lm, and a penguin (ubuntu) following instructions above. I tried everything in refind.conf to get rid of the third icon, adding dont_scan_ volumes, dirs, folders, (three separate lines), nothing worked. Booted into LM opened the file folder then clicked on file system, did a search of efi, there are a lot of returns. Open the efi folder that is capitalized EFI as root deleted the ubuntu folder, restart, now only two icons OSX, LM.

  7. Most everything went off without a hitch. Though REFInd doesn’t seem to be doing quite what it’s supposed to. I followed all the instructions to a tee, aside from the “fs0: load ext4_x64.efi” and “fs0: map -r” as it was unclear if I was supposed to have those as two seperate lines or what, anyways, Ubuntu is installed and runs. However, when I go to power the computer on it just boots directly into Ubuntu without the REFInd menu coming up at all. If I hold alt/option on power up I can select Macintosh HD and boot, but otherwise it seems REFInd doesn’t actually do anything. What should I do?

  8. Thank you for this guide, it helped me qite a bit with understanding the modifications to the Refind’s .conf file.

    Installed Kubuntu 16.04 on Macbook Air 4.2 (mid 2011) with OS 10.10 (did not upgrade to 10.11). Everything worked out of the box: wifi, backlight, sound, etc. One difference: I dropped –alldrivers from ./refind-install command because of the refind warning (said that it might affect Apple partitions) and that did not have any effect (it worked). However one quirk occured and i don’t know why: Kubuntu 16.04 logo is now the first thing that comes up on starting, No Apple, and no Refind menu, not even Grab menu is being showed. I am quite OK with that but it would be nice to have Grab at least.

    Why did this happened?

    One more thing. When I was booting first time Kubuntu from the flesh drive there were two icons of the flash drive, one saying EFI version and the other saying Classic. I booted into EFI version and then run install. maybe this explains why the Kubuntu now runs on the this macbook just like Apple system used to, without menu…

    • Alistair Ross | May 25, 2016 at 6:07 am | Reply

      Hi Alex, as long as you can boot everything just fine, and you can use the Option key to choose which OS to boot, then it doesn’t matter a damn about seeing ReFIND. Perhaps the newer Macs are a little friendlier on multiple EFI based systems!

    • See my question above, I had a similar issue, only with a different model macbook and regular Ubuntu, but I have a feeling it’s the same issue. Sometimes when one OS installs or even updates it will modify the boot order of things. I discovered that much on my own, just didn’t know how to fix it. Here is the link to my question on AskUbuntu. The REFInd guy himself answered the question and provided a link to the REFInd site on how to prevent future boot order hijacking. http://askubuntu.com/questions/771086/dual-boot-ubuntu-on-mid-2010-macbook-pro-questions/771776#771776

Leave a Reply