Introduction
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
#xterm-color)
# 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\$ '
# ;;
#esac
# 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':
...
TMPTIME=0
SULOGIN=no
DELAYLOGIN=no
UTC=no
VERBOSE=yes
FSCKFIX=no
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 http://debian.blueyonder.co.uk/ testing main contrib non-free
deb-src http://debian.blueyonder.co.uk/ testing main contrib non-free
# added these lines for the sun-java packages
deb http://debian.blueyonder.co.uk/ unstable non-free
deb-src http://debian.blueyonder.co.uk/ unstable non-free
deb http://security.debian.org/ testing/updates main
deb-src http://security.debian.org/ testing/updates main
# added these lines:
deb http://ftp.debian-unofficial.org/debian testing main contrib non-free restricted
deb-src http://ftp.debian-unofficial.org/debian testing main contrib non-free restricted
deb http://www.debian-multimedia.org testing main
deb-src http://www.debian-multimedia.org testing main
and then running these commands as root:
gpg --keyserver subkeys.pgp.net --recv-keys 6823D007
gpg --armor --export 6823D007 | apt-key add -
gpg --keyserver wwwkeys.eu.pgp.net --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 <pkg-vim-maintainers@lists.alioth.debian.org>
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:
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
...
EndSection
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:
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).
server 192.168.0.1
# pool.ntp.org 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! ***
# *** <http://www.pool.ntp.org/join.html> ***
# server 0.debian.pool.ntp.org iburst
# server 1.debian.pool.ntp.org iburst
# server 2.debian.pool.ntp.org iburst
# server 3.debian.pool.ntp.org 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
==============================================================================
*192.168.0.133 158.152.1.76 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 192.168.0.1
12 Sep 12:14:00 ntpdate[3762]: adjust time server 192.168.0.1 offset 0.024301 sec
# ntpdate 192.168.0.1
12 Sep 12:14:59 ntpdate[3763]: adjust time server 192.168.0.1 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 http://kent.dl.sourceforge.net/sourceforge/prboom/prboom-2.4.1.tar.gz
$ 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 http://prboom.sourceforge.net/linux.html
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:
Then install Freedoom so that you have some
Doom Levels to play:
# apt-get install freedoom
and then launch the game like this:
Have Fun!
Games
Time to get some more games installed:
Solar Wolf - Space-based action!
# apt-get install python2.4-pygame
$ cd zips
$ wget http://www.pygame.org/shredwheat/solarwolf/solarwolf-1.5.tar.gz
$ cd ~/games
$ tar xvzf ~/zips/solarwolf-1.5.tar.gz
$ cd solarwolf-1.5
$ ./solarwolf.py
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 'solarwolf.py' 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 http://kent.dl.sourceforge.net/sourceforge/pathological/pathological-1.1.3.tar.gz
$ cd ~/games
$ tar xvzf ~/zips/pathological-1.1.3.tar.gz
$ cd pathological-1.1.3
$ ./pathological.py
Add a link in your Games folder to the 'pathological.py' 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 -d:pserver:anonymous@tuxpaint.cvs.sourceforge.net:/cvsroot/tuxpaint login
$ [hit enter when prompted for a password]
$ cvs -z3 -d:pserver:anonymous@tuxpaint.cvs.sourceforge.net:/cvsroot/tuxpaint co -P tuxpaint
$ cvs -z3 -d:pserver:anonymous@tuxpaint.cvs.sourceforge.net:/cvsroot/tuxpaint co -P tuxpaint-config
$ cvs -z3 -d:pserver:anonymous@tuxpaint.cvs.sourceforge.net:/cvsroot/tuxpaint 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
'libXft.so' 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
'libXinerama.so' 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 http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.1.tar.bz2
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.1.tar.bz2.sign
$ su
# cd /usr/src
# tar xvjf ~jfp/zips/linux-2.6.20.1.tar.bz2
# ln -s linux-2.6.20.1/ 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-2.6.20.1_Custom.1_i386.deb
# 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
Links