Linux on the Asus EeePC
Author: Michael Minn
31 March 2013
This page describes how to install Ubuntu v12.10 on an ASUS Eee PC 1000HD. These instructions also include some tweaks to unbloat the distribution and improve performance. Most of the driver issues with previous distributions of Ubuntu are resolved as of this version. For a description of the older issues, see my Ubuntu 8.04 page.
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 expanded features while retaining the small form factor. ASUS stopped making netbooks on 1 January 2013, signaling the effective succession of the netbook era by the era of mobile devices.
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)
- Seagate Momentun 5400.3 80 GB 2.5" 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
- 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 on 14 October 2008 for $399 + $9.81 shipping + 34.30 tax = $444.10
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 on an existing Linux system. If you have no problem following those instructions, you do not need to read further in this section.
Download: the current Ubuntu release CD image ISO from Ubuntu.com.
Insert a USB thumb drive into a USB slot. This drive needs to be at least 2GB and will be completely overwritten with the installation software.
USB Creator: Run USB Creator from a command-line terminal as superuser (so the program has direct access to the USB drive):
The Source disk image is the ISO file you downloaded. The Disk to use device list should show the USB drive you have inserted.
Unless you plan on booting from the USB drive regularly, you can select documents and settings Discarded on shutdown...
Click Make Startup Disk when you're ready.
3. Booting the Eee PC in Ubuntu and Installing or Upgrading
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.
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 welcome screen asking whether you want to just try Ubuntu or Install/Upgrade it. Choose install/upgrade. You will get a second prompt to confirm you really want to install.
Allocate Disk Space: If you are installing (not upgrading) you may want to "Manually Specify Partitions" option so you can 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 / Network Manager: 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: 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.
5. System Simplification
Ubuntu has bloated significantly over the years, which not only makes the system more confusing to use, but reduces response time with this system's weak CPU. The following are some simplification tweaks that gets rid of some of the bloat and makes it easier to see what your computer is doing.
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
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:
Before removing the flash drive:
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 wlan0 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 wlan0 up iwlist wlan0 scan wpa_passphrase "ESSID" PASSPHRASE > /tmp/wpa_supplicant.conf chmod 0640 /tmp/wpa_supplicant.conf wpa_supplicant -Bw -Dwext -iwlan0 -c/tmp/wpa_supplicant.conf dhclient wlan0
8. Unnecessary Services and Cron Jobs
Ubuntu has been getting quite bloated for awhile and there are a number of services I shut down or uninstalled to avoid overhead, improve security and free disk space.
In many cases you can also shut these down by modifying the upstart scripts in /etc/init and changing the start on line(s) to:
start on runlevel [!0123456]
locate and mlocate are commands that can be used to search for files on your hard drive(s). They use a daily chron script (/etc/cron.daily/mlocate) that shows up in process lists as updatedb.mlocat and sporadically kills your system performance for a few minutes. If you don't use this, remove the package:
sudo apt-get purge mlocate
apt-xapian-index is a maintenance tool for Debian software package information. This sporadically runs update-apt-xapian-index and also tanks system response at unexpected and undesirable times. You can make it go away by removing the package:
sudo apt-get purge apt-xapian-index
whoopsie: is the Ubuntu crash database submission daemon. If you monitor your network at interface start, you will see it sending messages to daisy.ubuntu.com. Smells a little like phone home. B'bye...
sudo apt-get purge whoopsie
AppArmor: is a security policy utility of some kind. It seems to not be used for much anymore.
sudo apt-get purge apparmor
Bluetooth support is enabled by default. I don't ever use bluetooth.
sudo apt-get purge bluez gnome-bluetooth
Gwibber: is a microblogging client so you can smoke crack without having to light up.
sudo apt-get purge gwibber gwibber-service gwibber-service-facebook gwibber-service-identica gwibber-service-twitter
Zeitgeist is another big-brother event logger.
sudo apt-get purge zeitgeist zeitgeist-core libzeitgeist-1.0-1 python-zeitgeist
Speech Dispatcher is a speech synthesis service that is enabled by default. Thankfully, I do not need this.
sudo apt-get purge speech-dispatcher
CUPS: is the Combined Unix Printing System. If you don't have a printer, you may want to disable the start on boot in the /etc/init/cups.conf script by changing:
start on (filesystem and (started dbus or runlevel )) To: start on runlevel [!0123456]
PulseAudio is a nasty sound server that adds latency and eats up CPU. If you don't have the desktop you can ditch it.
sudo apt-get purge pulseaudio
However, you will need to deal with protections set up for ALSA that will keep your applications from being able to access the sound devices. Add yourself to the audio group:
adduser <username> audio
Unnecessary audio stuff: I ride with mplayer
apt-get purge totem rhythmbox apt-get purge gstreamer-0.10-pulseaudio gstreamer-0.10-x apt-get purge gstreamer-0.10-gconf gstreamer-0.10-plugins-good
Nautilus: The GNOME file manager. If ls and mv are good enough for Kernighan, it's good enough for me.
apt-get purge nautilus nautilus-data
Network Manager: as mentioned above, causes problems with wlan
apt-get purge network-manager
Unity "Desktop Experience": I prefer my experiences in more interesting places.
apt-get purge unity-common unity-services unity-webapps-service unity-webapps-common unity-lens-files
Thunderbird: Does anyone really need a desktop e-mail client anymore?
apt-get purge thunderbird
gnome-online-accounts: Gnome online account manager?!
apt-get purge gnome-online-accounts
usbmuxd: Synchronization and management applications for the iPhone and iPod Touch
apt-get purge usbmuxd
7. Black Screen Problem
On 27 January 2013, 51 months after first boot, I tried to boot but the screen stayed dark. The hard drive light indicated that the machine was booting and connecting the VGA port to a monitor verified this.
This seems to be a common problem with numerous models of the EeePC that requires resetting the CMOS memory. Special thanks to Indosolo and LEEEgend for the guidance.
0) There is a pinhole in the bottom of the machine that seems to be a CMOS reset button, but pressing that internal button with a needle didn't solve the problem for me.
1) Unplug the power adapter, remove the battery, and remove the two screws holding down the hard drive / RAM access door.
2) Remove the hard drive (3 screws). There are folks who say that pulling the RAM out for a few seconds also solves this problem, so you might give that a try at this point.
3) Remove the eight large screws around the edge and three small screws in the battery cavity.
4) Using a flat-head screwdriver, gently release the three tabs at the top of the keyboard holding it down. Gently lift the top of the keyboard and pull it back. There is a weak adhesive holding the keyboard down so it will require some pressure to remove.
5) Gently remove the button connection (top left), the mouse connection (bottom right) and the keyboard connection (bottom left). The mouse and keyboard ribbon cables require pushing the lock tabs on the edge of the connector out to release the cable.
6) Remove the seven (eight?) screws holding the top panel to the motherboard.
7) Lift the case top to reveal the motherboard. Pull the CMOS battery plug for at least 30 seconds to reset the CMOS.
8) Replace the CMOS battery cable, plug in the power adapter and try powering up the machine. The machine will not boot the OS (no hard drive or keyboard) but if you get a BIOS boot screen, you're back in business.
9) Power down the machine and reverse the procedures above to reassemble.
If you think your users are idiots, only idiots will use (your software). (Linux Torvalds)