Recently, I had to install Archlinux on an iMac … again. It has never been an easy process but it was particularly annoying this time around. Thanks Obama!

Preparing the bootable USB

This is the simple step - just plug in a USB drive and use dd (dd = disk-destroyer). Replace the ISO path and the device path (Note: It’s sdc not sdc1 etc. as we want to over-write the whole drive (including the partition tables). Also be careful with the device path - there’s a reason it’s called disk-destroyer.

sudo dd if=~/downloads/archlinux-2015.11.01-dual.iso of=/dev/sdc bs=4M

Partitioning

I wanted to keep the MAC OS so I just used the Disk Utility in MAC OS to shrink the “Fusion Drive” volume and create another partition where I would install linux. Fusion Drive is Apple talk for hybrid SSD/HDD drive. Some people have also instead destroyed the Fusion Drive and separated them out into the HDD and SSD. I am sure that works too but I didn’t try that.

rEFInd

I installed rEFInd just to make it a bit simpler to boot the USB drive in UEFI mode. I gathered this is the way to do it from some googling. However, to install rEFInd, you have to boot into the MAC Recovery OS because the bless utility needs to be run from the Recovery OS.

Boot Archlinux installer

From the rEFInd menu, select Archlinux - this will take you to yet another boot menu with Archlinux ... being the top boot option. Press e to edit the kernel boot params and append the following to the end:

nolapic radeon.blacklist=1 irqpoll

EDIT: It seems that just using noapic seems to do that trick as well. Better yet, with nolapic, the machine is locked to 1 core but with noapic, the machine is able to use all the cores.

All these were neccessary for me too boot (and took a long time to figure out). Probably the most annoying part of the whole process.

Archlinux installation

Install Archlinux as you usually would and make sure you select the right partitions from the partitioning step. Make sure not to delete the EFI partition if dual-booting. Install the Grub/Syslinux bootloader (and the efibootmgr if booting through (U)EFI). Make sure to give the right setup params to grub-install to install EFI bootloader if using EFI.

Bless Grub

After installation was done, I booted once again into the Recovery OS to bless grub and to also set it as the default bootloader:

bless --folder=/Volumes/efi --file=/Volumes/efi/efi/arch_grub/grubx64.efi --setBoot
bless --mount=/Volumes/efi --file=/Volumes/efi/efi/arch_grub/grubx64.efi --setBoot

See here for more details.

Graphics drivers

I tried using the catalyst drivers but they seemed to not work at all. I did however stop getting errors like these when booting:

kernel: [drm:radeon_pm_late_init [radeon]] *ERROR* failed to create device file for dpm state
kernel: [drm:radeon_pm_late_init [radeon]] *ERROR* failed to create device file for dpm state

With the opensource ATI drivers (xf86-video-ati), the errors return but at least startx doesn’t crash and burn. It seems the catalyst drivers are missing some Xorg symbols but unless you really want the proprietary drivers, stick with the opensource ones - they work quite well.

Grub config

As a final step, I had to update the UUIDs for the root partition in the grub config files. The entries it generated by default were not correct for some reason. Also, these UUIDs are different from what the diskutil on MAC OS shows. To get the correct UUIDs, get to the grub shell from the grub menu after the installation is done and the machine has rebooted and run ls -l to list the partitions and their respective UUIDs. Edit the boot entry for Archlinux and type in the correct UUIDs. After it has booted, edit the /boot/grub/grub.cfg file and enter the correct UUIDs.