Eee PC Linux
Install Ubuntu from Flash Drive
I decided to ditch the standard Eee Xandros Linux distribution and go for the more user centric Ubuntu distro. At the time of writing the current release is 7.10, codename Gusty Gibbons.
For the installation I used a regular Pretec i-Disk Tiny 1 GB USB 2.0 flash drive. Almost all flash drives are either formatted as FAT16 or FAT32. For a computer to be able to boot from a flash drive it has to have support in the bios for USB drives and the flash drive has to have a master boot record (MBR), i.e a entry-point to load code.
I'm using a Windows machine to perform the preparation, but it's fully possible to do it on a Linux machine.
Make Flash Drive Bootable
To install a Linux bootloader on a flash drive, there is a wonderful tool called syslinux. I'm installing t
- Download the latest syslinux (3.61 or later) zip-archive from syslinux.zytor.com under the kernel.org link
- Extract the sysliunx.exe in the win32 directory from the zip-archive
- Open a command-promt and execut 'syslinux -s g:'. Where g: is the flash drive
- The tool will install a bootloader and a hidden ldlinux.sys file in the root directory
- Try to boot from the drive, a 'boot:' prompt should appear
Copy Install Files
The normal way to install a distro is either via a CD/ISO or netinstall by downloading the files. This method will use the CD/ISO method and copy the files from the CD/ISO over the the flash drive.
- Download the ISO-file for the latest Ubuntu release. As of writing it's Gusty Gibbon, e.g ubuntu-7.10-desktop-i386.iso. Fortunately, I ordered the free retail Ubuntu install disc and got it in the mail
- Either mount the ISO or insert the CD, and select all the files and copy them over to the root of the flash drive, or use 'xcopy /e /h /k f:\*.* g:' in a command-prompt
- To allow the syslinux bootloader to load the installation, rename the 'isolinux' directory to 'syslinux'
- And inside the 'syslinux' directory, rename 'isolinux.bin' and 'isolinux.cfg' to 'syslinux.bin' and 'syslinux.cfg' respectively
- Now, the flash drive is ready
Installation
The installation should work as if it was running form a CD. Nothing special is done to make it run from a flash drive other than renaming the directory and files mentioned above.
- Insert the flash drive, start the machine, press ESC to show the boot device list, and select the flash drive
- When the 'boot:' prompt is shown, press enter, ignore the unknown keywords errors
- After a few minutes the Ubuntu splash screen should appear and the desktop, double click the 'Install' application
- Since the Eee screen resolution is only 800x480, the installation screen will be cut off, but there's a trick
- It's holding ALT+dragging the window, but to make the trick work properly the Compiz effects has to be disable
- From the System menu, select Preferences and Appearance, then Visual Effects and None. Close the window.
- Now, in the installation window hold ALT+drag the window upwards to reveal the buttons, follow the normal installation
- Once at the paritioning screen, select 'Manual' and pick the correct drive and click 'New paritions'. My drive was the VoyagerGT 4 GB on /dev/sdd.
- I created one primary parition, selecting 'ext2' as the filesystem. It's not journaled will supposedly use less write cycles and spare the flash drive for excessive use. 'Mount point' should be '/'.
- When prompted to select a swap-memory parition, ignore and continue. Swap will use excessive flash write cycles and my machine already has 2 GB of physical memory.
- After rebooting I got a 'No operating system found' error message by the boot loader. I installed again and at the end of the installation, in 'Advanced Options' changed boot loader disk to '(hd1)'. It let me in to the Grub bootloader where I could select which option to boot but I had to change back to '(hd0)' by typing 'e' and 'e' again, then 'b' to finally boot. After that I fixed the /boot/grup/menu.lst configuration file to make it permanent.
Tweaks
Post Install
A few quick things to get rid off after installing from a USB drive.
Remove the cdrom references in /etc/fstab.
sudo pico /etc/fstab # Disable by adding a # before: /dev/sdd /media/cdrom0 udf,iso9660 user,noauto,exec 0 0
Next, when installing packages apt-get tries to load packages from the cdrom, and the package download might be disabled if the installer didn't detect any Internet connection.
sudo pico /etc/apt/sources.list # Disable the first line, add a # to the start deb cdrom:[Ubuntu 7.10 _Gutsy Gibbon_ - Release i386 (20071016)]/ gutsy main restricted # Also remove any # for any lines with the pretext 'Line commented out by installer because it failed to verify:'
To make the following confirmation easier and to avoid constrain your hands when typing on the Eee PC keyboard, install SSH and login remotely. Use the ethernet-port to get a network connection, works right out-of-the-box.
apt-get install ssh
Networking
To get wireless and ethernet set up, I had to use the network-admin utility in System, Administration, and Network. My Intel 802.11n adapter was discovered automatically and I could just select 'Properties' and enter the correct ESSID and password, deactivate and activate, to get it to work.
Bluetooth
I think Bluetooth is so standardized that every adapter you through at it will work, at least my adapter did.
To get my Logitech V470 Bluetooth mouse, I just had to enable/insert the Bluetooth adapter, make the mouse discoverable by pressing the Connect-button, and enter the simple commands below
Scan for devices.
ivc@eee:~$ hcitool scan Scanning ... 00:07:61:A6:84:15 Bluetooth Laser Travel Mouse 00:07:61:45:9E:C3 AGANDHJIN
Connect to MAC address of the mouse.
ivc@eee:~$ sudo hidd --connect 00:07:61:a6:84:15
And it just works! To make the changes active over reboots, enter these lines into /etc/default/bluetooth.
HIDD_ENABLED=1 HIDD_OPTIONS="--search --server" HIDD_OPTIONS="--connect 00:07:61:A6:84:15 --server"
On the next reboot, the Bluetooth manager might ask you to authorize that the mouse is permanently granted to automatically connect.
Wireless
I replaced the default mini PCI-express card for a new Intel 4965AGN adapter, and I had problems with the Linux driver in kernel 2.6.22. It keept deauthorizing and authorizing when I tried to connect to a WPA access point. It worked once but never after that.
If you're using the default mini PCI-express adapter, try one of these these methods.
While trying to compile the latest Linux driver released by Intel, I couldn't get passed the last step to compile the new mac80211 module.
sudo make modules modules_install ~ make[1]: *** No rule to make target `arch/i386/kernel/asm-offsets.c', needed by `arch/i386/kernel/asm-offsets.s'. Stop.
I tried to use the existing 2.6.22 mac80211 module and continue to compile the iwl4965 module, but it didn't turn out good. The driver complained about missing functions and 'timed out' when trying to bring it up.
A last thing could try was to test the ndiswrapper driver hackery trick and use a Windows driver. Fortunately, it turned out very well and I finally got a stable wireless connection. [1]
Install the necessary packages. The ndisgtk is a graphical utility to set up ndiswrapper.
sudo apt-get install ndiswrapper-common ndiswrapper-utils-1.9 ndisgtk
Disable the Linux drive by blacklisting it in modprobe.
sudo echo 'blacklist iwl4965' | sudo tee -a /etc/modprobe.d/blacklist
Download the driver for Intel 4965AGN v11.1.1.0 for XP. Extract the files to a directory and if necessary upload them to the Eee PC.
Either use the ndisgtk utility or ndiswrapper to install the driver via the correct '.inf'-file. For this adapter there were two '.inf'-files, NETw4k32.INF for Windows 2000 (k) and NETw4x32.INF for Windows XP (x). I used the last one, the first gave me a 'invalid driver'-message.
sudo ndiswrapper -i ~/driver/NETw4x32.INF
After a short while the driver should've been installed successfully.
ndiskwrapper -l netw4x32 : driver installed device (8086:4229) present (alternate driver: iwl4965)
Install the ndiswrapper wlan0 alias for modprobe.
sudo ndiswrapper -m
And add the ndiswrapper module to automatically load on startup.
sudo echo ndiswrapper >> /etc/modules
Reboot the system and the adapter should come up and be available from the network-admin systray icon.
My system hang and crashed when I tried to 'modprobe ndiswrapper' but I think that had something to do with the old Linux driver still being loaded. After a few reboots and tries it worked.
To remove the ndis driver to start over, try:
sudo ndiswrapper -r ntw4w32
Freeing Space
The flash drive is only 4 GB and I need all the space I can get, removing i.g. OpenOffice.org will free some space.
sudo apt-get -y remove openoffice.org openoffice.org-base openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw openoffice.org-evolution openoffice.org-filter-mobiledev openoffice.org-gnome openoffice.org-gtk openoffice.org-help-en-us openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-common openoffice.org-l10n-en-gb openoffice.org-l10n-en-za openoffice.org-math openoffice.org-style-human openoffice.org-writer openoffice.org-hyphenation
More Desktop Space
The default desktop theme is somewhat large and occupies prescious work space. These commands will make the fonts and panels smaller, and fix a few other things [2].
Setting smaller font sizes
gconftool-2 --set /apps/nautilus/preferences/desktop_font --type string "Sans 8" gconftool-2 --set /desktop/gnome/interface/document_font_name --type string "Sans 8" gconftool-2 --set /desktop/gnome/interface/font_name --type string "Sans 8" gconftool-2 --set /apps/metacity/general/titlebar_font --type string "Sans Bold 8" gconftool-2 --set /desktop/gnome/interface/monospace_font_name --type string "Monospace 8"
All applications can go full-screen using F11
gconftool-2 --set /apps/metacity/window_keybindings/toggle_fullscreen --type string "<Alt>F11"
Smaller toolbars using icons only
gconftool-2 --set /desktop/gnome/interface/toolbar_style --type string "icons"
Setting the right mixer (fixes the mute key)
gconftool-2 --set /desktop/gnome/sound/default_mixer_tracks --type list --list-type string "[PCM]"
Do not display the incorrect battery warning at login
gconftool-2 --set /apps/gnome-power-manager/notify/low_capacity --type bool 0
Unconstrain windows to the top of the screen
gconftool-2 --set /apps/compiz/plugins/move/allscreens/options/constrain_y --type bool 0
Making the top & bottom panels smaller
gconftool-2 --set /apps/panel/toplevels/top_panel_screen0/size --type integer 19 gconftool-2 --set /apps/panel/toplevels/bottom_panel_screen0/size --type integer 19
These commands will be saved and survive a reboot.
Boot Speed-up
The Ubuntu boot up is not exact fast compared to the Xandros install. Mine takes a little over 60 seconds with Bluetooth and wireless.
Changing the concurrency line below from 'none' to 'shell' will allow the startup script to start simuntaniously and in parallel. This will squeeze the most out of the CPU to lower the boot-up time a few seconds.
# Specify method used to enable concurrent init.d scripts. # Valid options are 'none' and 'shell'. CONCURRENCY=shell
But there is a bug, HAL (Hardware abstraction layer) and D-Bus is started at the same time which causes HAL to fail as it depends on D-Bus. The system will boot but devices will stop working, e.g. wireless adapter. To fix this, move the HAL script to start at a later step [3]
sudo mv /etc/rc2.d/S12hal /etc/rc2.d/S13hal sudo mv /etc/rc3.d/S12hal /etc/rc3.d/S13hal sudo mv /etc/rc4.d/S12hal /etc/rc4.d/S13hal sudo mv /etc/rc5.d/S12hal /etc/rc5.d/S13hal
Microphone
The Eee PC microphone is not detected correctly and a quick fix is to add the line below to /etc/modprobe.d/alsa-base.
# Eee PC microphone fix options snd-hda-intel model=3stack-dig
And reboot to load. To test that the microphone works, use the Sound Recorder program under Applications and Sound & Video. It seems whichever input source you select it records the microphone.
Shutdown Fix
When shutting down the machine, it won't power off properly because a audio module was still loaded. Add a line in /etc/init.d/halt to unload the module during shutdown.
sudo pico /etc/init.d/halt # Add this line right after do_stop() modprobe -r snd-hda-intel
The next shutdown should power off the machine completely.
Increase Battery Life
There is a handy tool called 'powertop' that will monitor and analyze Intel-based systems, and recommend things to change to increase the battery life.
Disable auto-run for the non-existant cdrom device.
sudo hal-disable-polling --device /dev/sdd