Getting GNU/Linux to run on a Macbook Air turned out to be quite easy, with only minor annoyances so far. Don't forget the standard YMMV disclaimer if you choose to do anything described here.
Free some space on your Macbook, by using the Disk Utility or some other method. Get the latest Ubuntu ISO (13.10 at the time of writing).
Once you have obtained an Ubuntu ISO image (amd64, "normal" non-mac version) and wrote it to a USB, plug the USB into the Macbook and boot it while holding the Alt key. Select the Ubuntu option, which gets you to a familiar GRUB2 screen. Install the thing as you'd usually do.
Once the installation completes and you reboot the computer, Mac OS X will boot, skipping GRUB2 completely. Bless the installed grubx64.efi binary from Mac OS X so it actually starts working:
$ mkdir /Volumes/temp
$ sudo mount -t msdos /dev/disk0s1 /Volumes/temp
$ sudo bless --mount /Volumes/temp --setBoot --file /Volumes/temp/EFI/ubuntu/grubx64.efi
On the next boot, you will be greeted by a gray screen. Just wait patiently for 30 seconds and GRUB2 should start. In order to fix this delay, copy the grubx64.efi binary to /boot/efi/EFI/BOOT/BOOTX64.EFI. Reboot the machine and hold the Alt button, the GRUB2 should be visible in the menu this time. In order to boot directly to GRUB2 without delay, it needs to be blessed. The instructions for doing so are in the Debian wiki:
$ mkdir /Volumes/EFI
$ sudo mount -t msdos /dev/disk0s1 /Volumes/EFI
$ sudo bless --folder=/Volumes/EFI --file=/Volumes/EFI/EFI/BOOT/BOOTX64.EFI --setBoot
$ sudo bless --mount "/Volumes/EFI" --setBoot
GRUB2 will try to add entries for booting the Mac OS X directly, which didn't work for me. In order to chainload OS X bootloader the /etc/grub.d/40_custom file needs to be changed:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Mac OS X Chainload" {
insmod hfsplus
set root='(hd0,gpt2)'
chainloader /System/Library/CoreServices/boot.efi
}
Run sudo update-grub after changing the file.
Once you've booted to Ubuntu, plug in the USB stick that was used for installing Ubuntu. From the USB, install the dkms and bcmwl-kernel-source packages. That should get the wireless running. Feel free to update the installed packages at this time.
At this point, suspending the machine will end with brightness problems upon resume. Install the mba6x_bl backlight module to fix it.
As far as non-working stuff is concerned, the camera seems to be the only thing that's not working at the moment.