OpenSuSE 10.3 on eeePC External SDHC
Contents |
Introduction
Note: This has been UPDATED. Please see the bottom of the page, or the table of contents above.
After getting my new eeePC and booting once to the default Xandros just to make sure that it worked (and that I could get to Advanced Mode), I set about turning this "stock" machine into something usable. First, I opened up the infamous "warranty void if this seal broken" panel and swapped out the factory 512MB RAM module for a 1GB chip.
I didn't want to blow away the factory Xandros install - even though I'd never use it, I figred it might be nice to keep the factory settings - even if just in case of warranty issues. So, I set about installling my usual OS - OpenSuSE 10.3 - on a 4GB SDHC card.
Throughout this entire process, I did a lot of Googling but by and far the most useful resource was eeeUser.com and their forum and wiki.
Required Supplies
- USB DVD/CDrom Drive
- OpenSuSE 10.3 KDE CD (or DVD)
- eeePC 4G Galaxy
- 4 GB Transcend SDHC card
SD Card Partitions
/dev/sdb (external 4GB SDHC card)
As Setup in Installer
/dev/sdb1 2.4GB Ext2 / noatime /dev/sdb2 1.2GB Ext2 /home noatime
Output of /etc/fstab when installation is finished
/dev/disk/by-id/usb-USB2.0_CardReader_SD0_146030377350-0:0-part1 / ext2 noatime,acl,user_xattr 1 0 /dev/disk/by-id/usb-USB2.0_CardReader_SD0_146030377350-0:0-part2 /home ext2 noatime,acl,user_xattr 1 0 /dev/disk/by-id/scsi-SATA_SILICONMOTION_S28010475917499008405-part3 /windows/C vfat users,gid=users,umask=0002,utf8=true 0 0 /dev/sdb1 /mnt/eee-system ext2 ro,defaults,noatime 0 0 /dev/sdb2 /mnt/eee-user ext3 rw,defaults,noatime 0 0
Installation
Press ESC at boot (repeatedly, during the first splash screen) to get a boot menu and select to boot from your CD/DVD. The installation should go mostly as normal. I setup two partitions on /dev/sdb (the SD card, it should appear empty), both set with option "noatime" to minimize writes to the card. I also custommized the package selection from the CD to minimize space used - though I had to install many packages later (using online repositories) which weren't included on the KDE CD (such as emacs, thunderbird, etc.).
At this point, I just proceeded with the installation, using this forum post as a guide.
Everything worked fine up to the reboot. The SuSE CD's "boot from hard disk" option only boots to the main drive, no option for other drives. Booting directly from the BIOS doesn't work - GRUB can read the menu.lst but can't load the kernel. There turned out to be two problems - first, Xandros uses unionfs to mount the root partition. So if you login as root and edit /etc/fstab, which is really on /dev/sda1, you actually edit a copy on /dev/sda2. To edit the actual file, I followed the instructions for Rescue Mode here, remounted /dev/sda1 "rw" edited /boot/grub/menu.lst
to add a chainloader entry for OpenSuSe like:
title OpenSuSE Chainloader sdb1 rootnoverify (hd1,0) makeactive chainloader +1 boot
I also commented out the hiddenmenu
line to force GRUB to show the boot menu. I changed the default to OpenSuSE (default=3
) and changed the timeout to 10 seconds (timeout=10
).
Through the Xandros "Rescue Mode" single-user shell, I also mounted /dev/sdb1 (the first partition on the SD card, OpenSuSE's /
) and checked to be sure that all lines referred to "root(1,0)
", except for the last entry, to kick back to the default (Xandros) GRUB:
###Don't change this comment - YaST2 identifier: Original name: Normal Boot (/dev/sda1)### title Factory Boot (/dev/sda1) root (hd0,0) configfile /boot/grub/menu.lst
At this point, I rebooted, selected the OpenSuSE entry, and booted OpenSuSE. I entered the root password, and... Yes! Configuration screens! SuSE did not detect *either* of the network cards by default. I'm not even worrying about webcam and all that - just talking to the outside world.
Network
As per Squonk's Tutorial you need to download the Asus network lan driver package. I built from source, which gave me a nice little atl2.ko module, which I stuck in /lib/modules/<KERNEL VERSION>/kernel/drivers/net/atl2/
. I tested it with insmod /lib/modules/<KERNEL VERSION>/kernel/drivers/net/atl2/atl2.ko
, and it worked fine. On reboot, obviously, it's gone. Here are the steps:
- Edit
/etc/sysconfig/kernel
and addatl2
to the line starting withMODULES_LOADED_ON_BOOT
. - Run, as root,
/sbin/depmod -a
- Now, try a
modprobe atl2
. It should work, and you should see NetworkManager begin connecting. Everything should now work on reboot.
Post-Installation
I booted successfully to SuSE and logged in. The screen area was a bit messed up, with a bit cut off of the top. Now, I turned to this article for some SuSE-specific information, and also looked at the OpenSuSE HCL for tips.
I just downloaded everything for Linux from the Asus download site, as well as *ALL* of the RPMs for my kernel from this source, and burned them to CD. After installing the atl2 RPM, I was able to configure the wired interface - and it worked! Immediately!
From the instructions in the above article I was able to get wireless working. This involved installing the kernel-source and linux-kernel-headers packages, as well as gcc and its' dependencies, which I did after running a YaST Online Update and updating to the newest version of the kernel. After building the madwifi driver, rebooting, and verifying that it worked, I promptly removed the packages I had installed (most importantly kernel-sources, which took up ~240MB on the SD card)
From here, I followed the above article again and was able to get sound working I also took some time to install additional packages, including Thunderbird, emacs-nox, nmap, and others. At this point, my 4GB SD card has two partitions - a 2.5GB /
partition (/dev/sda1
) and a 1.3GB /home
partition (/dev/sda2
). As of finishing the installation, my root partition has 97% usage! In retrospect, I probably would have increased the root partition size by 500MB or so, and shrunk the home partition equally.
At this point, I had everything hardware working with two exceptions:
- The webcam
- Battery time calculation / remaining percentage.
I also copied over some personl data from my full-size laptop: my .emacs
, .bashrc
, my firefox settings and passwords (using the password import/export add-on), and added some firefox extensions.
Webcam
According to the YaST Hardware Information tool (seemed like too much work to grep dmesg) te webcam seems to be an unidentified USB device, having vendor ID 256794 and device ID 206689.
Checking dmesg
, I see:
usb 5-8: new high speed USB device using ehci_hcd and address 3 usb 5-8: new device found, idVendor=eb1a, idProduct=2761 usb 5-8: new device strings: Mfr=0, Product=0, SerialNumber=0 usb 5-8: configuration #1 chosen from 1 choice
I installed uvcvideo-kmp-default-r166_2.6.22.5_31-2.1.i586.rpm
from the above repository and restarted. After restarting, UVCview still couldn't recognize the device, but Kopete displayed video in the "Configure" panel perfectly.
In dmesg
, I'm now seeing:
usb 5-8: new high speed USB device using ehci_hcd and address 3 usb 5-8: new device found, idVendor=eb1a, idProduct=2761 usb 5-8: new device strings: Mfr=0, Product=0, SerialNumber=0 usb 5-8: configuration #1 chosen from 1 choice usb-storage: device scan complete usbcore: registered new interface driver uvcvideo
ACPI
Photos
Still to be done
- Battery power/level/remaining time
- Get rid of syslog-ng - logging just wears out the SD card
- Make sure swappiness is set to 0
- remove unused RPMs
- Update all software again
- Figure out how to speed up boot / disable unused services
Results
So far I've also made sure I don't have a swap partition and also emptied out all log
entries in /etc/syslog.conf
so that nothing but the kernel is logging - this should cut down on wear on the SD card.
In its' factory configuration (as specified above), the system takes 1 minute and 4 seconds to boot to login screen (graphical) and 34 seconds to shut down from full graphical session. In the next few weeks, I plan on disabling some services and cleaning up configurations to speed this up.
Update 2008-05-02
I've purchased an 8GB SDHC card, and have followed this how-to in doing a complete new install on the 8GB card. I have 1 GB swap on the first partition, 2GB /home on the second, and the rest (~ 4.6GB) as /. The only change I needed to the internal disk was adding a second chainloader entry for (1,2) to boot the third partition on the external disk.
xorg.conf
Here is a sample of my xorg.conf:
# /.../ # SaX generated X11 config file # Created on: 2008-01-15T20:48:25-0500. # # Version: 8.1 # Contact: Marcus Schaefer <sax@suse.de>, 2005 # Contact: SaX-User list <https://lists.berlios.de/mailman/listinfo/sax-users> # # Automatically generated by [ISaX] (8.1) # PLEASE DO NOT EDIT THIS FILE! # Section "Files" FontPath "/usr/share/fonts/misc:unscaled" FontPath "/usr/share/fonts/local" FontPath "/usr/share/fonts/75dpi:unscaled" FontPath "/usr/share/fonts/100dpi:unscaled" FontPath "/usr/share/fonts/Type1" FontPath "/usr/share/fonts/URW" FontPath "/usr/share/fonts/Speedo" FontPath "/usr/share/fonts/PEX" FontPath "/usr/share/fonts/cyrillic" FontPath "/usr/share/fonts/latin2/misc:unscaled" FontPath "/usr/share/fonts/latin2/75dpi:unscaled" FontPath "/usr/share/fonts/latin2/100dpi:unscaled" FontPath "/usr/share/fonts/latin2/Type1" FontPath "/usr/share/fonts/latin7/75dpi:unscaled" FontPath "/usr/share/fonts/baekmuk:unscaled" FontPath "/usr/share/fonts/japanese:unscaled" FontPath "/usr/share/fonts/kwintv" FontPath "/usr/share/fonts/truetype" FontPath "/usr/share/fonts/uni:unscaled" FontPath "/usr/share/fonts/CID" FontPath "/usr/share/fonts/ucs/misc:unscaled" FontPath "/usr/share/fonts/ucs/75dpi:unscaled" FontPath "/usr/share/fonts/ucs/100dpi:unscaled" FontPath "/usr/share/fonts/hellas/misc:unscaled" FontPath "/usr/share/fonts/hellas/75dpi:unscaled" FontPath "/usr/share/fonts/hellas/100dpi:unscaled" FontPath "/usr/share/fonts/hellas/Type1" FontPath "/usr/share/fonts/misc/sgi:unscaled" FontPath "/usr/share/fonts/xtest" FontPath "/opt/kde3/share/fonts" InputDevices "/dev/gpmdata" InputDevices "/dev/input/mice" EndSection Section "ServerFlags" Option "AllowMouseOpenFail" "on" EndSection Section "Module" Load "extmod" Load "type1" Load "glx" Load "freetype" Load "dbe" EndSection Section "InputDevice" Driver "kbd" Identifier "Keyboard[0]" Option "Protocol" "Standard" Option "XkbLayout" "us" Option "XkbModel" "microsoftpro" Option "XkbRules" "xfree86" EndSection Section "InputDevice" Driver "synaptics" Identifier "Mouse[1]" Option "Buttons" "5" Option "Device" "/dev/input/mice" Option "Emulate3Buttons" "on" Option "InputFashion" "Mouse" Option "Name" "Synaptics;Touchpad" Option "Protocol" "explorerps/2" Option "SHMConfig" "on" Option "Vendor" "Sysp" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" Driver "mouse" Identifier "Mouse[3]" Option "Buttons" "5" Option "Device" "/dev/input/mice" Option "Name" "ImPS/2 Generic Wheel Mouse" Option "Protocol" "explorerps/2" Option "Vendor" "Sysp" Option "ZAxisMapping" "4 5" EndSection Section "Monitor" Option "CalcAlgorithm" "XServerPool" HorizSync 30-40 Identifier "Monitor[0]" Option "DPMS" VertRefresh 50-75 UseModes "Modes[0]" VendorName "ASUS" ModelName "eeePC P701" Modeline "800x480" 29.58 800 816 896 992 480 481 484 497 -HSync +Vsync # 60 Hz EndSection Section "Modes" Identifier "Modes[0]" EndSection Section "Screen" DefaultDepth 24 SubSection "Display" Depth 15 Modes "800x600" "768x576" "640x480" EndSubSection SubSection "Display" Depth 16 Modes "800x600" "768x576" "640x480" EndSubSection SubSection "Display" Depth 24 Modes "1024x768" "1024x600" "800x600" "800x480" EndSubSection SubSection "Display" Depth 8 Modes "800x600" "768x576" "640x480" EndSubSection Device "Device[0]" Identifier "Screen[0]" Monitor "Monitor[0]" EndSection Section "Device" BoardName "915 GM" BusID "0:2:0" Driver "intel" Identifier "Device[0]" Option "SaXDualHead" Option "monitor-LVDS" "Monitor[0]" Option "SaXDualMonitorVendor" "--> VESA" Option "SaXDualOrientation" "LeftOf" Option "SaXDualResolution" "1024x768" Option "SaXDualMode" "Clone" Option "SaXDualHSync" "31-50" Option "SaXDualMonitorModel" "1024X768@60HZ" Option "SaXDualVSync" "50-60" Option "SaXExternal" "Identifier&EXT+DisplaySize&+VendorName&--> VESA+PreferredMode&1024x768+HorizSync&31-50+ModelName&1024X768@60HZ+VertRefresh&50-60" Screen 0 VendorName "Intel" EndSection Section "Monitor" HorizSync 31-50 Identifier "EXT" ModelName "1024X768@60HZ" Option "PreferredMode" "1024x768" VendorName "--> VESA" VertRefresh 50-60 EndSection Section "ServerLayout" Identifier "Layout[all]" InputDevice "Keyboard[0]" "CoreKeyboard" InputDevice "Mouse[1]" "CorePointer" InputDevice "Mouse[3]" "SendCoreEvents" Option "Clone" "off" Option "Xinerama" "off" Screen "Screen[0]" EndSection Section "DRI" Group "video" Mode 0660 EndSection Section "Extensions" EndSection
Wireless - MadWiFi
I decided that for the new installation, I might as well try to use something other than NdisWrapper. Well, I did some looking around, and found references to a development version of madwifi with a patch that supposedly worked. Well I gave it a shot and, so far, it seems to be working. The procedure is simple:
- Download the tarball at http://snapshots.madwifi.org/special/madwifi-ng-r2756+ar5007.tar.gz and untar it.
cd
into the directorymake clean
make
sudo make install
- reboot