Debian Linux: Pentium III Desktop



Debian 'Testing' base-installation
Settling in with Debian
Configuring Apt
Using Apt
Xorg-X11 X Window system
KDE Desktop
ALSA Sound
GUI Package Manager
Tools and Utilities
NTP Time Server
Logging Options
Compiling PrBoom
Browser Plugins
Custom Kernel Compilation
Hardware List
Configuration files


I've been using Linux since early 2001 and although I mainly use Gentoo, I started with Redhat 7.0 (which was basically broken) and then SuSE, which worked but had too many scripts trying to second-guess me. Gentoo is great, but compiling (almost) everything all the time isn't very practical for anyone but an enthusiast.

I'm a big Knoppix fan (it's a great system recovery tool) and in the past I'd made a customised version of it for my seti@home machines, and one of my brothers uses a hard-disk install of it on a desktop system (he's still on dial-up).

Having figured out how to use it (although not being an expert) and having tried other distributions that I wasn't satisfied with (and had no real incentive to master) I thought it was time to commit to learning about another useful tool, a distribution that is a fine complement to Gentoo: Debian.

Debian 'Testing' base-installation

As I've got ADSL broadband (about 120K/s maximum, we're on the border between two exchanges) the network install was appealing. My previous experiences with downloading 2-CD installers (on dial-up) was that you ended up downloading a huge set of packages right after installing, because the CDs were out of date shortly after the .iso images were created!

Debian have a tiny (about 30M) .iso that contains just enough to get you a hard-drive based bootable system with a minimum set of tools on it and with the minimum of fuss.

I used this Debian 'Testing' Business-card ISO which you download and then burn to a CD making sure that your cd-burning software knows how to burn an .iso image. Apparently the built-in Windows XP cd-burning software doesn't. If you are using Windows and want to avoid the update cycle and the "I'm sorry this software doesn't work with your CD-RW drive" hassle, try CDBurnerXP Pro - it works on Windows 2000 as well. Also, there is ISO Recorder which comes highly recommended although I've not tried it myself.

Once you've got that sorted out, insert it into a CD-R drive on the machine you want to install Debian on, and figure out how to make it boot from it. I have 2 CD-R drives and it will only boot from one of them (BIOS bug, I guess - it tries, but fails to boot from the other). Some systems will pop up a menu offering to boot from CD, others will require a change to the boot order, or for booting to be enabled from CD.

On most of my systems, I can access the BIOS by hitting the 'Delete' key at the right moment whilst the computer is starting. On modern, fast systems, you may find that your (CRT) monitor hasn't even warmed-up yet, so you miss all this - reboot and try again whilst the CRT is 'hot'. Ultimately, if you still can't get it to boot, you will need to consult your motherboard or system manual or find out about your system using Google.

There is some help with this kind of stuff here Boot Device Selection, but calling or emailing your local friendly techie will also work.

When you get to the Debian boot screen, just hit enter to install a 2.6.X version of the Linux kernel. Another option, which avoids some of the problems I had, is to use this command instead:
linux26 debconf/priority=medium
it asks about things like whether the RTC contains UTC or local-time (it's local-time on a multi-boot system that includes Windows).

[add images and short descriptions of base-installation procedure here]

A minimal install, including only the 'system' package option, takes about 550MB of disk space.

Settling in with Debian

The first thing I did after logging in was to edit the grub configuration file '/boot/grub/menu.lst' to make the console start in 1024x768 mode, and for the kernel to be 'quiet':
## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=vga=791 quiet
and then ran 'update-grub' to make them take effect.

I also edited '~/.bashrc' so that the prompt and 'ls' would be coloured:
# set a fancy prompt (non-color, unless we know we "want" color)
#case "$TERM" in
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#    ;;
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
#    ;;

# Comment in the above and uncomment this below for a color prompt
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
I noticed that the system assumed that the RTC held UTC, whereas it actually holds local-time because the system is effectively multi-boot (using disk caddies) including Windows 2000. This can changed by editing '/etc/default/rcS':
Unfortunately, it's too late, and when you reboot, the RTC gets set to the wrong time by the shut-down script (Argh!). After rebooting, you'll need to set it to the correct time.

To feel more at home, I needed some additional text-mode utilities. Here's how I installed my favourites:
# apt-get install gpm vim ssh pciutils python2.4 python2.4-dev cvs cvsutils subversion unzip
Set python2.4 to be the default Python like this:
# rm /usr/bin/python
# ln -s /usr/bin/python2.4 /usr/bin/python
Change the default editor to vim like this:
# update-alternatives --config editor

There are 4 alternatives which provide `editor'.

  Selection    Alternative
      1        /bin/ed
*+    2        /bin/nano
      3        /usr/bin/nvi
      4        /usr/bin/vim

Press enter to keep the default[*], or type selection number: 4
Using `/usr/bin/vim' to provide `editor'.
I then rebooted and enjoyed being able to see colours, more than a few lines of text, and Python in action!

Configuring Apt

The next issue is: How do I install things like nvidia drivers, mplayer, lame, flash-player, faad2, sun-java, as these don't seem to be available? I did it by changing/adding these lines to '/etc/apt/sources.list':
# changed 'etch' -> 'testing', and added 'contrib non-free':
deb testing main contrib non-free
deb-src testing main contrib non-free

# added these lines for the sun-java packages
deb unstable non-free
deb-src unstable non-free

deb testing/updates main
deb-src testing/updates main

# added these lines:
deb testing main contrib non-free restricted
deb-src testing main contrib non-free restricted

deb testing main
deb-src testing main
and then running these commands as root:
gpg --keyserver --recv-keys 6823D007
gpg --armor --export 6823D007 | apt-key add -
gpg --keyserver --recv-keys 1F41B907
gpg --armor --export 1F41B907 | apt-key add -
apt-get update
I found all this stuff out at Debian Unofficial on their FAQ and Installation pages, and from Unofficial Debian Packages on their FAQ. I found these places on this page: Unofficial Debian GNU/Linux Repositories Overview

Using Apt

Apt and friends are the slightly clunky tools (compared to the Gentoo equivalents) that manage the database of packages that are Debian. I used Installing Debian Software with the Advanced Package Tool to get a handle on this, and I present a very short HOWTO that is enough to get-by with.

How did I know to use 'vim' to install the command-line only version of Vim? Using this:
$ apt-cache search vim
spca5xx-source - source for the spca5xx driver
txt2regex - A Regular Expression "wizard", all written with bash2 builtins
vim - Vi IMproved - enhanced vi editor
vim-common - Vi IMproved - Common files
vim-doc - Vi IMproved - HTML documentation
vim-full - Vi IMproved - enhanced vi editor - full fledged version
vim-gnome - Vi IMproved - enhanced vi editor - with GNOME2 GUI
vim-gtk - Vi IMproved - enhanced vi editor - with GTK2 GUI
vim-gui-common - Vi IMproved - Common GUI files
vim-latexsuite - View, edit and compile LaTeX documents from within vim
vim-lesstif - Vi IMproved - enhanced vi editor - with LessTif GUI
vim-perl - Vi IMproved - enhanced vi editor - with Perl support
vim-python - Vi IMproved - enhanced vi editor - with Python support
vim-ruby - Vi IMproved - enhanced vi editor - with Ruby support
vim-runtime - Vi IMproved - Runtime files
vim-scripts - plugins for vim, adding bells and whistles
vim-tcl - Vi IMproved - enhanced vi editor - with TCL support
vim-tiny - Vi IMproved - enhanced vi editor - compact version
vim-vimoutliner - script for building an outline editor on top of Vim
vimacs - Emacs emulation for Vim
vimhelp-fr - Vi IMproved - Documentation files (French translation)
zope-externaleditor - Zope External Editor
$ apt-cache show vim
Package: vim
Priority: optional
Section: editors
Installed-Size: 1128
Maintainer: Debian VIM Maintainers <>
Architecture: i386
Version: 1:6.4-007+1
Filename: pool/main/v/vim/vim_6.4-007+1_i386.deb
Size: 586426
MD5sum: ec99971f8a271b9eccaf04b40e348fef
Description: Vi IMproved - enhanced vi editor
 Vim is an almost compatible version of the UNIX editor Vi.
 Many new features have been added: multi level undo, syntax
 highlighting, command line history, on-line help, filename
 completion, block operations, folding, Unicode support, etc.
 This package contain a version of vim compiled with a rather
 standard set of features. See the other vim-* packages if you
 need more (or less).
A more interesting question is: How did I know that 'lspci' was part of the 'pciutils' package?
The only way I could find was to use this Debian Search the contents of packages engine. On Gentoo you can use this offline command:
$ equery belongs lspci
[ Searching for file(s) lspci in *... ]
sys-apps/pciutils-2.2.0-r1 (/usr/sbin/lspci)

Xorg-X11 X Window system

Whilst this is probably not the best way to get a desktop system up and running, it should result in a fairly minimal configuration:
# apt-get install xorg
This installs a modular version of X, which makes updates much more manageable. Running 'startx' should take you to a window-manager-less X desktop consisting of just an xterm. The mouse and keyboard should work, position the mouse over the xterm and close it down by typing exit.

KDE Desktop

Install a minimal KDE desktop using:
# apt-get install kdebase kmix firefox vim-gtk
To get the nVidia-based hardware 3D acceleration and overlay surfaces working, install these:
# apt-get install mesa-utils nvidia-kernel-legacy-2.6.15-1-686 nvidia-glx-legacy
To make the nvidia binary drivers work, edit '/etc/X11/xorg.conf'
Section "Device"
        Identifier      "NVIDIA Corporation NV11 [GeForce2 MX/MX 200]"
        Driver          "nvidia"        # use the nVidia driver
        Option          "NvAGP" "0"     # crashes doing 3D without this (m'board chipset problem)
        Option          "NoLogo" "1"    # disables the nVidia splash-screen
I recently had a hardware problem with my GeForce2 MX 400 and ended up throwing it away, but not before chasing some software red-herrings. I found that the problem was quickly triggered by 'Planet Penguin Racer', so in an attempt to salvage something of value from a painful few days, 'ppracer' becomes my favourite 3D test program:
# apt-get install planetpenguin-racer

ALSA Sound

This machine has two sound-cards: a noisy on-board AC'97 and a Terratec EWS-88MT 24bit/96Khz multi-channel, semi-professional beast. By default, the Debian kernel is loading the obsolete OSS driver for the AC'97 as well as the ALSA driver. I want the onboard AC'97 device to be the first sound-card so that the EWS-88MT is ignored by most of the desktop 'notification' and 'multimedia' applications.

I did this:
# apt-get install alsa-base alsa-utils alsa-oss
This disables the OSS driver for the AC'97 card. To make it the first card I edited '/etc/modprobe.d/alsa-base' and added the following lines:
# Force the order of the cards
options snd-intel8x0 index=0
options snd-ice1712  index=1
After a reboot, the cards were in the correct order. Incidently, I wasted many happy hours until I discovered that the '/etc/modutils/' directory and '/etc/modules.conf' file were only used by the 2.4 kernel series. The fact that it randomly assigned the card order made it easy to believe I was making real changes - most annoying!

The AC'97 card seemed to work OK, but later testing with Neverball revealed 'scratchy' audio playback in the 'Options' menu, and the main game. I fixed this by using a '/etc/asound.conf' (see below) file I put together for the Gentoo installation on the same hardware.

GUI Package Manager

Using 'Apt' in a terminal is not for everyone. The Synaptic package manager is quite capable, and easily installed:
# apt-get install synaptic deborphan
I checked that it worked by using it to install mplayer.

Tools and Utilities

Having memtest86+ available as a boot option is useful for doing a memory test:
# apt-get install memtest86+
# update-grub
It was nice to see the grub configuration file updated correctly.

To play my digitised music, I use XMMS:
# apt-get install xmms
Monitoring/improving hard-drive performance and encouraging it to power down are made possible by 'hdparm':
# apt-get install hdparm
# hdparm -m16 -c3 -S120 /dev/hda
The above command sets the multi-count to 16, selects a 32-bit interface with sync, and a spin-down timeout of 10 minutes. This can be made persistent by editing '/etc/hdparm.conf':
command_line {
    hdparm -m16 -c3 -S120 -d1 /dev/hda

NTP Time Server

Install the ntp server and utility programs and the ntpdate client for setting system time like this:
# apt-get install ntp ntpdate
The configuration file is in '/etc/ntp.conf'. I commented out the default server pools and added our local server:
# You do need to talk to an NTP server or two (or three).

# maps to more than 300 low-stratum NTP servers.
# Your server will pick a different set every time it starts up.
#  *** Please consider joining the pool! ***
#  *** <> ***
# server iburst
# server iburst
# server iburst
# server iburst
Restart the server:
# /etc/init.d/ntp restart
Check that it's running ok:
$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
*     3 u   63   64  377    0.323   23.876   7.819
If the offset is large, say in the hundreds or worse, it is possible to 'force' the time:
# /etc/init.d/ntp stop
Stopping NTP server: ntpd.
# ntpdate
12 Sep 12:14:00 ntpdate[3762]: adjust time server offset 0.024301 sec
# ntpdate
12 Sep 12:14:59 ntpdate[3763]: adjust time server offset -0.004576 sec
# /etc/init.d/ntp start
Starting NTP server: ntpd.

Logging Options

I like my hard-drives to spin-down if nothing is happening. This is frustrated by several processes that modify files regularly. The first to eliminate is this stuff in '/var/log/messages':
Sep 16 07:19:15 server -- MARK --
Sep 16 07:39:16 server -- MARK --
Sep 16 07:59:16 server -- MARK --
Sep 16 08:19:16 server -- MARK --
Sep 16 08:39:16 server -- MARK --
Sep 16 08:59:16 server -- MARK --
These lines are created by 'syslogd' and can be switched off by editing '/etc/default/syslogd':
Setting '-m0' switches the feature off completely, I set it to 720 minutes (12 hours).

Compiling PrBoom

To get started compiling from source, here is a worked example using my favourite Doom port.
$ mkdir zips
$ mkdir games
$ cd zips
$ wget
$ cd ~/games
$ tar xvzf ~/zips/prboom-2.4.1.tar.gz
$ cd prboom-2.4.1
$ ./configure --prefix=/usr --enable-gl
*** The sdl-config script installed by SDL could not be found
*** If SDL was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the SDL_CONFIG environment variable to the
*** full path to sdl-config.
checking for SDL_JoystickGetAxis... no
checking for Mix_LoadMUS in -lSDL_mixer... no
*** Compiling without SDL_mixer installed probably won't work
checking for SDLNet_UDP_Bind in -lSDL_net... no
configure: error: *** You must have the SDL libraries installed before you can compile prboom
 *** See
This is telling us that the development (-dev) files for SDL are missing, and that SDL_mixer and SDL_Net are missing completely. Lets fix that:
$ apt-cache search libsdl
libsdl-mixer1.2 - mixer library for Simple DirectMedia Layer 1.2
libsdl-mixer1.2-dev - development files for SDL1.2 mixer library
libsdl-net1.2 - network library for Simple DirectMedia Layer
libsdl-net1.2-dev - Development files for SDL network library
libsdl1.2-dev - Simple DirectMedia Layer development files
# apt-get install libsdl1.2-dev libsdl-mixer1.2 libsdl-mixer1.2-dev libsdl-net1.2 libsdl-net1.2-dev
This triggered the installation of a whole load of -dev packages. Now that the configure step works, lets try compiling:
$ ./configure --prefix=/usr --enable-gl
$ make
It generates an awful lot of warnings, probably because I'm using gcc 4.0.4, but completes OK. Install it like this:
$ su -c "make install"
Then install Freedoom so that you have some Doom Levels to play:
# apt-get install freedoom
and then launch the game like this:
$ prboom
Have Fun!


Time to get some more games installed:

Solar Wolf - Space-based action!
# apt-get install python2.4-pygame
$ cd zips
$ wget
$ cd ~/games
$ tar xvzf ~/zips/solarwolf-1.5.tar.gz
$ cd solarwolf-1.5
$ ./
It is easier to do this than have the Debian solarwolf package try and install the Python2.3 version of pygame and its associated libraries!

Don't forget to make a Games folder on your desktop, and add a 'Link to Application' to the '' script!
Note: I had to disable the launch feedback (under Application | Advanced Options) to preserve sanity.

Frozen-Bubble - Caution: Addictive!
# apt-get install frozen-bubble
This automatically adds a menu item under "Games|Arcade".

Path-o-logical - Fun rolling-ball puzzle!
$ cd ~/zips
$ wget
$ cd ~/games
$ tar xvzf ~/zips/pathological-1.1.3.tar.gz
$ cd pathological-1.1.3
$ ./
Add a link in your Games folder to the '' script. I added the -f switch to make the game start in fullscreen mode, and had to set the 'Work path:' to the directory containing the script for it to run correctly.

Tuxpaint - Excellent (kids) drawing program!
$ cd ~/games
$ cvs login
$ [hit enter when prompted for a password]
$ cvs -z3 co -P tuxpaint
$ cvs -z3 co -P tuxpaint-config
$ cvs -z3 co -P tuxpaint-stamps
$ cd tuxpaint
$ make
At this point, I discovered that I didn't have the -dev packages for SDL_image or SDL_ttf installed.
# apt-get install libsdl-image1.2-dev libsdl-ttf2.0-dev
$ make
$ su -c "make install"
$ cd
$ tuxpaint
The current, 'testing' version of SDL is 1.2.10-3 which contains support for unicode character input. To test this, I started the KDE 'Control Center', chose 'Regional & Accessibility', and clicked on 'Keyboard Layout'. I checked the 'Enable keyboard layouts' box and highlighted in turn: United Kingdom, Russia, and Spain, each time clicking the 'Add' button. When I clicked 'Apply', a little gadget, the 'KDE Keyboard Tool' appeared in the 'System Tray'. Clicking on this changes the keyboard layout.

With the keyboard set to a western layout, type the following command into a terminal:
$ tuxpaint --lang russian
but dont hit enter yet. Use the mouse to click on the Keyboard tool until 'ru' appears, then hit enter. The labels on the buttons, and most of the text should appear in Russian, if you click on the 'ABC' button, you should be able to enter Russian text.

Install the additional 'Stamp' images like this:
$ cd ~/games/tuxpaint-stamps
$ make
$ su -c "make install"
You should now have additional 'Stamp' images. There is supposed to be audio for some of the pictures, but that isn't working at the moment.

Install the Tux Paint Configuration utility, which makes configuring Tux Paint easy, like this:
$ cd ~/games/tuxpaint-config
$ make
At this point, I discovered that I didn't have the FLTK GUI toolkit installed:
# apt-get install libfltk1.1 libfltk1.1-dev
$ make
This time it said '/usr/bin/ld: cannot find -lXft' which meant that it couldn't find the file '' or similar, to link to.
A quick search: 'apt-cache search libXft' led me to this:
# apt-get install libxft2 libxft-dev
$ make
This time it said '/usr/bin/ld: cannot find -lXinerama' which meant that it couldn't find the file '' or similar, to link to.
A quick search: 'apt-cache search libXinerama' led me to this:
# apt-get install libxinerama1 libxinerama-dev
$ make
$ su -c "make install"
$ cd
$ tuxpaint-config
That's pretty much it for Tux Paint - Have Fun!

Neverball - 3D rolling-ball mayhem!
# apt-get install neverball
I had trouble with 'scratchy' audio playback in the 'Options' menu and the main game. See above for a solution.

Browser Plugins

Install the (non-free) flash plugin and sun-java plugin, and the mplayer plugin like this:
# apt-get install flashplugin-nonfree sun-java5-plugin mozilla-mplayer
Check flash is working: Verify a flash installation
Check java is working: JDK 1.4 Demo Applets
Check mplayer and other: Plugins Test Cases

I had to upgrade mplayer to version 1.0-pre8-0.0 for the Apple trailers to play correctly.

Custom Kernel Compilation

I wanted to do this the 'Debian way' and used these instructions. First, I installed some required dependencies:
# apt-get install kernel-package bzip2 ncurses-dev
and then downloaded the kernel sources, unpacked them and set them up:
$ cd
$ mkdir zips
$ cd zips
$ wget
$ wget
$ su
# cd /usr/src
# tar xvjf ~jfp/zips/linux-
# ln -s linux- linux
# cd linux
# make menuconfig
There are some notes about other dependencies here:
# less /usr/share/doc/kernel-package/README.gz
After configuration, I compiled and installed using this:
# make-kpkg --initrd -rev Custom.1 kernel_image
# cd ..
# dpkg --install linux-image-
# reboot

Hardware List

$ lspci
0000:00:00.0 Host bridge: Intel Corp. 82815 815 Chipset Host Bridge and Memory Controller Hub (rev 02)
0000:00:01.0 PCI bridge: Intel Corp. 82815 815 Chipset AGP Bridge (rev 02)
0000:00:1e.0 PCI bridge: Intel Corp. 82801AA PCI Bridge (rev 02)
0000:00:1f.0 ISA bridge: Intel Corp. 82801AA ISA Bridge (LPC) (rev 02)
0000:00:1f.1 IDE interface: Intel Corp. 82801AA IDE (rev 02)
0000:00:1f.2 USB Controller: Intel Corp. 82801AA USB (rev 02)
0000:00:1f.3 SMBus: Intel Corp. 82801AA SMBus (rev 02)
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801AA AC'97 Audio (rev 02)
0000:01:00.0 VGA compatible controller: nVidia Corporation NV11DDR [GeForce2 MX 100 DDR/200 DDR] (rev b2)
0000:02:02.0 Multimedia audio controller: VIA Technologies Inc. ICE1712 [Envy24] PCI Multi-Channel I/O Controller (rev 02)
0000:02:04.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
The output from dmesg.

Configuration files


Valid HTML 4.01!