Step by step of setting up Arch Linux on a Macbook Air 2013
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Murphy McMahon c948978b1f Merge pull request #16 from eliotwinchell/master 2 years ago Update 3 years ago

Arch on Air

Instructions for installing Arch Linux side-by-side with OS X on a Macbook Air 2013.


1. Make bootable USB media with Arch ISO image (wiki)

2. Hold the key and boot into USB

3. Create partitions

The following example assumes Arch will sit on a single partition; adjust according to preference.

It may also be possible to create a data partition that can be accessed from both OS X and GNU/Linux systems: how to do that properly is left as an exercise to the reader.

cgdisk /dev/sda


/dev/sda4 - [128MB] Apple HFS+ "Boot Loader"
/dev/sda5 - [256MB] Linux filesystem "Boot"
/dev/sda6 - [Rest of space] Linux filesystem "Root"

4. Format and mount partitions

mkfs.ext4 /dev/sda5 mkfs.ext4 /dev/sda6 mount /dev/sda6 /mnt mkdir /mnt/boot && mount /dev/sda5 /mnt/boot

If you plan to use any memory-heavy applications (which includes most web browsers), it's a good idea to create either a swap partition or a swapfile for system stability. Swapfiles are easier to resize or remove if you change your mind, so we'll create a 512M one:

dd if=/dev/zero of=/mnt/swapfile bs=1M count=512 chmod 600 /mnt/swapfile mkswap /mnt/swapfile

5. Installation

pacstrap /mnt base base-devel genfstab -U -p /mnt >> /mnt/etc/fstab

6. Optimize fstab for SSD, add swap

nano /mnt/etc/fstab

dev/sda6 ext4 defaults,noatime,discard,data=writeback 0 1 /dev/sda5 /boot ext4 defaults,relatime,stripe=4 0 2 /swapfile none swap defaults 0 0

7. Configure system

arch-chroot /mnt /bin/bash passwd echo myhostname > /etc/hostname ln -s /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime hwclock --systohc --utc useradd -m -g users -G wheel -s /bin/bash myusername passwd myusername pacman -S sudo

8. Grant sudo

echo "%wheel ALL=(ALL) ALL" > /etc/sudoers.d/10-grant-wheel-group

9. Set up locale

nano /etc/locale.gen

locale-gen echo LANG=en_US.UTF-8 > /etc/locale.conf export LANG=en_US.UTF-8

10. Set up mkinitcpio hooks and run

Insert "keyboard" after "autodetect" if it's not already there.

nano /etc/mkinitcpio.conf

Then run it:

mkinitcpio -p linux

11. Set up GRUB/EFI

To boot up the computer we will continue to use Apple's EFI bootloader, so we need GRUB-EFI:

pacman -S grub-efi-x86_64

Configuring GRUB

nano /etc/default/grub

Aside from setting the quiet and rootflags kernel parameters, a special parameter must be set to avoid system (CPU/IO) hangs related to ATA, as per this thread:

GRUB_CMDLINE_LINUX_DEFAULT="quiet rootflags=data=writeback libata.force=1:noncq"

Additionally, the grub template is broken and requires this adjustment:


grub-mkconfig -o boot/grub/grub.cfg grub-mkstandalone -o boot.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi --compress=xz boot/grub/grub.cfg

12. Setup boot in OS X

Copy boot.efi (generated in the command above) to a USB stick for use later in OS X. Exit everything and reboot into OS X (by holding alt/option) and then choosing it.

exit # exit chroot reboot

13. Launch Disk Utility in OS X

14. Create boot file structure

Format ("Erase") /dev/sda4 using Mac journaled filesystem This procedure allows the Apple bootloader to see our Arch Linux system and present it as the default boot option.

cd /Volumes/disk0s4 mkdir System mach_kernel cd System mkdir Library cd Library mkdir CoreServices cd CoreServices touch SystemVersion.plist

nano SystemVersion.plist

ProductBuildVersion ProductName Linux ProductVersion Arch Linux

Copy boot.efi from your USB stick to this CoreServices directory. The tree should look like this:


15. Make Boot Loader partition bootable

sudo bless --device /dev/disk0s4 --setBoot

    You may need to disable the System Integrity Projection of OS X:
  • Restart the computer, while booting hold down Command-R to boot into recovery mode.
  • Once booted, navigate to the “Utilities > Terminal” in the top menu bar.
  • Enter "csrutil disable" in the terminal window and hit the return key.
  • Restart the machine and System Integrity Protection will now be disabled.

Voila, Arch Linux is installed.

16. Get wireless working in Arch

Get broadcom drivers

Download and install broadcom from AUR

Reboot the computer and hold the alt/option key to select which operating system to boot. (Make sure that b43 and ssb modules are not present in the output from `lsmod`)

modprobe wl

Alternatively, install broadcom-wl-dkms instead that kernel updates don't leave you without wifi. DKMS is a service that recompiles external modules after every kernel upgrade.

sudo pacman -S dkms sudo systemctl enable dkms.service

Select network

sudo pacman -S dialog sudo wifi-menu -o

17. Access common keys

Tilde key

The tilde key does not work on the keyboard out of the box. There are several solutions listed here but this one worked for me:

sudo nano /etc/modprobe.d/hid_apple.conf

options hid_apple iso_layout=0

Insert and keys

The key can be reproduced with fn+. So to paste in an xterm window for instance, use S-fn-.

18. Improve battery performance

F1-F12 require fn+, etc. Out-of-the-box battery performance on Arch Linux should be good and at least comparable to OS X.