Thursday, September 07, 2006

Turning a Junk Comp into a Lean, Mean, Usable Machine using Damn Small Linux

Much to my dismay, I had a couple of machine failures which left me with a need to build some useful comps for my girls out of some of my more seasoned hardware. In this case, I am going to discuss how I built a kid-friendly internet-ready computer out of an old P2 266MHz Gateway with 196MB RAM.

Damn Small Linux has come a long way through its releases. The latest version, though still built on a 2.4 kernel, is just plain sweet. The 50MB Live Disk gives you a good tour of its basic features. It is very fast if you run it in RAM. Adding myDSL extensions gives the user the option of even loading optional packages. In this area you'll find cool stuff like games, Firefox 1.5, OpenOffice, ABIWord, etc. But, I don't want to have my girls run from a Live Disk all of the time. They like being able to save and reconfigure stuff. And, quite frankly, I don't want to have to leave one of my more modern CDROMs stuck in their machine.

Luckily DSL supports a couple of different install options for putting in on the harddrive. I chose to do the 50MB install (which runs in RAM) and extend it using myDSL.

Here's the rough outline of what I did (not including various reboots for testing components as I configured them):

  1. Get a 50MB DSL CD burnt and verify that it booted in the machine and that the base Live CD worked fine.

  2. Fired up fdisk (or you could use cfdisk or gparted or you other favorite) and set up my harddisk partitions:
    /dev/hda1 50MB ext2
    /dev/hda2 1024MB linux swap
    /dev/hda3 Remaining ext2

  3. I also used mkfs to put on filesystems:
    mkfs -t ext2 /dev/hda1
    mkfs -t ext2 /dev/hda3

  4. I then booted up DSL and used "Apps->Tools->Install to Hard Drive" from the menu to install the OS. I chose to use grub, since it seems to have better features than LILO.

  5. Using download through the bulti-in myDSL browser, I added a bunch of myDSL packages to /mnt/hda3:

    XFree86.dsl
    jre1_5_0.uci
    aumix.dsl
    samba.dsl
    codecpak.dsl
    xcalc.dsl
    dosbox.dsl
    xine.dsl
    firefox-1.5.0.6.uci
    xpdf-3.01pl2.uci
    gtk2-0705.dsl


  6. I added more packages that I only want to use sometimes. The "sometimes" class got moved into /mnt/hda3/optional folder. This is an important step if you have limited RAM like I did. Packages in this folder only get loaded from the menu by the user. In this case, for my daughters, I installed a lot of games. Here are my optional packages:

    Ultima-AOD.tar.gz
    opera9.uci
    Ultima-AOE.tar.gz
    toppler.dsl
    Ultima-AOE.tar.gz.md5.txt
    abiword.dsl
    tuxtype.dsl
    billard-gl.dsl
    xasteroids.tar.gz
    bittorrent-cli.dsl
    xboing.dsl
    bittorrent-gui.dsl
    xbubble.tar.gz
    bugsquish.dsl
    xf86config.dsl
    circuslinux.dsl
    xgalaga.dsl
    eboard.dsl
    xgammon.dsl
    freeciv.dsl
    xmahjongg.tar.gz
    gcompris2.dsl
    xmame.dsl
    gimp-1.2.dsl
    xpat2.dsl
    mathwar.dsl
    xpuyopuyo.dsl


  7. Edit the boot sequence in /cdrom/boot/grub/menu.1st, as given below. The host= sets the hostname. The restore= sets up restoration of settings. The mydsl= sets up the pointer to the mydsl packages. Don't let the name fool you -- /cdrom is actually the cd image that you installed in step 4.

    title DSL
    kernel /boot/linux24 root=/dev/hda1 quiet vga=normal nodhcp acpi apm dma noscsi host=matador restore=hda3 mydsl=hda3 frugal
    initrd /boot/minirt24.gz


  8. I setup XFree86 to get a little better graphic performance. Install the xf86config package and run xf86config. I saved the output file to /home/dsl/.xfree86/XF86Config-4.

  9. Edit /home/dsl/.xserverrc to move from Xvesa to XFree86, leaving the line for XVesa in case I need it:

    # XVesa Config
    #exec /usr/bin/X11/Xvesa -mouse /dev/psaux,5 -screen 1024x768x16 -shadow -nolisten tcp -I &>/dev/null

    # XFree86 Config
    exec sudo /usr/X11R6/bin/XFree86 -nolisten tcp -xf86config ~/.xfree86/XF86Config-4


  10. Edit the .xinitrc to set up lots of things. Here is my edited version with some notes.



    # put X windows programs that you want started here.
    # Be sure to add at the end of each command the &

    KEYTABLE="$(getknoppixparam.lua KEYTABLE)"
    DESKTOP="$(getoption.lua $HOME/.desktop wm)"
    ICONS="$(getoption.lua $HOME/.desktop icons)"

    # For non-US Keyboards
    if [ ${KEYTABLE:0:2} != "us" ]; then
    xmodmap -e "clear Mod4" -e "add Mod5 = Mode_switch" &
    fi

    #if egrep -qv noicons /proc/cmdline 2>/dev/null; then
    if [ "$ICONS" == 1 ]; then
    for x in `ls -1 .xtdesktop/*.hide 2>/dev/null`; do rm -f ${x%.*}; done
    iconsnap.lua &>/dev/null &
    xtdesk.sh
    fi
    Here I got rid of the default startup help:
    #eliminate startup help
    #dillo /usr/share/doc/dsl/getting_started.html &>/dev/null &
    Here I mounted my raid:
    #Mount the Raid
    sudo mkdir /mnt/raid &> /dev/null &
    sudo /usr/bin/smbmount //ROGUE/raid /mnt/raid/ -o guest &>/dev/null &
    I started gtk2 by default
    #Start GTK2
    /usr/bin/start_gtk2 &> /dev/null &
    I use aumix to automatically set the sound volumes to what I wanted
    #Fix sound volumes
    aumix -w 100 &> /dev/null &
    aumix -v 100 &> /dev/null &
    #Desktop Info
    torsmo 2>/dev/null &
    case $DESKTOP in
    fluxbox )
    Here I got rid of some of the default apps I didn't need:
    #Get rid of pager
    #fluxter &>/dev/null &
    #Get rid of the dock crap
    #wmswallow -geometry 70x80 docked docked.lua &
    exec fluxbox 2>/dev/null
    ;;
    jwm )
    ./.background
    sleep 2
    exec jwm 2>/dev/null
    ;;
    * )
    exec fluxbox 2>/dev/null
    ;;
    esac
Summary of Resulting System
  • Firefox 1.5 with jre and default installed Flash for games
  • Ability to play Mp3 and other audio files with XMMS
  • Ability to mount shared network drives with Samba
  • Ability to play videos with Xine (on this machine at %50 size over a samba mount)
  • Ability to view and edit images
  • Lots of games
  • Word Processor, Spreadsheet, Calculator
  • Ability to add other applications easily if I need them.
In general all of these capabilities, though not as blazing as my 2.8 GHZ machine, are fast enough to be very usable. You wouldn't even know it was a 266 MHz by the way it behaves.

No comments: