Linux on the Asus EeePC

Author: Michael Minn

12 February 2011

Describes how to set up an Ubuntu 10.04 LTS operating system on a Asus EeePC netbook computer.

1. Introduction

This page describes how to install Ubuntu v10.04 on an ASUS Eee PC 1000HD. As of this writing, there are serious problems with the wireless driver on Ubuntu 10.10 and version 10.04 LTS is recommended with the tweaks described below.

The ASUS Eee PC 1000HD, an inexpensive, highly portable netbook computer manufactured by Pegatron Technology, a manufacturing entity spun off by Asustek in 2007. The first models were introduced in 2007 in response to the One-laptop-per-child XO-1 and featured limited RAM and a solid state hard drive. Later models have expanded features while retaining the small form factor.

The 1000 HD model that I purchased in October of 2008 features:

  • 900 MHz Intel Celeron M processor (Dothan) with 512 KB cache
  • 1 GB DDR2 RAM (box incorrectly lists 2GB)
  • 80 GB SATA Hard Drive
  • 10" WSVGA (1024 x 600) LCD Display
  • Intel UMA Graphics Chip
  • 1.3 Megapixel Webcamera
  • 802.11b/g WiFi Wireless (Atheros AR5001)
  • 10/100Mbps LAN (Atheros(R) AR8121/AR8113 PCI-E Ethernet Adapter)
  • Realtek ALC269 Sound Chip
  • Bluetooth
  • Memory Card Slot - MultiMedia Card (MMC), Secure Digital (SD) Card, SDHC
  • Connections: 3 x USB, VGA, Headphone, Microphone, RJ-45 (LAN)
  • Width 10.5", Depth 7.5", Height 1.5", Weight 3.2 lbs.
  • No internal CD/DVD drive, floppy, or legacy ports
  • Includes A/C adapter, battery pack, sleeve case, 1-year warranty
  • Purchased from J & R for $399 + $9.81 shipping + 34.30 tax = $444.10

Most of the driver issues with previous distributions of Ubuntu are resolved with this version. For a description of the older issues, see my Ubuntu 8.04 page.


2. Creating the Installation Media

Because the Eee PC does not have a CD-ROM drive and Ubuntu (as of this writing) only comes as a live CD image, you will need to create a bootable flash drive to install Ubuntu on the Eee PC.

The Ubuntu website gives instructions on how to download an Ubuntu disk image and create a bootable USB drive. If you have no problem following those instructions, you do not need to read further in this section.

Issues with USB stick creation on Ubuntu 10.04: Creating a USB stick under Ubuntu 10.04 is a bit of a challenge because all the creation tools are buggy and unusable. usb-creator-gtk crashes with a segmentation fault. unetbootin freezes during creation. syslinux creates a bootable VFAT partition that does not boot and gives the error message "unknown keyword in configuration file." Therefore, a command line approach is needed.

Download: the current Ubuntu release CD image ISO from Ubuntu.com.

Download / recompile syslinux: syslinux is an application for creating a bootloader in a FAT filesystem - which is how most USB flash drives are preformatted. Normally you can install syslinux on Ubuntu with "sudo apt-get install syslinux". However, the syslinux v3.63 provided with Ubuntu 8.04 has a fatal bug and attempts to boot from drives created with this version will stall with the message, "Unknown keyword in configuration file." Therefore you will need to download a tarball (.tgz.gz) of the source code for the most recent version from The Linux Kernel Archives, compile it, and install:

	tar -zxvf syslinux-4.03.tar.gz
	cd syslinux-4.03
	make
	sudo cp linux/syslinux /usr/bin/syslinux

isotostick Jeremy Katz at RedHat created a nice shell script that copies all the necessary files from the install disk ISO, resets the master boot record (MBR) on the drive, and uses syslinux to create the bootable partition. The versions I found on the web still contain references to the udev program /lib/udev/vol_id which no longer exists and has been replaced with blkid. You can download an appropriately modified version of the script HERE, and execute it as follows:

	sudo ./isotostick.sh --reset-mbr ubuntu*.iso /dev/sdb1

If you are running on a machine that is running Linux from the Ubuntu live CD, you can pull the image directly from the CD:

	sudo .isotostick.sh --reset-mbr /dev/cdrom /dev/sdb1

If everything goes well, you will get something like the following messages. The errors can be ignored.

	Not verifying image...(no checkisomd5 in Ubuntu so skipping)!
	Copying live image to USB stick
	cp: cannot create symbolic link `/media/usbdev.v6hbcy/dists/stable': 
		Operation not permitted
	cp: cannot create symbolic link `/media/usbdev.v6hbcy/dists/unstable': 
		Operation not permitted
	Installing boot loader
	USB stick set up as live image!

3. Booting the Eee PC in Ubuntu and Installing

Insert the bootable flash drive in a USB port and start the Eee PC. I had some problems with the BIOS seeing the flash drive when rebooting, so you might be advised to boot with a cold start from poweroff rather than a reboot with the machine already running.

vesamenu.c32: not a COM32R image

Press ESC on powerup to get a menu of acceptable boot devices. The USB drive should be on the list, which you can use the arrow keys to navigate and RETURN to accept your choice. Assuming the boot image can be read, you will see syslinux messages and a boot splash screen. The boot takes a couple of minutes.

Welcome: After the desktop comes up, you will get a welcom screen asking whether you want to just try Ubuntu or Install it. Choose install. You will get a second prompt to confirm you really want to install.

Allocate Disk Space: I chose the "Manually Specify Partitions" option so I could have /home on a separate partition. This adds security and recoverability by segregating the system files from the user files and also makes future system upgrades easier. I deleted the existing partitions and chose this layout of primary partitions:

	hda1 /boot	ext2	131 MB (format)
	hda2 /		ext3	5000 MB (format)
	hda3 (swap)	swap	1019 MB
	hda4 /home	ext3	73871 MB (remainder of disk - format)

Where Are You / Keyboard Layout: As the install proceeds (it took me around ten minutes) you will be given a series of prompts. The first is to choose an appropriate time zone and the second is to choose a keyboard layout. The defaults are usually best in most American cases.

Who Are You: If you will be using this machine in unfamiliar environments where privacy is important, you may want to use something other than your real name as the "name" and "computer name". However, it is imperative that you remember the user name and password you choose, which will be needed both to log in to the machine and to perform system administration functions.

Reboot: After the install completes you will be prompted to restart Ubuntu and reboot from the new installation on the hard drive.

Update: After rebooting, you should update your package listing and upgrade your packages from the Ubuntu repository to get the most recent and secure versions of the software. There is a graphical utility to do this, but the command line commands for this are:

	sudo apt-get update
	sudo apt-get upgrade

4. Installation Tweaks

Because this machine is fairly old, most of the old, nasty driver issues are resolved in the current distros. The rest of this page is devoted to some installation tweaks you may or may not find useful.

Wireless Chip: The longstanding problems with the Atheros AR5001 wireless chip are largely gone now, although I had a problem with the network-manager preventing connection to access points:

[   51.403537] wlan0: authenticate with 06:01:12:ca:25:05 (try 1)
[   51.409057] wlan0: authenticated
wpa_supplicant[848]: No network configuration found for the current AP
[   51.409127] wlan0: associate with 06:01:12:ca:25:05 (try 1)
[   51.412362] wlan0: RX AssocResp from 06:01:12:ca:25:05 (capab=0x421 status=0 aid=59)
[   51.412371] wlan0: associated
[   51.413750] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[   51.413859] cfg80211: Calling CRDA for country: US
[   51.414578] wlan0: deauthenticating from 06:01:12:ca:25:05 by local choice (reason=3)
[   51.414578] ADDRCONF(NETDEV_UP): wlan0: link is not ready

The solution that I found deep in a support thread was to just get rid of network-manager.

	sudo apt-get remove network-manager

The wireless network can be started with the command "ifup wlan0" and stopped with "ifdown wlan0". Access points can be displayed with the "iwlist wlan0 scan" command and configured with "sudo iwconfig wlan0 essid <ESSID>". If you use a specific ESSID regularly, you can add an entry for it to the /etc/network/interfaces file (replace ESSID with the name appropriate to your network):

	iface wlan0 inet dhcp
	wireless-essid <ESSID>

Flash Player: The Adobe Flash Player is pretty much essential for anything other than the most cursory web browsing nowadays. Download the ".tar.gz for Linux" version from the Adobe website, decompress it and move the plugin library into a plugins directory:

	tar -zxvf install_flash*.gz
	mkdir ~/.mozilla/plugins
	mv libflashplayer.so ~/.mozilla/plugins

TrueType Fonts: Linux distributions rarely ship with a robust collection of fonts, but if you have some TrueType fonts on a Windoze box, it's fairly easy to install them into the X window system from the command line. The list of configured font paths can be found with the command "xset -q" but I usually just use /usr/share/fonts/X11/misc. Copy the .ttf files into that directory and run the commands mkfontdir and mkfontscale to create the configuration files needed by X:

	cd <directory containing .ttf files to install>
	sudo cp *.ttf *.TTF /usr/share/fonts/X11/misc
	cd /usr/share/fonts/X11/misc
	sudo mkfontscale
	sudo mkfontdir
	sudo chown root:root *

You can check to verify the fonts are loading by starting an X application (like gimp). The xlsfonts command lists fonts available directly from X and the fc-list command lists fonts available through fontconfig.

	xlsfonts | less
	fc-list | less

The listing will likely be long, but if the fonts are loading correctly, you will see X font names like these (for Arial and Garamond, respectively):

	-monotype-arial-medium-i-normal--0-0-0-0-p-0-iso8859-1
	-monotype-arial-medium-i-normal--0-0-0-0-p-0-iso8859-10
	-monotype-arial-medium-i-normal--0-0-0-0-p-0-iso8859-15
	-monotype-arial-medium-i-normal--0-0-0-0-p-0-iso8859-2

	-monotype-garamond-medium-i-normal--0-0-0-0-p-0-iso8859-1
	-monotype-garamond-medium-i-normal--0-0-0-0-p-0-iso8859-10
	-monotype-garamond-medium-i-normal--0-0-0-0-p-0-iso8859-15
	-monotype-garamond-medium-i-normal--0-0-0-0-p-0-iso8859-2

Connecting a Projector or Monitor: There is a 15-pin VGA socket on the right side of the machine that can be used to connect an external video monitor or projector. Usually the monitor will communicate with the card and adjust everything accordingly so connection is plug-and-play. If the monitor resolution is greater than the LCD, the automatic adjustment may expand the resolution beyond the height of the LCD display. The external monitor will be fine but the LCD display bottom will be cut off.

You may need to use the xrandr command to tweak the X rotate and resize extension. xrandr with no arguments will give a list of acceptable modes for the LCD display and any connected external monitors:

	Screen 0: minimum 320 x 200, current 1024 x 600, maximum 1024 x 1024
	VGA connected 800x600+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
	   1024x768       60.0 +   75.1     70.1     60.0     43.5  
	   832x624        74.6  
	   800x600        72.2*    75.0     60.3     56.2  
	   640x480        75.0     72.8     66.7     60.0  
	   720x400        87.8     70.1  
	LVDS connected 1024x600+0+0 (normal left inverted right x axis y axis) 220mm x 129mm
	   1024x600       60.0*+   65.0  
	   800x600        60.3  
	   640x480        59.9  
	TV disconnected (normal left inverted right x axis y axis)

LVDS is the Eee-PC's LCD display. VGA is the external device. If you have no device connected, you will not get a listing of VGA modes.

If you are getting no external video, you may need to manually set the output mode. The xrandr man page describes the options. For example, to set the output mode to 1024x768:

	xrandr --output VGA --mode 1024x768

Low Speaker Volume: The speakers in this machine are not very powerful, but you will need to use the alsamixer or some other ALSA-enabled mixer program to set the volume so that audio is at least audible. There is no volume knob anywhere on the machine. Type "alsamixer" at a terminal to start alsamixer with curses interface. Use the arrow keys to adjust the controls. You will need to adjust THREE controls to get maximum volume: Master, PCM and Front.

Text Login: I prefer to see what's going on with my machine rather than have the boot messages hidden behind the splash bitmap just in case there's a boot problem (which used to happen alot). This can be configured in the boot loader GRUB. Edit the /etc/default/grub configuration file and change these options:

        GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
        GRUB_HIDDEN_TIMEOUT=true

To...

        GRUB_CMDLINE_LINUX_DEFAULT="text"
        GRUB_HIDDEN_TIMEOUT=0

After the text mode login, you can start the X window system with the command, "startx".

Removing the Desktop: If you're hard core command line and don't want the clutter and delay of the Ubuntu desktop, you might consider getting rid of the desktop altogether and just using a window manager to manage xterms and X applications. This will speed your boot time a bit and get rid of some annoying background daemons.

I use IceWM, which can be installed with "sudo apt-get install icewm". To get it to start instead of the Ubuntu desktop, create the following startup script file in your home directory: ~/.xinitrc

	xterm
	xsetroot -solid navy
	exec icewm

Flash Drive in fstab: If you get rid of the desktop, you will also lose your automount daemon and pluggin in a flash drive won't automatically mount it. However, you can add this line to your /etc/fstab file to preconfigure a mount point and enable non-superuser mounting:

	/dev/sdb1	/mnt/flash	vfat	noauto,user,exec	0	0

Create the mountpoint:

	sudo mkdir /mnt/flash

After inserting a flash drive, type the following to mount it:

	mount /mnt/flash

Before removing the flash drive:

	umount /mnt/flash

Manual Network Interface Configuration: If you remove your desktop, you will also lose automatic network detection and configuration. Network interfaces in the /etc/network/interfaces file and started with "sudo ifup <interface>" command.

For a normal ethernet connection (eth0) that uses DHCP to get an IP address, add the following line to the /etc/network/interfaces file:

        iface eth0 inet dhcp

For wireless connections (wlan0) a similar entry can be used, and if you regularly connect to a specific network, that ESSID can be configured as well:

	iface ath0 inet dhcp
	wireless-essid <ESSID>

Encrypted Connections - WEP: When accessing wireless networks with that use the older (and less secure) Wireless Encryption Protocol (WEP), you can set the passphrase from the command line using iwconfig, AFTER you have loaded the wlan_wep module. If you attempt to set the key without loading the wlan_wep module, you will get an "invalid argument" message:

	modprobe wlan_wep
	iwconfig wlan0 key s:<passphrase>

Encrypted Connections - WPA: When accessing wireless networks that use the more advanced WPA protocols, you will need to start the wpa_supplicant daemon prior to bringing the interface up and getting an IP address from the DHCP server. Because there are so many steps, I put the commands in a script listed below. Replace ESSID and PASSPHRASE with the values appropriate to the secure network you are trying to access.

	ifconfig ath0 up
	iwlist ath0 scan
	wpa_passphrase "ESSID" PASSPHRASE > /tmp/wpa_supplicant.conf
	chmod 0640 /tmp/wpa_supplicant.conf
	wpa_supplicant -Bw -Dwext -iath0 -c/tmp/wpa_supplicant.conf
	dhclient ath0

Turning off Unnecessary Services: By default Ubuntu turns on a number of services at boot time that you may not need. Disabling unneeded services increases system security and decreases boot time.

Services are turned on by links in the various /etc/rcX.d directories that point to scripts in the /etc/init.d directory. /etc/rc2.d has links to scripts that are run during the single user mode phase of the boot and /etc/rc5.d has links to scripts that are run during an X windows boot. /etc/rcS.d has links to scripts run regardless of boot level. You can rename a file and change a prefix from an 'S' to a 'K' to disable a service.

A crisis is a terrible thing to waste. (Paul Romer)