OpenSuSE 10.3 on eeePC External SDHC

From JasonAntmanWiki
Jump to: navigation, search



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 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


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)
	chainloader +1

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.


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:

  1. Edit /etc/sysconfig/kernel and add atl2 to the line starting with MODULES_LOADED_ON_BOOT.
  2. Run, as root, /sbin/depmod -a
  3. Now, try a modprobe atl2. It should work, and you should see NetworkManager begin connecting. Everything should now work on reboot.


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.


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



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


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.


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 <>, 2005
# Contact: SaX-User list <>
# Automatically generated by [ISaX] (8.1)

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"

Section "ServerFlags"
  Option       "AllowMouseOpenFail" "on"

Section "Module"
  Load         "extmod"
  Load         "type1"
  Load         "glx"
  Load         "freetype"
  Load         "dbe"

Section "InputDevice"
  Driver       "kbd"
  Identifier   "Keyboard[0]"
  Option       "Protocol" "Standard"
  Option       "XkbLayout" "us"
  Option       "XkbModel" "microsoftpro"
  Option       "XkbRules" "xfree86"

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"

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"

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

Section "Modes"
  Identifier   "Modes[0]"

Section "Screen"
  DefaultDepth 24
  SubSection "Display"
    Depth      15
    Modes      "800x600" "768x576" "640x480" 
  SubSection "Display"
    Depth      16
    Modes      "800x600" "768x576" "640x480" 
  SubSection "Display"
    Depth     24
    Modes     "1024x768" "1024x600" "800x600" "800x480"
  SubSection "Display"
    Depth      8
    Modes      "800x600" "768x576" "640x480" 
  Device       "Device[0]"
  Identifier   "Screen[0]"
  Monitor      "Monitor[0]"

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"

Section "Monitor"
  HorizSync    31-50
  Identifier   "EXT"
  ModelName    "1024X768@60HZ"
  Option       "PreferredMode" "1024x768"
  VendorName   "--> VESA"
  VertRefresh  50-60

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]"

Section "DRI"
    Group      "video"
    Mode       0660

Section "Extensions"

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:

  1. Download the tarball at and untar it.
  2. cd into the directory
  3. make clean
  4. make
  5. sudo make install
  6. reboot
Notice - this is a static HTML mirror of a previous MediaWiki installation. Pages are for historical reference only, and are greatly outdated (circa 2009).