Three general warnings:
Some things I knew, or at least thought I knew, before starting installation:
Some notes on hardware selection: I bought this MacBook Air in July 2011 because I was worried about the continued health of the ThinkPad X301 that I had bought in September 2008. I couldn't, and still can't, find anything comparable to the X301. The X301 is the same weight as the MacBook Air, 1.3kg. The X301 has the same screen resolution and size as the MacBook Air, 1440x900 13.3"; and it has a matte screen, which I find readable in more situations than glossy. The X301 is marginally thicker than the MacBook Air (19mm vs. 17mm), but it uses this space to provide built-in VGA, built-in Ethernet, and a swappable battery; taking the Macbook Air + USB-to-VGA + USB-to-Ethernet + 12V-to-power + HyperJuice on a trip is clearly more volume than taking the X301 + USB-to-SD + battery. This MacBook Air does have some quantitative advantages that I appreciate (256GB SSD instead of 128GB SSD, 4GB RAM instead of 2GB RAM, better battery life, and somewhat lower cost) but this is hardly a surprise after three years of improvements in chip technology.
Select Finder (bottom left). Select Applications. Select Utilities. Select Disk Utility. Click on "251 GB" (and not on "Macintosh"). Select Partition. Drag bottom-right of partition picture upwards until it indicates 49.15GB for partition. Click, click, click. Fine: resized.
Start Safari. http://refit.sourceforge.net/doc/c1s1_install.html Click on rEFIt-0.14.dmg on the web page. Wait for download to finish. Click on Finder (bottom left again). Click on Downloads. Double-click on rEFIt-0.14.dmg (in the Finder window, not the browser window). Double-click on rEFIt.mpkg. Click Continue. Click Continue. Click Agree. Click Install. Type root password. See "The installation was successful." Click Close.
Push the Mute button (F10). (This will stop the system from making noise on each reboot.)
Push power button. Click Shut Down. Wait for screen to blank.
Push power button. Wait for boot. Hmmm, no rEFIt menu.
Try Restart. Aha, rEFIt menu. Select the rEFIt partition tool, and agree to resynchronization ("update MBR" etc.). Shut down.
ISO=ubuntu-11.10-alternate-amd64.iso USB=/dev/sdb cd /root wget http://mirror.pnl.gov/releases/oneiric/$ISO mkfs.vfat "$USB" -I mkdir iso mount -o loop "$ISO" ./iso mkdir usb mount "$USB" ./usb time rsync -ah ./iso/ ./usb/ # 5 minutes on a typical laptop mv ./usb/isolinux ./usb/syslinux mv ./usb/syslinux/isolinux.cfg ./usb/syslinux/syslinux.cfg sed 's/quiet/nomodeset quiet/' < usb/syslinux/txt.cfg > usb/syslinux/txt.cfg.new mv usb/syslinux/txt.cfg.new usb/syslinux/txt.cfg time cp "$ISO" usb # 3 minutes on a typical laptop umount iso rmdir iso umount usb rmdir usb syslinux "$USB" dosfslabel "$USB" ubu1110altRemove USB stick.
Plug USB-to-Ethernet converter into MacBook Air, rightmost USB plug. Attach Ethernet cable connected somehow to the Internet (I used a DHCP server on another laptop).
Boot. At rEFIt menu, select "Boot Legacy OS from" (or "Boot Linux from"; unclear how this is triggered). SYSLINUX gives "Unknown keyword in configuration file" error; type "help" and press return. (If this error doesn't appear, don't worry about it; unclear how it's triggered.) Press return again (for alternate; desktop skips this). Wait for Ubuntu to boot.
"Select a language ... English" Press return.
"Select your location ... United States" Press return.
"Configure the keyboard ... Detect keyboard layout? No" Press return.
"Configure the keyboard ... English (US)" Press return.
"Configure the keyboard ... English (US)" Press return. Wait.
"Detect and mount CD-ROM ... Try again to mount the CD-ROM?" (This is a bug in the installation script, maybe related to the single partition on the USB stick.) Press fn-option-F2 and Enter. Type
mkdir /mnt/usb # one of the following two should work: mount -t vfat /dev/sdb /mnt/usb mount -t vfat /dev/sdc /mnt/usb mount -t iso9660 -o loop /mnt/usb/ubuntu-11.10-alternate-amd64.iso /cdromAnd, while we're here, be nice to the hardware:
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo powersave > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor echo powersave > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor echo powersave > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governorPress fn-option-F1.
"Detect and mount CD-ROM ... Try again to mount the CD-ROM?" Press Esc (this is important!), Enter, Enter.
"Loading additional components ..." ... "Configuring the network with DHCP ..." "Configure the network ... Hostname:" Press control-U. Type air.
"Configure the clock ... Is this time zone correct? Yes" Press fn-option-F2 and Enter. Type
cd /usr/lib/apt-setup/generators sed 's/db_metaget/# db_metaget/' \ < 50mirror.ubuntu \ > 50mirror.ubuntu.new mv 50mirror.ubuntu.new 50mirror.ubuntu(otherwise "Configure the package manager" will break later). Press fn-option-F1.
"Configure the clock ... Is this time zone correct? Yes" Press return.
"Partition disks ... Unmount partitions that are in use? No" Press return.
"Partition disks" Select "Manual" and set up the partitions you want within the space made free by shrinking MacOS X. (No detailed keystrokes here, sorry.) Here's what I set up (with noatime on both /boot and /):
LVM VG g1, LV v1 - 200.9 GB Linux device-mapper (linear) #1 200.9 GB K crypto (g1-v1_crypt) Encrypted volume (g1-v1_crypt) - 200.9 GB Linux device-mapper (crypt) #1 200.9 GB f ext3 / SCSI1 (0,0,0) (sda) - 251.0 GB ATA APPLE SSD SM256C 3.1 kB FREE SPACE #1 209.7 MB B EFIboot EFI system p #2 49.2 GB hfs+ Customer #3 650.0 MB hfs+ Recovery HD #4 1.0 MB K biosgrub #5 128.0 MB F ext3 /boot #6 200.9 GB K lvmThe screen also shows "SCSI4 (0,0,0) (sdb)" for the USB stick, with various details.
"Installing the base system" ... "Set up users and passwords ... Full name for the new user:" Type your full name.
"Set up users and passwords ... Username for your account:" Type your account name.
"Set up users and passwords ... Choose a password for the new user:" Type your password.
"Set up users and passwords ... Re-enter password to verify:" Type your password.
"Encrypt your home directory? No" Press return.
"Configure the package manager ... HTTP proxy ..." Press return.
"Configuring apt" ... "Select and install software" ...
"Configuring grub-pc ... Device for boot loader installation:" Type /dev/sda. (Some people say that you should instead use something like /dev/sda5, but so far I haven't had any trouble with /dev/sda.) If you receive an error message instead of "Device for boot loader installation" (unclear what triggers this), press fn-option-F2 and type the following:
chroot /target/ bash mount -t proc proc /proc mount -t sysfs sysfs /sys echo deb http://us.archive.ubuntu.com/ubuntu/ \ oneiric main restricted >> /etc/apt/sources.list aptitude update aptitude install grub-pc exitThen press fn-option-F1 and try configuring grub-pc again.
"Installing GRUB boot loader" ... "Finishing the installation" ... "Finish the installation ... Is the system clock set to UTC? Yes" Press return.
"Finish the installation ... Installation complete ... Continue" Press return. When the screen goes black, remove the USB stick.
When a blinking cursor appears in the top left of the screen, quickly press e. Use arrow keys etc. to change "quiet" to "nomodeset quiet". Press F10. Wait.
"Enter passphrase:" Type the passphrase you set up for encrypting the disk. You'll have to do this again on every reboot. After you type the correct passphrase you'll see "crypt set up successfully" quickly go by. (If you see a purple and black screen instead of "Enter passphrase:", type fn-option-F1 and then fn-option-F7.)
Ubuntu presents graphical login screen. Press fn-control-option-F2.
"air login: " Type your account name and press return.
"Password: " Type your password and press return.
"$ " Type "sudo -s" and press return.
"[sudo] password for ...:" Type your password and press return.
Type the following:
update-rc.d ondemand disable chmod 755 /etc/rc.local sed -i 's/exit 0//' /etc/rc.local ( echo "echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" echo "echo powersave > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor" echo "echo 0 > /sys/devices/system/cpu/cpu2/online" echo "echo 0 > /sys/devices/system/cpu/cpu3/online" ) >> /etc/rc.local sh /etc/rc.local
And more (waiting for each command to finish, or merging commands if you know what you're doing; aptitude is uncivilized and consumes typeahead):
# updates aptitude update aptitude dist-upgrade # networking aptitude remove network-manager network-manager-gnome aptitude purge avahi-daemon libnss-mdns avahi-utils telepathy-salut dhclient eth0 aptitude install traceroute aptitude install aircrack-ng aptitude install iodine aptitude install httptunnel aptitude install ptunnel aptitude install sshuttle aptitude install ntp aptitude install dhcp3-server update-rc.d isc-dhcp-server disable # general administration aptitude install lm-sensors aptitude install edac-utils aptitude install acpi aptitude install alien # synchronization, backup, compression aptitude install unison unison2.27.57 aptitude install git aptitude install tig aptitude install subversion aptitude install unrar aptitude install aria2 # windowing aptitude install fvwm aptitude install xlockmore-gl aptitude install ttf-droid aptitude install xkbset # browsers aptitude install w3m aptitude install chromium-browser aptitude install -R mutt # documents aptitude install gv aptitude install xpdf aptitude install acroread aptitude install pdfedit aptitude install psutils aptitude install texlive-full # pictures aptitude install imagemagick aptitude install xloadimage aptitude install plotutils aptitude install gnuplot aptitude install graphviz aptitude install netpbm aptitude install xsane aptitude install sane-utils aptitude install brother-cups-wrapper-laser # video aptitude install vlc aptitude install mplayer aptitude install mencoder aptitude install ffmpeg # audio aptitude install sox aptitude install libsox-fmt-all aptitude install vorbis-tools aptitude install mpg321 # math aptitude install bsdgames aptitude install pari-gp # text processing aptitude install vim aptitude install athena-jot aptitude install m4 aptitude install gawk # perl development aptitude install libnet-dns-perl aptitude install libmime-base32-perl aptitude install libstring-crc32-perl # general development aptitude install build-essential aptitude install manpages-dev aptitude install gcc-multilib aptitude install libc6-dev-i386 aptitude install gfortran aptitude install autoconf aptitude install libgmp-dev aptitude install libssl-dev aptitude install libncurses5-dev aptitude install flex # switch to the new kernel reboot
Again: When a blinking cursor appears in the top left of the screen, quickly press e. Use arrow keys etc. to change "quiet" to "nomodeset quiet". Press F10.
Again: "Enter passphrase:" Type the passphrase you set up for encrypting the disk.
Again: Ubuntu presents graphical login screen. Press fn-control-option-F2.
Again: "air login: " Type your account name and press return.
Again: "Password: " Type your password and press return.
Again: "$ " Type "sudo -s" and press return.
Again: "[sudo] password for ...:" Type your password and press return.
Type the following:
cd /root dhclient eth0 wget http://almostsure.com/mba42/post-install-oneiric.sh bash post-install-oneiric.shThis includes (indirectly) my patch for the graphics driver. It also includes various other hardware-support improvements. You have to run this script again after any kernel upgrade.
If you used ext3 (as I did): Edit /etc/fstab and eliminate "discard" (which was added by the post-install script); this isn't compatible with ext3.
Reboot, skipping the nomodeset step. The screen should now be a crisp 1440x900.