on eeePC [draft]

What is this paper about

Installing Slackware Linux on Asus' eeePC (4G); this draft uses stuff gathered on Internet and some things from my personnal experience.
You'll find some nice forum here : http://forum.eeeuser.com/viewtopic.php?id=2640&p=1 where dmiller and br00tal made most of the contributions, I'd like to thank them for their inputs here. Please note that this paper does not provides a step by step explanation for the OS installation and that the author assumes that you are familiar with the Slackware distribution (IE: package selection, basic configuration...).

(Pre)-installation

The first thing we'll do is make a bootable usb key or SD card to run our Slack installer.

ctrl-alt-t (open a console in Xandros)
$ wget http://ftp.lip6.fr/pub/linux/distributions/slackware/slackware-12.0/usb-and-pxe-installers/usbboot.img
$ sudo su
# umount /dev/sdX (umount the removable storage device you just inserted, check with dmesg in case)
# dd if=usbboot.img of=/dev/sdX bs=512 (copy the image on the key/SD) 
       

Let's reboot on the newly created usb boot drive (and wait 5-10min :s) You can copy the packages of the Slack dvd/cd on a USB hard drive in the meantime.

Once the boot is over, log in as root and mount your USB hard drive. You can backup the _hard_ drive of the eee now (or never) with dd, this takes a while too. Then run cfdisk, wipe all the partitions and make a brand new bootable ext2 partition taking all the space.

# mkdir /hd
# mount /dev/sdX /hd
# (dd if=/dev/hdc of=/hd/asus_hdc_backup.img) //zzz
# cfdisk /dev/hdc
       

When you have your newly partitioned hdc, enter the setup, choose /dev/hdc for / and set your /hd/slackware directory as your source; you're ready to install your OS... Once it's finished, I had no problem setting lilo on the MBR for the first boot of the distrib.

Kernel Installation (2.6.21.4-eeepc)

Once your Slack is running you have two options : installing some already eee optimized kernel with packages (obviously faster) or compiling your own vanilla. Note that the kernel from the packages doesn't include the iptables modules.
We'll also install grub as boot loader. As stated in the README on slackeee.strangled.net : "It is required that one alters their /etc/fstab Since this is such a bare-bones kernel, everything is recognized as a SCSI device. You must change the /dev/hdc value in /etc/fstab to the volume's UUID. You can determine the UUID by issuing the "blkid" command as root. Replace the /dev/hdc bit with the entire UUID="your_uuid". This will still allow the system to boot with the default hugesmp kernel."

http://slackeee.strangled.net/packages/kernel-modules-2.6.21.4-eeepc-i686-6.tgz
http://slackeee.strangled.net/packages/kernel-slim-2.6.21.4-eeepc-i486-5.tgz
http://slackeee.strangled.net/packages/kernel-source-2.6.21.4-eeepc-i386-2.tgz
http://slackeee.strangled.net/packages/README.txt

# installpkg kernel-modules-2.6.21.4-eeepc-i686-6.tgz kernel-slim-2.6.21.4-eeepc-i486-5.tgz kernel-source-2.6.21.4-eeepc-i386-2.tgz
# installpkg /hd/slackware/extra/grub/grub-0.97-i486-3.tgz
# grubconfig
       

Install grub once on the MBR with grubconfig, then you just need to edit /boot/grub/menu.lst to change your boot menu (no need to rerun it like lilo).

timeout 5

  title Linux-2.6.24.3
  root (hd0,0)
  kernel /boot/vmlinuz-2.6.24.3-v-eeepc root=/dev/sda1 ro quiet splash vga=785

  title Linux
  root (hd0,0)
  kernel /boot/vmlinuz root=/dev/sda1 ro quiet splash vga=785


  title Linux-old
  root (hd0,0)
  kernel /boot/vmlinuz-huge-smp-2.6.21.5-smp  root=/dev/hdc1 ro quiet splash vga=769

# Linux bootable partition config ends
title --- For help press 'c', type: 'help'
root (hd0)
title --- For usage examples, type: 'cat /boot/grub/grub.txt'
root (hd0)
     

Last step is changing your fstab; run blkid /dev/hdc1 to get your UUID (don't use mine :D), and set noatime on it too.

UUID="be40983f-d050-4433-b0da-992375215594"	/	ext2	defaults,noatime	1	1
#/dev/hdc1        /                ext2        defaults         1   1
#/dev/cdrom      /mnt/cdrom       auto        noauto,owner,ro  0   0
/dev/fd0         /mnt/floppy      auto        noauto,owner     0   0
devpts           /dev/pts         devpts      gid=5,mode=620   0   0
proc             /proc            proc        defaults         0   0
    

Vanilla Kernel setup (Skip if do not want)

Here you go : config-eee-2.6.24.3. Patch your kernel with the unionfs patch you'll find here : http://www.fsl.cs.sunysb.edu/project-unionfs.html. My own kernel with iptables and (I hope) few useless stuff. bzImage is about 1.2M.

LAN SETUP

# wget http://people.redhat.com/csnook/atl2/atl2-2.0.4.tar.bz2
# tar jxvf atl2-2.0.4.tar.bz2 
# make
# cp atl2.ko /lib/modules/2.6.24.3-v-eeepc/kernel/drivers/net/
# depmod -a
# modprobe atl2
# ifconfig 

Wifi setup

$ wget http://snapshots.madwifi.org/special/madwifi-nr-r3366+ar5007.tar.gz
$ tar zxvf madwifi-nr-r3366+ar5007.tar.gz
$ cd madwifi-nr-r3366+ar5007.tar.gz
$ su
# scripts/madwifi-unload
# scripts/find-madwifi-modules.sh `uname -r`
# make && make install
# modprobe ath_pci

// = mode managed
# wlanconfig ath0 create wlandev wifi0 wlanmode sta
# iwconfig ath0 key blabla essid blabla........ (wep)
# wlanconfig ath0 destroy

//mode monitor
# wlanconfig ath0 create wlandev wifi0 wlanmode monitor
# wlanconfig ath0 destroy

//adhoc mode
# wlanconfig ath0 create wlandev wifi0 wlanmode adhoc 
       

Sound

I had some problems with mixers when I installed the latest alsa-driver so I switched back to those and they work ok : http://slackeee.strangled.net/drivers/alsa-driver/alsa-driver-hg20071129.tar.bz2 The mixer device is LineOut. (Don't forget to change ALSA output plugin in xmms also ^ ^)

# ./configure --with-cards=hda-intel
# make && make install
# alsaconfig
# alsamixer

CPU speed

Use cpufeq-set to change or make the cpu change his frequency when not using to save temperature and battery...

# modprobe p4-clockmod
# modprobe cpufreq_ondemand
# modprobe cpufreq_conservative
# modprobe cpufreq_powersave
# modprobe cpufreq_performance
# cpufreq-set -g ondemand -d 450Mhz -u 900Mhz
       

Here's a nice app to monitor your battery under X : http://osdbattery.sourceforge.net/

Xorg.conf

dmiller's file, works like a charm.

Section "ServerLayout"
    Identifier "Xandros"
    Screen 0 "Screen1"
    InputDevice "keyboard"
    InputDevice "mouse"
    InputDevice "synaptics"
EndSection

Section "Files"
    RgbPath    "/usr/share/X11/rgb"
    FontPath "/usr/share/fonts/local/"
    FontPath "/usr/share/fonts/misc/"
    FontPath "/usr/share/fonts/OTF/"
    FontPath "/usr/share/fonts/TTF/"
    FontPath "/usr/share/fonts/Type1/"
    FontPath "/usr/share/fonts/CID/"
    FontPath "/usr/share/fonts/Speedo/"
    FontPath "/usr/share/fonts/75dpi/:unscaled"
    FontPath "/usr/share/fonts/100dpi/:unscaled"
    FontPath "/usr/share/fonts/75dpi/"
    FontPath "/usr/share/fonts/100dpi/"
    FontPath "/usr/share/fonts/cyrillic/"
EndSection

Section "Module"
    Load "glx"
    Load "dri"
    Load "dbe"
    Load "extmod"
    Load "synaptics"
EndSection

Section "ServerFlags"
    Option "AllowMouseOpenFail"
    Option "BlankTime" "5"
#    Option "DontVTSwitch" "true"
EndSection

Section "InputDevice"
    Identifier "keyboard"
    Driver "kbd"
    Option "CoreKeyboard"
    Option "XkbRules" "xorg"
    Option "XkbLayout" "us"
    Option "XkbVariant" ""
EndSection

Section "InputDevice"
    Identifier "mouse"
    Driver "mouse"
    Option "Device" "/dev/input/mice"
    Option "Protocol" "IMPS/2"
    Option "Emulate3Buttons" "yes"
    Option "ZAxisMapping" "4 5"
    Option "CorePointer"
EndSection

Section "InputDevice"
    Identifier "synaptics"
    Driver "synaptics"
    Option "Device" "/dev/psaux"
    Option "Protocol" "auto-dev"
    Option "LeftEdge" "1000"
    Option "RightEdge" "5400"
    Option "TopEdge" "1000"
    Option "BottomEdge" "4900"
    Option "PalmDetect" "0"
    Option "SHMConfig" "true"
    Option "SendCoreEvents" "yes"
    Option "HorizScrollDelta" "0"
    Option "RBCornerButton" "0"
    Option "RTCornerButtom" "0"
    Option "MaxSpeed" "0.1"
EndSection

Section "Monitor"
    Identifier "Monitor1"
    VendorName "ASUS"
    ModelName "eeePC P701"
    Modeline "800x480" 29.58 800 816 896 992 480 481 484 497 -HSync 
+Vsync # 60 Hz
#    DisplaySize 153 115
	Option "DPMS"
EndSection


Section "Monitor"
    Identifier "TV"
    Option "Ignore" "True"
EndSection

Section "Device"
    Identifier "Device1"
    Driver "intel"
    VendorName "Intel Corporation"
    BoardName "Mobile 915GM/GMS/910GML Express Graphics Controller"
    BusID "PCI:0:2:0"
        Option "XvMCSurfaces" "7"
#        Option "Cachelines" "2048"
EndSection

Section "Screen"
    Identifier "Screen1"
    Device "Device1"
    Monitor "Monitor1"
    DefaultDepth 24
    SubSection "Display"
        Depth 24
                Modes "800x600"
#        Virtual 1680 1680
        Virtual 2048 2048
    EndSubSection
EndSection

Section "DRI"
    Mode 0666
EndSection

Section "Extensions"
    Option "Composite" "Disable"
EndSection
   

Touchpad

$ wget http://web.telia.com/~u89404340/touchpad/files/synaptics-0.14.6.tar.bz2
$ tar jxvf synaptics-0.14.6.tar.bz2
$ cd synaptics-0.14.6
$ make
$ su
# make install
//Restart X

ACPI stuff

You can find the module here : http://slackeee.strangled.net/drivers/asus-acpi/. You can also get thermal info (not through this module).

# cat /proc/acpi/thermal_zone/TZ00/temperature
temperature:             48 C

If you have xosd : 
# cat /proc/acpi/thermal_zone/TZ00/temperature |osd_cat -p bottom -i600

Shutdown problem

Sometimes, when shutting down the eee, the screen goes blank, but the power light remains on. If you are having this problem, then try the following: Using your favorite editor, add this line to /etc/rc.d/rc.6 just before the line: echo "Unmounting local file systems."

modprobe -r snd_hda_intel