Alexandre Trilla, PhD - Research Engineer | home publications
 

Blog

-- Thoughts on data analysis, software development and innovation management. Comments are welcome


Post 9

Puppy Linux flavored SDHC for the EeePC

03-Jan-2009

Not being much content with the little hacking that the EeePC Xandros distro offers I've decided to bring a new software set to my new device, the ASUS EeePC 900. Since the DebianEeePC wouldn't read the 8GB SDHC card I bought for lodging the new OS, I thought I'd give a try with a different GNU/Linux flavor.

After some unsuccessful tries to get Damn Small Linux (a Debian-based light distro) running on the computer, I eventually believed that the EeePC BIOS doesn't accept bootable partitions (with the exception of the internal SSD), the way DSL was instructed to run on an USB drive. The only image I managed to boot so far was the Debian superfloppy installer.

Still wanting to set a new flavor to the EeePC I read about Puppy Linux, an independent light distro that seemed to be a nice choice. In the eeeuser.com wiki, this post shows how to put Puppy Linux into a SD card. The problem, though, is that whoever wrote it fed the SD card into the system through a USB adapter. Puppy Linux already has the appropriate modules to deal with USB drives, but if the distro is put into a real SD card slot, things are not nice since the OS as it is can't read this device, and thus the boot process gets stuck.

In order to make things easy, I first avoided the compilation processes to get a SD drive supported kernel for the EeePC. Then, reading Puppeee: Puppy for your Eee PC on Linux.com I found Puppeee, a Puppy Linux flavored distro with the appropriate fixes and hacks to run on the EeePC. Hands at work, I extended the "apt" sources with the Adding Additional Software Repositories for the EeePC because "mtools" and "syslinux" would be needed afterwards.

Having prepared the EeePC Xandros with the extra repos:

  1. Insert the SDHC card into the SD card slot and determine the system device ("Cntl + Alt + T" to open a virtual console):
    fdisk -l
    In my case it was "/dev/sdb", but from now on I will refer it to as "/dev/sdX".
  2. Create a superfloppy:
    mkdosfs -F 32 -I /dev/sdX
    For a SDHC of 8GB, "-F 16" complained to be a filesystem too large. Now since the MBR has been removed all the files will be written starting at sector 0.
  3. Mount the SDHC device:
    mount /dev/sdX sdcard/
    Note that the "sdcard/" folder refers to the local folder where the device is wanted to be mounted, it can be placed anywhere.
  4. Download a Puppeee ISO image from here and mount it as a loop device in order to make it accessible as a block device:
    mount -o loop puppy-eee.iso loop/
    Here the "loop/" folder works as the previous "sdcard/" folder.
  5. Copy the contents of the image into the SDHC card:
    cd sdcard/
    cp -rf ../loop/* .
  6. Hack the image in order to use the SYSLINUX bootloader, used for booting FAT filesystems such as the one created in the SDHC:
    mv isolinux.bin syslinux.bin
    mv isolinux.cfg syslinux.cfg
    cd ..
    umount sdcard/
    syslinux /dev/sdX
    Now the SDHC card has the Pupeee OS inside and is ready to boot the EeePC.

Puppeee Linux is a very nice, light and configurable OS, aimed at delivering a high usability interface. It runs swiftly because (by default) it loads the whole OS into RAM (about 500MB, half the capacity of the EeePC), and can save the user's preferences, files and programs in an encrypted independent filesystem so as to keep a secure multiuser environment. It is highly recommended to prevent the EeePC from dying by the deterioration of the unreplacebale SSD soldered to the motherboard.



All contents © Alexandre Trilla 2008-2025