• Stars
    star
    257
  • Rank 158,728 (Top 4 %)
  • Language
  • Created over 10 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🏩 How-to: Install elementaryOS and macOS on a Mac

Installing elementary OS alongside macOS

Table of Contents

  1. Before We Begin
  2. Tools You'll Need
  3. Instructions
  4. Theming rEFInd
  5. Post-Install
  6. Troubleshooting
  7. Resources

Before We Begin

This guide makes a few assumptions about the Mac you're using. Before we you begin, make sure:

Your Mac only has macOS installed on it.

If you have an existing install of elementary OS or Windows on your computer, this guide may not fully apply to you.

You're running OS X 10.11 El Capitan or macOS 10.12 Sierra

This guide is written with recent versions of macOS in mind. If you're using an older version, things might be different, so bear that in mind.

Your Mac is relatively new (2012 or later)

Your Mac must not have a Core 2 duo or Solo (or older) processor. Only the past couple few years of Macs (which have 64-bit EFI) are supported.

Your Mac is not a 2015/2016 MacBook or 2016 MacBook Pro

At the time of writing (December 2016), these very new models have limited functionality under elementary OS.

Tools You'll Need

  1. At least 15GB of extra disk space on your Mac
  2. elementary OS iso
  3. rEFInd Boot Manager
  4. USB Thumb Drive at least 2GB capacity
  5. Lots of patience!

Instructions

NOTE: For those who don't know this, a dollar sign ($) indicates that you type the command into a Terminal window. You do not copy the dollar sign :-)

Prep Your Mac Hard Drive

  1. Back your computer up.

  2. No, really! Make sure you have a backup, and make sure to test that it works. This procedure has been tested multiple times, but there's still a chance something could go wrong and you could lose data. On macOS, Time Machine is a great option for backing your computer up.

  3. Shrink your macOS partition to make room for elementary OS. At least 30 GB is a reasonable minimum.

  • If you plan on using elementary OS as your primary OS, you'll want to give it much more, of course. Once you decide what size you want to resize your macOS partition down to, you can resize it with this command: $ diskutil cs resizeStack / XXXg, where XXX is the desired number of GB your macOS partition will be resized down to.
  • For example, if your Mac has a 500 GB internal hard drive, you might decide to allocate 300 GB for macOS, and 200 GB for elementary OS. You'd then issue this command: $ diskutil cs resizeStack / 300g.

Get elementary OS

  1. Download the iso from elementary OS.

  2. Verify the download by running this command from terminal:

  3. shasum -a 256 ~/Downloads/elementaryos-0.4-stable-amd64.20160921.iso

  4. Should give you the result 8035e0a2fbc977d931af22dcefb77ed6fe87815d89188a43e2cb345f13e629cf

  5. Create a Bootable USB using Etcher

  6. More details on the elementary OS Install Guide

Install elementary OS

  1. Shut off your Mac and plug in the USB flash drive you created with elementary OS on it.

  2. Holding down the option key on your keyboard, press the power button to turn on your computer.

  3. From the boot manager screen that appears, choose elementary OS.

  4. After choosing to boot elementary OS, you'll be given a few options as to how to boot the installer. Choose Try Elementary OS.

  5. Once elementary OS finishes booting up, open Terminal and run $ ubiquity -b. This will launch the graphical elementary OS installer. When the installer asks about partitioning, make sure you choose Something Else....

    • Note for advanced users: the -b flag tells the installer to install without installing the GRUB boot-loader. This guide makes use of EFI stub loading, which allows a capable boot manager (such as rEFInd, which we'll set up later) to launch the Linux kernel directly, without an intermediary boot-loader (e.g. GRUB).
  6. You should see some free space at the end your hard drive partition list (/dev/sda), about the size you freed up when you shrunk your macOS partition. Choose this free space, and format it as Ext4 and set its mount point to /. Choose Apply, and finish installing elementary OS.

Install reFInd Boot Manager

  1. Restart your computer and boot back into macOS. At this point, elementary OS is installed, but you can't boot into it yet, because you haven't installed a boot manager. That's the next step!

  2. Download the rEFInd boot manager and unzip it. Drag the unzipped folder onto your desktop.

  3. Turn off your Mac.

  4. Boot into Recovery Mode by holding down ⌘ + R while turning on your Mac.

  5. Once in Recovery Mode, open Disk Utility. Choose your macOS partition and click Mount in the toolbar to mount it.

  6. Quit Disk Utility and open Terminal.

  7. cd into the directory where you unzipped rEFInd, which will probably be something like /Volumes/Macintosh\ HD/Users/jane/Desktop/refind*, if your macOS username was jane.

  8. Install rEFInd ($ ./refind-install)

  9. Reboot your Mac.

  10. You should now see the rEFInd menu, which options to boot elementary OS and macOS. Congrats! You're all set.

Theming rEFInd

You can install a theme to make it look nicer, and there's many options for customizing rEFInd's behavior too. Here's what my setup looks like: no-fde

Post Install

These are optional tweaks that will help you feel more are home.

MacOS Modifier keys create macOS like keyboard bindings

f.lux plugin to help alleviate eye-strain

bash-it make your bash shell awesome

linux-brew package manager for linux

Troubleshooting

My Wi-Fi isn't working

Sometimes Wi-Fi might not work out-of-the-box because the necessary driver isn't installed. In some cases, you'll be able to install them manually.

  • Somehow get a temporary internet connection, e.g. via your smartphone's USB or Bluetooth tethering function or a Thunderbolt to RJ45 adapter (Thunderbolt ethernet works well with 0.4.1 Loki)
  • Run $ sudo apt install bcmwl-kernel-source to install the driver and its dependencies.

It takes ~30 seconds for the rEFInd menu to show up.

This is a known compatibility issue with rEFInd and some Mac hardware models. If you experience this problem, try the following steps:

  1. Mount your EFI System Partition (ESP), which is where rEFInd is installed. ($ sudo ./mountesp)
  2. Rename the refind directory ($ mv /Volumes/ESP/EFI/refind /Volumes/ESP/EFI/BOOT)
  3. Rename the refind EFI blob ($ mv /Volumes/ESP/EFI/BOOT/refind_x64.efi /Volumes/ESP/EFI/BOOT/bootx64.efi)
  4. Reboot and see if your problem is fixed.

After booting installation USB screen remains black

If the screen remains black after booting from the installation USB, try the following steps:

  1. When the boot menu with the elementary OS logo appears enter the boot menu
  2. Change the boot parameters quiet splash to nomodeset and continue booting

That solution is an extract of a StackExchange answer.

Additional Resources

More Repositories

1

hackerchat

πŸ‘« Hackable collaboration.
CSS
38
star
2

PennAppsApps

:finnadie: PennApps rejection simulator.
HTML
20
star
3

keeba

πŸ“š Homework, simplified.
JavaScript
16
star
4

talks-guru

πŸ—£ Curating diamonds in rough since 2014.
HTML
8
star
5

difference-engine

πŸ”’ Simulator for Babbage's Difference Engine
Python
7
star
6

firebase-unity-applesilicon

Get the Firebase SDK to work inside the Apple Silicon Unity Editor
5
star
7

tallywag

πŸ‘πŸ» SO LIKES. VERY FACEBOOK. MANY RATIO.
4
star
8

TNBT

The idealism of youth...
Python
4
star
9

dotfiles

😎 Avi's dotfiles
Vim Script
3
star
10

recital

Programmatically answers the question: "how long would it take me to read that article?"
JavaScript
2
star
11

UCStones.com

TypeScript
2
star
12

snotify

OS X desktop notifications when local schools close
2
star
13

telecomando

Web-based remote control for Linux
Python
2
star
14

elementary-sso

elementary.io single-sign-on service
1
star
15

veritas

πŸ‘¨β€πŸ‘§β€πŸ‘¦ The SSocial Network
JavaScript
1
star
16

rebellion

🌨 PECO status updates via SMS
1
star
17

aesock

Telephone tag for the 21st century
Java
1
star
18

TAPESTRY

πŸ“Ή Accelerating research in dynamic 3D reconstruction
Go
1
star
19

hrrm

Make time manage itself
Go
1
star
20

umadbro

y u mad tho?
1
star
21

aeserv

lol im in ur NICE, unifying ur partitions
Shell
1
star
22

aroman-exheres

aroman's personal exheres repo
1
star
23

shipit

:shipit: For those times when :shipit; just doesn't cut it
1
star
24

GrubHero

πŸ” Saving the world, one meal at a time.
Python
1
star
25

ClassInSight

πŸ” Dashboard for visualizing ClassInSight data
JavaScript
1
star