Installing Linux on the Eee PC 1001HA

At the start of 2010, i got an Eee PC 1001HA. It came with Windows XP. I immediately resolved to destroyed, peeled all the hideous stickers off what was now my lovely white computer, and started down the path of Linux. These are some random notes on what i did, what i learned, and what i should try.

Booting from a USB Stick

First Time

The Eee, being a netbook, doesn't have an optical drive, so you boot from a USB stick to install. This took a lot more work than it should have.

My trouble was caused by the fact that my main machine is a Mac. OS X does some filesystem things differently to Windows or Linux, so there was fiddling to do. In the end, what worked was to reformat the stick as FAT32 with a Master Boot Record (MBR) - this is the only thing a PC will boot off. The steps were:

  1. Insert the stick
  2. Open Disk Utility
  3. Select the stick (the stick itself, not the volume inside it)
  4. Go to the Partition tab
  5. Switch the scheme to 1 Partition, thus unlocking the rest of the controls
  6. Hit Options, select Master Boot Record
  7. Switch format to MS-DOS file system (whch means FAT32)
  8. Hit Partition

I think i may later have reformatted it under Windows to get it working. Don't really remember. If i did, then the above instructions are obviously bullshit.

You then need to get a bootable OS image onto the stick. I tried dd'ing an ISO onto the stick, as you will often see suggested online, but this didn't work for me. I didn't play with this too hard, though. Instead, i ended up downloading UNetbootin to the still-Windows Eee and using that to load the ISO. Lame.

I also had to wrangle the Eee to get it to boot off the stick. The trouble was caused by some kind of Boot Booster feature which causes the machine to skip over most of the steps in a normal, sensible boot and get into Windows as fast as possible. This needs disabling. There are more detailed and reliable instructions out on thw web, but basically, you boot the machine while mashing F2, until you get into the BIOS. In the BIOS, you can switch off the boot booster. You can also change the boot order so the machine prefers USB sticks to the internal drive, which is useful (although potentially annoying if you forget you've done it - what you really want is a mode where if there is a bootable stick, it will give you a menu of boot options, and if there isn't, just boot from the hard disk). Alternatively, you can hit ESC at the BIOS splash screen to get the boot menu.

Second Time

At this point, i had Eeebuntu on the machine, and a Fedora 13 DVD ISO, and a 4 GB USB stick. Fun ensued.

Using dd to move the ISO onto the stick did *not* work. Well, it did, in that the data went on, and i could mount the stick as a disk, but the machine wouldn't boot off it. If i ran fdisk on it, i got an error about the partition table being corrupt (fair enough, it's actually an iso9660 filesystem rather than a proper disk with a partition table and so on) and attempting to fix it went nowhere fast. FWIW, to get dd to go at an acceptable speed, i had to quite Chrome; running with a nice big buffer (8 MB was probably enough; 32 MB was only a little faster) and using oflag=direct seemed to help. The complete command was something like dd if=fedora.iso of=/dev/sdb bs=32M oflag=direct.

Next attempt was to make a normal FAT32 filesystem on the stick, then mount the iso and copy the files across. First, fdisk: sudo fdisk /dev/sdb, then d to delete the existing partitions, n to create one, p to select a primary, 1 to pick partition 1, return twice to accept the default sizing, t to change the type, 1 to select the first partition, c to select FAT32 (there are several codes for FAT32, but c is the right one), a to make it bootable, then w to write it. I think. Then mkdosfs -F 32 -n FedoraStick /dev/sdb. Then mount the iso with sudo mkdir -p /mnt/fedora13iso; sudo mount -o loop fedora.iso /mnt/fedora13iso. Then mount the stick. Then use sudo rsync -a to copy everything from the ISO to the stick. That didn't boot, so tried sudo syslinux /dev/sdb1. Don't know if this worked yet.

The very comprenehsive Fedora manual chapter on Making USB Media. Suggests straightforward use of dd, which doesn't work for me.

Oh, turns out the DVD image isn't bootable. The dd approach works perfectly with a CD image.

Eeebuntu 3.0

Eeebuntu is, as the name subtly suggests, a version of Ubuntu customised for the Eee. I don't really know what the customisation entails, because i haven't used Ubuntu. Eeebuntu 3.0 is based on Ubuntu 9.04 Jaunty Jackalope, which has kernel 2.6.28. Eeebuntu uses a 'custom kernel' from array.org, which is a version of 2.6.28-12 (or possibly -11) with some Eee-specific drivers and stuff rolled in. It's not clear to me that it's really a customised kernel, more of a selection of relevant packages.

The first installation started okay - the installer ran without a hitch. The first problem was that neither the wired nor wireless network worked; apparently they both use quite new chipsets, support for which is not in Eeebuntu 3.0.

The wireless is a Ralink RT3090, for which the driver is helpfully called rt3090. I got this from Markus Heberling, the installation of which required a couple of other packages - linux-headers-2.6.28-11-generic and linux-headers-2.6.28-11. If you install them (by double-clicking in Eeebuntu, which runs Synaptic or something, or from the command line - this ends up running dkms to do a module build) in the order linux-headers-2.6.28-11, linux-headers-2.6.28-11-generic, rt3090, and reboot, then you have a working wireless. Hurrah!

However, note that support for the RT3090 has since been added to the existing rt2860 driver, which came into the kernel mainline in 2.6.32 (?). Future distros won't have the rt3090 driver.

The wired ethernet is an Attansic (bought by and now branded as Atheros) AR81. The driver for this is called atl1e (note that's alpha tango lime one echo, for those of you with iffy fonts). I got this from Atheros. This isn't a proper .deb package or anything, it's a good old-fashioned .tar.gz, which you build with:

# Eeebuntu's tar doesn't seem to support the z flag (?!), so unpack in two steps
gunzip AR81Family*.tar.gz
tar xf AR81Family*.tar
cd src
make
sudo make install
sudo insmod atl1e.ko

That was pretty straightforward once i'd figured it all out. It went south fast from there. I naively ran the software update utility (oh, how i'm spoiled by OS X, where only occasionally to updates break things). I hadn't twigged that this was using the Ubuntu repositories, rather than any kind of Eeebuntu stuff, so it merrily stomped all over the carefully-crafted Eeebuntu stuff and broke my wireless. And everything else. Nice.

Reinstalled, ran through the networking setup again, installed a new firefox (which also needed some random library installing), flash, and one or two other bits and bobs. Configured it to suspend when the lid is put down. All very nice. Took it to work to show my colleagues. Put it to sleep when we went to lunch. While we were in the pub, it ran out of battery and either crashed, shut down, or hibernated. On booting up, it wouldn't go into X, with an error like:

/etc/gdm/Xsession: Beginning session setup...
export: 11: -T: bad variable name

From which i rapidly concluded fuck Eeebuntu, and the horse it rode in on (ie Ubuntu).

Eeebuntu 4.0

This is a new phase of Eeebuntu, based on Debian rather than Ubuntu. It should be a lot more solid, with less random breakage and other weirdness, and thus be less fuck-inducing. When it comes out. Which will apparently be real soon now (as of 2010-01-08).

Debian

Okay, time to stop dicking about and install a real distro. Debian is probably the most serious distro there is - Debian developers' average beard size approaches that of FreeBSD hackers. It's what Ubuntu is based on, it's what new Eeebuntu will be based on, it's solid and stable, it has a good package manager, it has a shit ton of software, and it doesn't do crap like installing some hopeless wannabe Dock-alike.

Info:

Plan of attack:

  1. Install using the standard installer - need to get the ISO and make a bootable USB stick using the special trick
  2. Go for Squeeze, ie testing, rather than Lenny from stable
  3. Need to set a special option for the touchpad to get full funk (do i want this?)
  4. Confirm that wired ethernet is okay
  5. Consider a kernel backport from sid/unstable to get 2.6.32 (if this is even possible) - this would mean wifi is built in
  6. Add Debian Eee repo and get wifi driver, sort this out
  7. Choose and implement a network configurator (maybe just ifup/ifdown? Network Manager is the standard option)
  8. Choose between Xfce and Gnome (mostly involves finding an okay text editor for Xfce)

Fedora 13

I have totally changed my mind and am going to install Fedora.

OS X

As soon as i have a grand and a half to spare, i'm buying a new Macbook Pro. Fact.