These are my first impressions of the Archlinux installation on the MacBook Air (4,2).

General impression

The installation feels pretty rough, very much like the installation to a PPC based iBook some years ago: A lot of stuff is still different from a usual PC, there is no intuitive debugging on bootup, the keyboard and trackpad works differently, etc. etc.

But in general: Linux works on the MacBook Air, there are just some workarounds needed today, which may vanish tomorrow already.

Installation

I choose to use Archlinux on the MacBook Air, but this is just a minor detail, the hints can be used on any other distribution as well.

Shrink MacOS X partiton

In MacOS X I've shrinked the HFS partiton to 50GB using the disk utility to make up some free space for Linux. Although removing MacOS X completly was in my mind, it may be useful in the end to get Linux working.

Install refit

Refit is the de-facto standard for multiboot on Macs, in the FOSS world, which allows me to easily select a different OS.

Prepare install medium

I've used archlinux-2011.08.19-core-dual.iso and put it to a USB stick:

dd if=archlinux-2011.08.19-core-dual.iso of=/dev/sdc

Bootup

Without refit, you could hold down the option key on the mac and select the USB drive. With refit, you'll see the usb stick directly and can boot from it.

Partitioning

I've not touched the three partitions from MacOS X (efi, customer, recovery hd), but added two new partitions:

  • /dev/sda4: Used for /boot
  • /dev/sda5: Used for /, encrypted using Luks

Using parted or sgdisk (preferred)

Bootloader

My first idea was to use Syslinux on vfat on /dev/sda4, but that does not work: refit sees the partition and allows you to boot from it, but trying to boot it goes into a black screen heading the following line:

No bootable device -- insert boot disk and press any key

After I reformatted /dev/sda4 with ext4 and used extlinux instead with

extlinux --install /boot

the boot into syslinux works.

Mouse

I've read some forum entries about loading appletouch before usbhid, but on this device it actually needs to be bcm5974. A temporay workaround to behave like a synaptics touchpad is the following command:

rmmod usbhid; rmmod bcm5974; modprobe bcm5974; modprobe usbhid

I'm somehow wondering whether module loading order should be significant (I know it had been at some other situations, but it does not feel right), but for now it definitely is.

WLAN

The bcma module is loaded by default, which needs to be blacklisted (arch1, arch2 )

Temporay & Permanent fix:

# echo 'blacklist bcma' >> /etc/modprobe.d/modprobe.conf
# rmmod bcma
# rmmod  brcmsmac
# modprobe brcmsmac
# mkinitcpio -p linux

Keyboard

The fn-key does currently not work on my installation and thus I cannot access the emulated Page-Down/Page-Up/Home/End keys, you usually get when using fn+cursor keys.

This also seems to be related to hid_apple, but issuing the following commands stops input from working at all:

rmmod usbhid; rmmod hid_apple; modprobe hid_apple; modprobe usbhid

I've opened a bugreport on the archlinux site.

Keyboard Backlight

The backlight driver (applesmc) works pretty well and can be used by simple adding the brightness into a sysfs file.

I've started the kbsd project to automatically adjust the brightness depending on the environment light, as detected by the light sensor.

Display

The machine boots up into a 1280x800 screen, although the panel natively supports 1440x900.

Using the intel driver xorg does not start at all, using fbdev instead is a workaround. You can use fbdev by putting the following content into /etc/X11/xorg.conf.d/20-fbdev.conf:

Section "Device"
   Driver "fbdev"
   Identifier "card0"
EndSection

There is also a bugreport for the display issue.

Keith Packard is also working on this issue, as can be read here and here.