Desktop System Setup with Debian GNU/Linux 3.1 'Sarge'



This document intends to provide enough information to get an effective desktop system ready to use using a 'Linux' distribution, providing a concise, point-by-point guide to configuring where it's necessary, with links to further reading if you want to know more.

This desktop system will use the Debian GNU/Linux distribution, version 3.1 'Sarge' with a Linux version 2.6 kernel, using a GNOME version 2.8 desktop environment.

We also provide a menu driven command-line program, called Twix, to help you install most of what is covered in this document and configure some of it. Twix can be downloaded for free from

This document has related documents:
'Server Setup with Debian 3.1 'Sarge''.

A good introduction to Debian is the Debian article at Wikipedia.

This document needs your feedback. If you have any comments or suggestions please email them to inkwire [at] thegoldenear [dot] org and they can be considered.

Notable changes to this document

0.4.32 - 22 January 2009 - package repositories changed - the main Debian archive no longer includes Sarge packages and Sarge security updates, so and have been replaced with

0.4.31 - 26 April 2008 - flashplugin-nonfree removed from Debian Sarge as of version 3.1r8

0.4.27 - 25 November 2007

0.4.26 - November 2007 - added msttcorefonts to wine

0.4.25 - 24 August 2007

0.4.21 - 12 July 2007 - Changed to ( will still work for the life of Debian 4.0 Etch).

0.4.17 - 24 June 2007 - Better described X video drivers; added video graphics utilities radeontool, rovclock, i810switch, matroxset, nvidia-settings, nvtv

0.4.10 - 29 April 2007 - Added regionset

0.4.8 - 24 April 2007 - Updated the debian-multimedia source address that has changed for Sarge

0.4.7 - 3 April 2007 - Added missing hp-ppd

0.4.6 - 8 March 2007 - Removed trailing '/' from '' apt sources.list example

0.4.4 - 2 March 2007

0.4.0 - 15 February 2007

0.3.9 - 13 December 2006 - removed hplip-ppds as it doesn't exist in Sarge

0.3.3 - 24 November 2006

0.3.2 - 22 November 2006 - added printer device naming when using the HPLIP driver

0.3.0 - 20 November 2006 - refreshed printing section with the addition of Foomatic, ijsgutenprint, pnm2ppa, foo2zjs, printconf and various PPD files


<something> - when something is in angle brackets you should replace this with something particular to your system; you do not use the angle brackets.

command - text in monospaced typeface indicates a command you issue at the command-line or text you type yourself into a text editor.

$ - when a command-line command is preceded by a dollar it means you run this whilst logged in as a regular user

# - when a command-line command is preceded by a dollar it means you run this whilst logged in as super user / root

Debian GNU/Linux

Debian is a GNU operating system with a Linux kernel and collection of currently 8,000 software programs. The GNU operating system is a part of the family of Unix operating systems that date back to 1969, it is a version of Unix written from scratch by a large community of disparately located hackers and made available for free. (Debian is based on System V Unix rather than BSD Unix). This community is a social movement, motivated in part by the desire to provide the world with an operating system free of the restrictions the contemporary software industry imposes upon us.

Debian is one of a number of 'distributions' of GNU/Linux. A distribution is the operating system plus a number of software applications; there are many aspects differentiating distributions. We recommend Debian in particular for these reasons:

Debian is available in a number of different flavours, one of which you subscribe your system to:

Further Information

Debian Weekly News:

Debian Planet:

Planet Debian (accumulation of Debian developers' blogs):,

Debian bug tracking system:

Getting Debian

Downloading from the Internet

Download from There are various options of what to download, the most useful to choose from are

Choose which architecture you want, the following are the most popular

By Post

Debian 3.1 is available to order on CD/DVD from various vendors, a list of them is available at

A Demonstration

If you want to check-out Debian before installing it, it's possible to download a so-called 'live CD' that you boot your computer with, it runs the operating system straight from the CD without touching your existing operating system, allowing you to see exactly what it would look like were it installed on your computer, but is gone when you turn the computer off and take the CD out.
An official Debian live disc isn't yet available, though it is being discussed, but an example of what Debian can look like is available using the live CD from the Ubuntu distribution. Ubuntu is similar to Debian, as it is dervied from it, but it isn't Debian. The Ubuntu live CD won't look exactly like the system this document describes, but it's similar enough to be worth using as a sampler. Note that this isn't a recommendation to install Ubuntu, this document is all about installing Debian.
Ubuntu can be ordered or downloaded from

Hardware support

Debian GNU/Linux device driver check page: - paste in the results of lspci -n and it will tell you what GNU/Linux drivers exist for the specified hardware.

Linux Hardware Compatibility HOWTO at

The recommended hardware you'll want to run this system on is roughly as follows:

ScaleCPUCPU speedRAM / memoryDesktop environment
Low endIntel Pentium II equivalent300MHz128MBXFCE
MidAMD Duron equivalent700MHz128MB - 500MBGNOME
High endanything moreanything moreanything moreGNOME


Note that any decision you make during installation that you would rather have made differerently, can be changed once installation is finished, usually using the command dpkg-reconfigure <package-name>.

Choose to install version 2.6 of the Linux kernel rather than the default of 2.4. When the installer first starts, type 'linux26' at the 'boot:' prompt then press [Enter], rather than just pressing [Enter] on its own.

Your particular system may require some boot options to work around specific known problems, you can see a list of these by pressing some of the Function keys on the keyboard. Otherwise just press [Enter] to start the installer.

When asked during the installation if you want 'discover' to manage /media/cdrom0, choose 'no' otherwise gnome-volume-manager won't be able to auto-mount discs for you when inserted and logged in as a normal user. (this may now be fixed).

If you're able to update your Debian system using the Internet, rather than from CD/DVD media, do so, but it's not essential. The best way to ensure this happens is to remove the disc after the initial stage of installation when the disc is ejected. Also, be sure to add a 'source' to download from during installation. If you're using CD/DVD media to install packages from then try to have at least discs 1 and 2 and choose to add them all to the sources list when prompted.

Partitioning scheme - You have the following options:
a. All files in one partition - will create a root partition (/) and a swap.
b. Desktop machine - will create a root partition, swap, and /home.
c. Multi-user workstation - will create partitions for /, /usr, /var, /tmp, /home and swap.
Choose the 'desktop system' scheme.

When choosing the keyboard layout, the default is 'us', there isn't a drop-down list of available options for different languages, for example you would choose 'gb' for UK English.

When you're presented with the menu saying 'Debian configuration' - 'Debian software selection' - 'you can choose to install one or more of the following predefined collections of software.' don't be fooled into thinking 'desktop environment' sets up the ideal desktop environment for you - it doesn't - hence the need for this document.
Rather than choose the pre-defined functions, we're going to do this manually, which will be quicker and use less disk space, as Tasksel's 'Desktop environment' installs more than you're likely to need.
Tasksel's 'desktop environment' installs GNOME (using the 'gnome-desktop-environment' package), KDE and various applications. If you use GNOME rather than KDE as your desktop environment, which we believe provides a higher quality interface, it can be annoying to have the menus populated with so many extra programs that you have to spend time installing and updating. We propose not choosing anything at this menu for your desktop system and instead installing GNOME and various applications manually, which will be described in this document.

A minimal mail system is installed by default. Through answering the various questions asked of you, configure this mail system with your SMTP server address and other information so that your system has the ability to send email, which is useful for various software to be able to use.

If connected to the Internet do an upgrade after installation, using either Synaptic from within GNOME to update then install all available updates; or from the command-line aptitude update then aptitude dist-upgrade.

Further Information

Debian GNU/Linux Installation Guide, Debian 3.1 'Sarge' version:
This is also installable as the debian-installer-manual package.
Debian GNU/Linux Installation Guide - Development version:

Basic commands

To use this document you'll need to be able to use these basic commands:

For typing at the command-line from within GNOME you can use the 'Terminal command line', depicted by a monitor with a blank screen but for the 'command-line prompt' on the 'panel'.

To install programs before you have the desktop environment and Synaptic Package Manager installed (which give you a more user friendly environment), login as root and use aptitude update and [Enter] then when thats done use aptitude install <package name> <package name> <package name>.

To add a user to a group, from GNOME:
Common functions that relate to specific group membership are available in Applications → System Tools → Users & Groups → Users → pick user <locale> Properties → User privileges.
More specifically groups administration is available from Applications → System Tools → Users & Groups → Groups → pick group <locale> Properties → Group Members → pick user → Add.
If you're logged in as the user for whom you're changing their group membership, you need to log out and log back in again for it to take effect.

Become the super user by issuing the command su at the commnd-line. The super user is the user called 'root', you'll be asked for the password for the root user which you set during installation.

When typing at the command-line you have a useful feature called 'command-line completion' available to you. As you type program names or direcoty and file paths, you can press the [Tab] key to automatically complete such lines. If there is more than one option for a particular line you've so far typed in, command-line completion will stop at the point the various options differ, pressing [Tab] again will show you the various options available.

If you're at the command-line, logged in as root, wanting to edit configuration files, a simple text editor you can use is nano. Typing nano <path>/<filename> will load a file; Ctrl+W will search within a file for text; Ctrl+X will quit, where upon you can choose to save or not.

When you've installed new software and are logged in and using GNOME, to get the shortcuts to appear in the menus without logging out and back in, use the command update-menus at the command-line.

To reconfigure a package in the same way as was done when it was first installed: dpkg-reconfigure <package name>

Each package has Debian-specific documentation for it in /usr/share/doc/<package name>

To create a 'symbolic link' or 'symlink' (known as a 'shortcut' in Windows): ln -s location-of-file-to-link-to location-of-symbolic-link

To restart X Windows, the graphical windowing system, use Ctrl+Alt+Backspace. This is useful when applying changes to video settings in the X Windows configuration file.

To cancel a running command-line program use Ctrl+C.

To quit from a command-line program that is displaying text for you on the screen, such as a man page, use 'q'.

Package repositories, Updates & Upgrades

Package repositories

Debian's package management system, known as 'apt', keeps a list of sources, or repositories, it can retrieve packages from when you choose to install them, in the file /etc/apt/sources.list.

Sources can be of the form

You define which Debian flavour you're subscribed to

These different licencing groups are kept track of

There are different providors of Internet server sources

Debian installs with a default that uses 'main', it doesn't include 'contrib' or 'non-free'.

To add new CDs to your sources list, other than during installation

To add new Internet servers to your sources list, other than during installation


3.1 Sarge

Release Date Changes
3.1r0 6 June 2005
3.1r0a 10 June 2005
3.1r1 20 December 2006
3.1r2 19 April 2006
3.1r3 1 September 2006
3.1r4 6 November 2006
3.1r5 18 February 2007
3.1r6 7 April 2007
3.1r7 28 December 2007
3.1r8 13 April 2008

There are two daily 'pulses' at 00:00 and 12:00 GMT upon which updated packages, if any, are made available.

Security updates are often made available, potentially even daily.

Very occasional other updates are made in the form of new 'point releases' of Debian stable. They comprise packages with a very conservative amount of miscellaneous bugfixes, removed packages, missing builds and security updates (those previously available thru security updates). These packages are introduced into the main stable archive when released. Similarly the downloadable ISO images available for installing Debian are updated, they have a 'r' designation.

The packages waiting to be made available in the next point release are held in a repository known as stable-proposed-updates but seemingly more readily available as sarge-proposed-updates. You can subscribe to this repository to get these packages as they enter the queue rather than waiting for the release date.


To upgrade to the next version of Debian, replace the code name / alias in sources.list from 'etch' to 'lenny'.

Skipping releases is not supported. To upgrade from Woody to Etch you must first upgrade to Sarge, then to Etch. Edit /etc/apt/sources.list and replace 'testing' or 'etch' or 'stable' or 'unstable' with 'sarge' then 'aptitude update && aptitude dist-upgrade'.

Package management - finding, adding and removing programs

Debian's software programs, or 'packages', are versions of popular software specifically re-packaged for Debian, and in particular for its package management system (called 'apt') which is used to easily add and remove them. You don't need to independently download, compile and configure software manually - Debian maintainers have done the work for you, making sure the software fits into your system cleanly - an example of doing things the 'Debian Way', a phrase that defines ways of doing things specific to Debian that are usually very efficient and elegant.





From the command-line

aptitude, using switches
aptitude, used interactively


Synaptic Package Manager
(Applications → System Tools → Synaptic Package Manager)

Further information

Changes in Debian packages

Package configuration - Debconf

Debconf is used as much as possible to configure packages for you (but not exclusively), asking questions and editing configuration files respectively. You are asked how to configure debconf upon installation of debconf itself, during Debian's installtion. You can permanently reconfigure debconf at any time using # dpkg-reconfigure debconf. Either way you are asked the following:

"Packages that use debconf for configuration share a common look and feel. You can select the type of user interface they use.

To change these per-package installation use # dpkg-reconfigure -p<priority level> <package-name>.

Desktop Environment: GNOME


Choosing to install a 'desktop environment' in the Debian installer (or 'Tasksel', as the particular program that is running at that point is known), installs both KDE and GNOME, which is a lot more than you actually need if you only want one desktop environment, 1 such as GNOME for a vaguely modern computer. For an older computer you're advised to use XFCE instead of GNOME. This document will instead describe the individual packages to install.

Install these for a basic desktop environment without major applications:


Per-machine configuration

If you already have KDE installed and wish to remove it, remove packages kdelibs3 and kdelibs4

Per-user configuration

Further Information


The GNOME Journal:

Jordi Mallach's blog:

Ben Maurer's blog:

Various channels on irc://

Planet GNOME, an aggregate blog of GNOME developers:

GNOME changelog

Bug reporting

GNOME's Bug Database:

Desktop Environment: XFCE

This is an alternative to GNOME which will run well on very old computers that are too small and slow for GNOME, such as a 233MHz CPU with 128MB RAM.



XFCE's default toolbar comes with shortcuts for some specific applications, such as the Mozilla suite, which you may not have installed as you may use alternative programs, such as Mozilla Firefox, and so they only serv as an example and are thus worth spending some time changing and adding to with your most used programs.

X Windows: XFree86

'X Windows' creates the graphical windows on your screen.



Video driver choice

Restart X: Ctrl+Alt+Backspace

dpkg-reconfigure xserver-xfree86

- this is the configuration program run by the debian-installer, but with priority 'high' rather than the more common 'medium'.
If you're going to reconfigure X this way then install the following packages first:

dpkg-reconfigure xfree86-common

xf86config - text based question and answer configuration

xf86cfg - graphical configuration

Video Resolution

When X is being configured after installation, you'll be asked how detailed the questions should be. You can choose 'expert'(?) mode and be asked all questions now, or choose a lesser mode and configure the X configuration file by hand later, or re-run the X configuration program again, or, some of this is configurable using GNOME tools, some not.
Either way, you should use the original documentation, or the web, to find the capabilities of your monitor (horizontal frequency (in kHz), vertical frequency (in Hz), resolutions and possibly 'mode line'), mouse and video card (you usually just need to choose the name of the driver that relates to all the manufacturer's monitors), otherwise these aspects won't be operating to their best abilities.

To decrease the resolution temporarily you can cycle through any configured resolutions with Ctrl+Alt+[+|-] (the keypad + or - keys). The size of the desktop will stay constant (e.g. 1280x1024) but your window into it will be smaller (e.g. 1024x768). You can thus still access all of your desktop by moving the mouse to the edges of the screen, which will scroll the smaller window over the larger desktop.

Configuration file


Sample configuration file: /usr/share/doc/xserver-xfree86/examples/ (or, using dwww localhost.localdomain/cgi-bin/dwww?type=file&location=/usr/share/doc/xserver-xfree86/examples/

Configuration information specific to each video chipset and other devices is provided in

Example important configuration sections

Set the correct login screen typeface size

Set the correct GNOME screen typeface size

You may however find this gives typefaces that are too small.


Log file: /var/log/XFree86.0.log

Further Information

The XFree86 Project, Inc:

Environment Configuration

Remove annoying console beeps

Within the command-line environment

For Bash / GNU Readline: echo 'set bell-style none' >> ~/.inputrc

For all programs, from the system console: setterm -blength 0

Within the X window system

For all programs:xset b off

Within GNOME

Desktop → Preferences → Sound → System Beep →

Minor Software


Spellcheckers and dictionaries


Fonts / Typefaces


(xfonts-scalable, installed by default, at least includes Bitstream Charter)

Further reading

List of other Bitstream Vera derivatives:

Unicode Font Guide For Free/Libre Open Source Operating Systems:

Issue this command at the command-line to see all available TrueType fonts: apt-cache search ttf-

Office suite - Word processor, spreadsheet, presentation, layout



To enable the GNOME file picker, with useful shortcuts to various places, rather than OpenOffice's default which lacks such usefulness: Tools → Options... → → General → Open/Save dialogs → Use dialogs - off

Further Information

About OpenOffice packages in Debian:

Debian-OpenOffice IRC discussion channel: irc://


This information is based on using a MySQL database.


If you're using a remote database and want applications to be able to interface with it


Connecting to a remote database - create a data source

Register data sources so that applications such as OpenOffice know of them.

Using the command-line

User data sources: ~/.odbc.ini
System data sources: /etc/odbc.ini


To create a data source just for the particular user you're logged in as, run gODBCConfig as that user then choose a 'User DSN'.

To create a data source for all users of this system, run gODBCConfig whilst root then choose a 'System DSN'.

Choose Add → choose a driver → OK → Enter at least the following:

mysql-client accessing a remote database

Use the MySQL client to work with MySQL in general: mysql -h <hostname> -u <username> -p
Then enter the password for that particular user when prompted to do so.

Access a particular database: mysql -h <hostname> -u <username> -p <your database name>
Then enter the password for that particular user with that particular database when prompted to do so.

Basic MySQL commands

mysql> SHOW databases; - show all databases you have access to

mysql> CREATE database <database>; - create a new database

mysql> USE <database>; - open a databaase so you can use it

mysql> DROP database <database>; - delete an existing database

mysql> CREATE TABLE <table> (<field> <type>); - create a table, with fields

mysql> SHOW tables; - show existing tables in the current database

mysql> DROP TABLE <table>; - delete a table

mysql> DESCRIBE <table>; - display structure information about an existing table

mysql> ALTER table <table> <alter specification>; - change the structure of an existing table

mysql> INSERT INTO <table> VALUES ('a','b','1999-03-30',NULL); - add data to a table

mysql> SELECT what_to_select [and optionally operate upon that, displaying the results] FROM which_table WHERE conditions_to_satisfy; - display the contents of fields according to certain criteria

mysql> UPDATE <table> SET <field> = '<value>' WHERE <another field> = '<another value>'; - change the contents of existing fields

mysql> ALTER TABLE <table> DROP <row>; - delete rows

mysql> DELETE from <table> ...; - delete rows

Methods of automatically loading data into a MySQL database

Further Information

MySQL 3.23, 4.0, 4.1 Reference Manual:

MySQL 5.0 Reference Manual:

Web editing


Internet applications




Per-user configuration

User bookmarks location: ~/.gftp/bookmarks

Further Information

Planet Mozilla:

Penguin.SWF - tracks development status and issues regarding the Linux version of Adobe's Flash Player:

Image viewing


Image editing


Further Information

Beginning GIMP: From Novice to Professional (a printed book):




Multi media players, including DVD



Audio architectures


Audio editing


multi-track audio editors

single-track audio editors

Sound effects

Compression / Archival

These can be useful for many reasons, for example the anti-virus and spam co-ordinating program Amavis uses many of them if they're installed; as does GNOME's archive manager / file roller.


Java Runtime Environment (JRE)

Java is very non-free, so getting it to work in Debian involves some manual steps.



Further Information

The Debian readme file: file:///usr/share/doc/java-package/README.Debian

Blackdown Java-Linux:

Debian GNU/Linux Java FAQ:'s dpkg bot on 'Java Virtual Machine': "a platform independent OO language. Server-side Java is extremely powerful due to the threads capabilities and the huge number of APIs available. On the other hand, Sun's Java licensing is extremely restrictive. Ask me about <java licensing> and <install java> and <sid mozilla java> (for starters). write once, run nowhere"'s dpkg bot on 'install java': "First, read <java licensing>. Still here? If you're in sarge or sid, ask me about <java-package>. If you're in woody, grab java-package manually from and then ask me about <java-package> for instructions on how to use it."'s dpkg bot on 'java licensing': "read the faq at"'s dpkg bot on 'java-package': "i guess java-package is the new name for mpkg-j2se... err, I mean j2se-package... DAMN IT, CAN'T THEY PICK A NAME?! Anyway, it lets you build a .deb file from Sun's non-free upstream Java distributions. See "man make-jpkg". Cf. "make-kpkg" (from kernel-package). only in sarge and sid currently, but it's a -all package, so it's safe to use it in woody."'s dpkg bot on 'sid mozilla java': "somebody said sid mozilla java was extra, extra, read all about it, sid mozilla java is mozilla 1.7 (in sid) is compiled with g++ 3.2. The ABI has changed, and old Java virtual machines will not work any more. Please see for details. for packages that work as of 13 ..."

Sound card




From the command-line



Further Information

'The Linux Audio Developers Mailing List' (and Linux Audio Users Mailing List), including various resources:

Low-Latency HOWTO by Paul Winkler:

More on low latency:


These instructions describe how to setup to print to a directly attached personal printer, or a remote printer, using CUPS (the Common Unix Printing System). CUPS uses the Internet Printing Protocol (IPP), rather than LPR (an alternative printing mechanism).
For sharing printers, using either a dedicated print server or to simply share your printer from your desktop computer, see the printing section of our document 'Server Setup with Debian Sarge'.


When printing to a directly attached printer

When printing to either a directly attached or remote printer

Package installation options

cupsys-bsd asks "Do you want to set up the BSD lpd compatibility server?" - yes

When printing to a remote printer

Put the hostname or IP address of the print server in the ServerName section of the configuration file /etc/cups/client.conf. The printer should then be available to most applications to print to.

Install the Printer Driver, when the printer is directly attached

You need a PostScript printer driver (and filter, if the printer isn't a PostScript printer) for each printer, even if the printer isn't a PostScript printer. Go to the Printer Database at and look up your particular printer and note which driver (and accompanying filter) it recommends using.

Install the recommended PostScript printer driver package (see previously), or if you're using an actual PostScript printer you may be getting the driver from the printer vendor.

Restart CUPS: /etc/init.d/cupsys restart

(this example is for an Epson Stylus C84, you need to change the name of the files to suit your printer)

Create the print queue, when the printer is directly attached

using GNOME

Use Applications → Desktop Preferences → System Tools → Printing → New Printer.
(GNOME will know where to look for the printer drivers and deal with them in their gzipped format so you don't need to uncompress them manually.).

To remove the print queue, there isn't a GNOME option to become administrator and do so (it's dimmed), so you could either run, or create a launcher for, gksu gnome-cups-manager; or use the CUPS web interface.

using the CUPS web interface

Using the command-line

If you need to remove the print queue, use lpadmin -x <printer>.

Configure the printer driver

Using the CUPS web interface

Configure Printer...

Using the command-line

lpoptions - display or set printer options and defaults. Use it to lock down a set of sensible defaults. To see the options available for your setup, use the 'docs' option like this: lp -d <printer> -o docs /etc/hosts; or use lpoptions -p <printer> -l. Usually, you can also use the media=..., sides=..., and duplex CUPS options, if there are InputSlot, MediaType, and Duplex options for your driver.

Some applications require specific printer configuration


If you have installed the cupsys-bsd package, OpenOffice will automatically detect your printer queues. Otherwise you have to add the printer queues manually with the oopadmin tool.


GIMP needs you to set the specific printer by replacing 'PostScript Level 2' with the specific printer. Choose 'Setup printer...'; pick the printer from the list; (the command line already has the right queue name (i.e. lp -s -dprinter -oraw)); choose 'Save Settings'.


Use the command lp -P <printer>. (Bug: the man page wrongly recommends a lower case -p.)

Tools for working with printer queues and print jobs


Should be self explanatory; however, if you try to delete a print job the print dialog hangs. There is no GNOME option to become administrator and perform such acts, so you could either run, or create a launcher for, gksu gnome-cups-manager; or use the CUPS web interface. Perhaps there is a group that printer operators should be a member of?

Using the CUPS web interface

Should be self explanatory.

Using the command-line

(use -h IP-address with each of these to specify the IP address of the print server if using a remote printer)

Inkjet printer maintenance

With Epson Stylus printers

Using the command-line


show available devices or drivers: lpinfo

restart CUPS: /etc/init.d/cupsys restart

CUPS configuration file: /etc/cups/cupsd.conf

CUPS error log: /var/log/cups/error_log. (Change 'LogLevel warn' to 'LogLevel debug' in /etc/cups/cupsd.conf, then restart CUPS, for more verbose messages in the error log.)

Configuration for Printing to Windows Printers

Check you can connect to the Windows system: smbclient -L computer-name -N. If WINS isn't available you need to additionally specify the IP address with -I IP-address.

Verify that your installation of CUPS has the SMB backend by looking for a particular symbolic link: ls -l /usr/lib/cups/backend/smb. If this symbolic link doesn't exist, create it: ln -s /usr/bin/smbspool /usr/lib/cups/backend/smb

Further Information

CUPS Software Administrators Manual: local-host:631/documentation.html or

CUPS Software Users Manual: includes forums for specific printer makes

CUPS Software Users Manual, localhost:631/documentation.html

Setting Up CUPS under Debian GNU/Linux:

HP Linux Printing Project:

Debian and Windows Shared Printing mini-HOWTO: (this is a good introduction)



Configuration for locally attached scanners

If the scanner uses a USB interface and is recognised by the system when you plug it in, it will likely just work without any further configuration.

Identify information about the scanner and the system

There are a number of different methods used by the system to access the scanner, depending on the interface it's attached to and possibly Linux kernel version

There are a number of different means of locating the scanner, depending on interface and means of accessing the scanner

We need to identify the means being used to access the scanner, its location, its backend and whether it knows this scanner. Use the following, possibly whilst root

Test the scanner

scanimage -d backend-name:location --format tiff > image.tif.
For example:

Backend configuration

The backend is specific to the scanner manufacturer and sometimes the model. The means of accessing the scanner must be defined in the backed configuration file, /etc/sane.d/backend-name.conf. The backend for most Hewlett Packard scanners is called 'hp' (; The backend for most Epson scanners is called 'epson' (

For USB scanners, where the system uses libusb and where the backend knows the scanner, using just 'usb' in the backend configuration file should be enough to use the scanner; this instructs the backed to scan for all Epson scanners it knows.

For USB scanners, where the system uses libusb, if the backend doesn't know your scanner, for example if it's a newer model, you'll have to put the vendor and product IDs, as reported by sane-find-scanner -v, into the backend configuration file.
(The documentation in the configuration file says to use the syntax 'usb <product ID> <device ID>'; sane-find-scanner uses the term 'vendor' to mean the same as the configuration file's 'product' and 'product' to mean the same as the configuration file's 'device'. The configuration file also leaves out the leading zeros (i.e. usb 0x04b8 0x0103) displayed by sane-find-scanner, but you can use either method.

For USB scanners, where the system uses devfs, you use the scanner's filesystem location in the backend configuration file.

For SCSI scanners, one of the following methods


You need to be a member of the group scanner.

If the system uses libusb and the backend knows your scanner, permissions should be setup correctly for you automatically. (see and possibly for background on this).

Note: need to add here how to setup permissions if the system uses libusb and the backend doesn't know the scanner (see

If the system uses devfs, set permissions in the configuration file /etc/devfs/conf.d/scanner (/etc/devfs/perms on some non-Debian systems), in the following manner (your scanner's location may differ to these examples):

"When using a SCSI scanner, ensure that the access permission for the generic SCSI device is set appropriately. We recommend to add a group "scanner" to /etc/group which contains all users that should have access to the scanner. The permission of the device should then be set to allow group read and write access. For example, if the scanner is at generic SCSI device /dev/sg0, then the following two commands would set the permission correctly:"

$ chgrp scanner /dev/sg0
$ chmod 660 /dev/sg0

"When your system uses the device filesystem (devfs), you have to edit /etc/devfs/perms. There you should search the line REGISTER ^sg[^/]* PERMISSIONS root.root 0600 and add a new line (eg. for changing permissions of sg4) REGISTER ^sg4 PERMISSIONS root.scanner 0660"

$ chgrp scanner /dev/usb/scanner0
$ chmod 660 /dev/usb/scanner0

Configuration for sharing a scanner

See the scanning section in our 'Server Setup with Debian Sarge' document.

Configuration for connecting to a remote scanner


Using the command-line

scanimage -d backend-name:location --format tiff > image.tif.
For example:


Applications → Graphics → XSane Image scanning program


Log files

SANE_DEBUG_NET=3D255 scanimage -L

Further Information

SANE Frequently Asked Questions:

For a detailed description of each backend's configuration file, see the relevant backend manual page, called 'sane-<backend-name>' (e.g., sane-epson and sane-hp).

/usr/share/doc/sane-utils/README.debian - information on permissions

various documents in /usr/share/doc/xsane/html/ or /usr/share/doc/xsane-common/html/

man pages: sane-usb, sane-scsi

SANE Search Engine Server:

XSane newsletter and mailing list:

Digital Camera (with USB interface)

You need to be a member of the group 'camera'.




Further Information

The Waikato Linux Users Group, Digital Camera Setup:

gphoto2 supported cameras:

'Digital Camera Support for UNIX, Linux and BSD' by Hubert Figuière:

'SB Digital Camera HOWTO' by Dave Kelly:

Digital Video Camera (with IEEE1394 / FireWire / i.Link interface)

See also the 'video editing' section.


Further Information

IEEE 1394 for Linux:

The IEEE1394 Digital Camera List:

Dan Dennedy's blog, Kino developer:

Video Editing




CD writing - writing data files to CD



cdrdao at least, and possibly other software, appreciates a symbolic link called /dev/cdrecorder pointed to the CD/DVD device. Create it, as root, using this command: ln -s /dev/hdc /dev/cdrecorder (replace hdc with the device name of your drive) (Note: this symbolic link gets lost).


Further Information

CD-Writing HOWTO by Winfried Trümper:

mkisofs manual page:

Linux kernel cdrecord problem:

DVD writing - writing data files to DVD


Usage - command-line

For most usage of growisofs, follow the instructions as per mkisofs. However the differences from the mkisofs command line are:

To master and burn an ISO9660 volume with Joliet and Rock-Ridge (Unix permissions) extensions on a DVD:
growisofs -Z <device> -R -J <files>

To master and burn an ISO9660 volume with Joliet and without Rock-Ridge extensions on a DVD:
growisofs -Z <device> -J <files>

To append more data to same DVD:
growisofs -M <device> -R -J <more files>
Make sure to use the same options for both inital burning and following sessions.

To use growisofs to write a pre-mastered ISO-image to a DVD:
growisofs -dvd-compat -Z <device>=image.iso

To nullify the media, for security reasons, rather than merely blanking it:
growisofs -Z <device>=/dev/zero

Further Information

growisofs instructions:



Accessing CD and DVD media

(with pmount installed, do we even need to do this?)
You need the device itself (i.e. /dev/hdc, but this may differ on your system) to be a member of the 'cdrom' group (not also its generic device name and mount points) and you to also be a member of the cdrom group, to be able to access it.

CD audio - Playing, digital audio extraction (ripping), copying and encoding



To read/play audio CDs, software CD players access the device directly, rather than mounting it, so as long as you have access to the device (see Accessing CD and DVD media) you should be able to play CDs.

Copying an audio CD to WAV files on hard disk then to another audio CD

Further Information

Copying DVD Movies - DVD disc to hard disk to DVD disc

How you copy a DVD movie will likely depend on what type of disc it is. Mostly they will be either single sided, single layer 'DVD-5' (roughly 5GB capacity), or single sided, dual layer 'DVD-9' (roughly 9GB capacity). For example a complete, uncompressed, copy of a DVD-9 disc will require a dual layer DVD writer and dual layer media. If you don't have these you will need to leave some parts out of the copy and/or compress the movie.




To extract a whole movie DVD:

To extract single movie files (chapters) from a movie DVD:

Note: If you insert a blank DVD it'll be mounted, because that's what's done with blank discs by default; if you then record a movie to that disc, you won't be able to play it in the usual way of playing DVDs, because DVD movies aren't mounted when played; in this situation eject and re-insert the disc for it to be treated in the way DVD movies are supposed to be.


vobcopy instructions:

(yet to be fully checked out) 'DVD ripping and transcoding with Linux':

(yet to be fully checked out) 'DebianLinux.Net :: Multimedia Projects':

ffmpeg ( can do 2-pass VBR DVD-friendly MPEG2 streams.

ZIP drives and disks



External USB drives and some configurations of internel ATAPI drives are seen by the system as SCSI drives; other configurations of internel ATAPI drives are seen by the system as ATAPI drives.

As this is removable media, unless it is important for you to retain permissions on the zip disk, I recommend formatting it with Windows FAT16 file system so that it is readable on both Unix and Windows systems. This won't save file permissions on the disk - all files will be readable by everyone.

The file system on the zip disk for FAT16 formatted disks has to be in primary partition 4.

You could create a system for dealing with both Windows and Linux formatted zip disks by creating an additional mount point for the Linux formatted disks, an additional /etc/fstab entry for it, and with the Linux partition in partition 1.

Users need to be a member of the group floppy, which Debian's initial user is at least.

You can make the eject command easier to use (such that you only have to type eject zip to eject a disk) by creating a shortcut like this, as root, using your particular partition reference: ln -s /dev/hdd4 /dev/zip.

The average user does not have permission to use eject. To allow them to eject disks, change the eject program's permission via setuid, whilst root: chmod a+s /usr/bin/eject.


When partitioning a disk, it needs to be primary partition number 4 and of filesystem type FAT16.

format a disk:

mount and unmount / eject a disk


"I have a ATAPI Zip Drive (recognized as ATAPI Floppy) so to make it work with Debian and kernel 2.4.3 I had to switch my BIOS setting from "Autodetect" to "None" (just the Zip channel of course), and mount it using mount -t vfat /dev/hdb"

The Windows LDM Problem - "A Zip disk formatted with Windows 2000 or Windows XP will be partitioned using Microsoft's new Logical Disk Manager (LDM) which is completely different from the standard DOS partitions we are all used to."
"Because this is a new and undocumented partitioning scheme, it is not supported by other operating systems (including other versions of Windows). There is a Linux kernel patch which appears to solve this problem."

Further Information

Zip Drive Mini-HOWTO by Kyle Dansie:

2c tip: Running an ATAPI Zip Drive:

Working with Windows filesystems

Windows uses FAT32 or NTFS filesystems. Linux FAT32 support is complete but NTFS support is patchy.

The only means of accessing NTFS filesystems is using the Linux kernel NTFS driver provided by the Linux-NTFS project and included in the Debian Linux kernel. The version included is the 'old' version, 1.?.



Create a mount point for each Windows partition (i.e. # mkdir /media/windows-c)

Add a line to /etc/fstab such as from the following examples:

Using the kernel FAT32 driver (vfat), with liberal permissions (umask), read/write access (rw), mounted automatically on boot for everyone (auto), non-root users unable to mount it (nouser):
/dev/hda1 /media/windows-c vfat umask=000,auto,nouser,async,rw 1 0

Using the kernel FAT32 driver (vfat), with liberal permissions (umask), read/write access (rw), not automatically mounted on boot (noauto), non-root users able to mount it (user):
/dev/hda1 /media/windows-c vfat umask=000,noauto,user,async,rw 1 0

Using the kernel NTFS driver (ntfs), with liberal permissions (umask), read only access (ro), mounted automatically on boot for everyone (auto), non-root users unable to mount it (nouser):
/dev/hda1 /media/windows-c ntfs umask=000,auto,nouser,async,ro 1 0

Using the kernel NTFS driver (ntfs), with liberal permissions (umask), read only access (ro), not automatically mounted on boot (noauto), non-root users able to mount it (user):
/dev/hda1 /media/windows-c ntfs umask=000,noauto,user,async,ro 1 0

Further Information

Linux-NTFS - Kernel Driver and Userspace Utils Status:

Linux-NTFS kernel driver Roadmap:

Linux-NTFS - Why does writing support take so long?:

The Ntfsresize Frequently Asked Questions:

Running Windows Programs



Some applications will run without configuring Wine at all, others require some minor configuration.



With default settings, C:\ will be ~/.wine/fake_windows.

Further Information

Wine User Guide:

Sharing files and printers with networked machines using Windows or Samba


Mounting shares from a Samba server

Using the command-line

To query the network for Samba servers, use findsmb. For each server found, it displays its IP address, NetBIOS name, workgroup name, operating system, and SMB server version.

To connect to a Samba share, you can either


When you installed Samba components you were asked for the workgroup name, if the name you entered is not still correct for the current network then change the workgroup setting in /etc/samba/smb.conf.

You can either

Mounting shared disk space on a permanent basis for mutiple users across multiple computers

This is for a share that will be automatically mounted at startup, available to everyone in a specified group. Root mounts it but files take permissions of whomever created them. The mount is defined once, in /etc/fstab (alternatively, instead of using fstab, you could mount the share individually when logging in). (for some reason this doesn't appear in Disk Mounter or GNOME's file picker, where as it does under some circumstances).

This is what to do on the workstation, for what to do on the server see Server Setup with Debian Sarge.

Further Information

mount.cifs man page:

The Samba project: See 'The Official Samba-3 HOWTO and Reference Guide' and the 'Docs and Books' section.

Accessing an LDAP server

Authenticate with a central server rather than using disparate local tools such as passwd and login; a replacement for NIS.



See these worthwhile guides for configuration instructions:

Accessing remote files from an NFS server




Further Information


The Network File System:

man nfs

Laptop Computers

All Laptops


See also packages that relate to laptops in the X Windows: XFree86 section.

IBM ThinkPad



thinkpad-source and tpctl

Thinkpad-source is required for tpctl to work, for access to APM (power management) features (if the ThinkPad has APM), but also other features. Thinkpad-source needs to be compiled; follow these steps:


Further Information

Linux On Laptops:


debian-laptop mailing list:

Laptop Mode Tools:,, "horribly horribly broken, for suspend software check, or patches at, or "run this arbitrary code in ring 0""

Connecting and synchronising PDA's in general




Connecting and synchronising a PDA running Windows CE

This describes connecting and synchronising using USB, not serial or infrared.






Default IP addresses are for local and for remote.



Log file: /var/log/syslog.

Further Information

SynCE - Linux USB HOWTO:

Using the SynCE plugin for MultiSync:

Window Manager

Debian's GNOME comes with GNOME's house window manager (Metacity) and theme.

ADSL modems

This section is currently incomplete.

USB ADSL modems can be used, but the process requires a number of manual steps depending on which firmware is in the modem. GNOME's modem networking configuration applies to analog modems, not USB ADSL modems. Work is underway in the summer of 2006 to seamlessly integrate USB ADSL modem configuration into gnome-network-manager. Alternatively you could use an ADSL modem with a CAT-5 interface, which would circumvent these difficulties.

Info on various modems:

Alcatel Speedtouch modems


Analog modems

Whether it works or not will initially depend on whether the modem is recognised by the operating system. If it's an internal PCI modem, use lspci -v, whilst logged in as root, to see if it has been recognised.
Check with the Debian GNU/Linux device driver check page to see if a driver is recommended for the modem. If there isn't then don't waste time on it, buy an external serial modem.



You may need to create a symbolic link (AKA a shortcut) to the device (which, for a serial modem, would be referred to as /dev/ttyS0 if it were using the 1st serial port, /dev/ttyS1 were it using the 2nd) from /dev/modem, for example: ln -s /dev/ttyS0 /dev/modem.


If the modem isn't supported out-of-the-box you could try downloading and running scanmodem from It advises looks for the modem and if it finds it may advise where where to get drivers from.

Further Information

Dial-up networking with an analog modem



Users have to be a member of the group 'dialout' and may also have to be a member of the group 'dip' to use the modem


Applications → System Tools → Networking → Connections → Add → Forward → Modem (PPP) and follow the prompts for entering the details for the Internet service provider.
Note that this populates the /etc/wvdial.conf file with the information you provide; if your login details require no password, a 'Password' section won't be created and you'll get an error message, requiring you to manually add a 'Password = none' setting in the respective section of /etc/wvdial.conf.

Add the 'Modem Lights' applet to the panel, this gives you a means of connecting and disconnecting from within GNOME.


Use either of these methods:



Use Modem Lights


If you've used wvdialconf to configure, use wvdial to connect;
If you've used pppconfig to configure, use pon and poff to connect and disconnect.


If you're using pppconfig, pon and poff, then try plog (" shows you the last few lines of /var/log/ppp.log. If that file doesn't exist, it shows you the last few lines of your /var/log/syslog file, but excluding the lines not generated by pppd.")

Further Information

man pages: wvdial, wvdial.conf, pppconfig, pppd, pon, poff, plog.

PCMCIA / PC Card / CardBus



Start PCMCIA services: /etc/init.d/pcmcia start.

To have a PCMCIA network cards' networking started and stopped when the card is inserted and removed, use the following in /etc/network/interfaces:

mapping hotplug
	script grep
	map <network device name>


Bluetooth support is enabled in Debian kernels.



Users must be in group 'dialout' to have privileges to use these devices.

Bluetooth device: /dev/rfcomm0


/etc/init.d/bluez-utils start

The bluetooth adapter

Display information about each bluetooth adapter (like ifconfig): hciconfig -a.

Activate the Bluetooth adapter: hciconfig hci0 up.

Deactivate the Bluetooth adapter: hciconfig hci0 down.

Reset the Bluetooth adapter: hciconfig hci0 reset.

Set the adapter's public name to myname: hciconfig hci0 name myname.

Display a human-readable list of the Bluetooth features the device supports: hciconfig hci0 features.

Talking to remote Bluetooth devices

Scan for remote Bluetooth devices: hcitool scan. It will tell you the name and mac address of devices it finds.

Show synopsis of features of a particular remote Bluetooth device: # hcitool info <mac address>.

Ping a particular remote Bluetooth device: # l2ping <mac address>.

Show detailed list of features of remote Bluetooth devices: sdptool browse.

Wireless Networking (Wi-Fi / WiFi) - device setup

Getting a wireless adaptor working depends on its chipset. Basically, if the chipset is made by one of the large manufacturers it is less likely to work as the large manufacturers won't provide documentation on their chips to free software device driver authors; where-as if the chipset is from a smaller, Taiwanese, manufacturer then it is likely to work as those manufacturers provide the documentation.

Note: PCMCIA cards will need PCMCIA services installed and working, see the PCMCIA section.


Linux Kernel Modules (Drivers) and Accompanying Utilities

In order of ease of use, if the drivers for your device's chipset are already included in the Debian kernel then they'll be automatically loaded when you plug the device in and it should just work; Or they may be available as ready built kernel modules that you need to install; Or they may only be available in Debian as source code for kernel modules which you need to install and compile. Or they may require you to seek drivers outside of the Debian repositories; Or they may not have any free software drivers developed for them and so require you to load Windows drivers using ndiswrapper.

For Using The Device


The adapter device name will likely be of the type /dev/eth1 or another eth number. Though adapters with Atheros chipsets will likely instead be /dev/ath0 or /dev/wifi0.

Check if the device is already usable


Applications → Administration → Networking → look for 'Wireless connection'

Configure it with the Properties option; enable it with the Activate option; if there are wirelss access points available they will appear under the drop down list 'Network Name (ESSID)'.

Using the command-line

Use iwconfig and ifconfig -a to see details of any recognised device. Use iwlist scan to scan for networks.

See also iwconfig, iwlist, iwspy, iwpriv.

If it isn't already working

Configure it using either

Further Information

Jean Tourrilhes' Linux Wireless Tools and Wireless Extensions site:

'A survey of Linux and WiFi': - good intro to the state of WiFi hardware support at the present time and a list of currently available devices with details of chipsets and drivers.

Linux kernel updates



kernel-image is a 'pseudo package' for the Linux kernel which will list the specific kernel packages available for different kernel versions; you should install the most recent kernel available using the actual package name in the form kernel-image-<kernel-version>-<architecture>. The kernel will be installed and your old kernel version retained (if this is a kernel for '-386' that works on any x86 architecture then it gives you a fail-safe boot option in case of problems at some point), with the new kernel set as the default in the GRUB menu (in most instances the default, but not all). Pick the most recent version 2.6 kernel available. You can find out which CPU you have in your system with the command cat /proc/cpuinfo, under 'model name'.
If the Debian Installer hasn't automatically picked the specific <architecture> that matches that of your system then you should do so - i.e. for single CPU, 32-bit x86 (generically known as PC, i386, IA32, IA-32 or x86-32) architectures, the following flavours are available:

If you have multiple processors then use the '-smp' versions of some of these which are available.


To see which compile-time options were set in your kernel, see the file /boot/config-<kernel version>-<Debian build version>-<architecture>.

Further Information

Changes in the 2.6 Linux kernel - prior to the present mainline kernel

Changes in the 2.6 Linux kernel - the present mainline kernel

'Debian Reference - Chapter 7 - The Linux kernel under Debian:


Kernel Traffic:

The Linux Kernel Mailing List (LKML):

The Linux Kernel Archives:

Linux kernel compilation

In most instances you won't ever need to compile a kernel but it may be advantageous to at some point.



You must be a member of the group src.

Further Information


'Creating custom kernels with Debian's kernel-package system' by Kevin McKinley:

Portable audio players

Some devices work as USB Mass Storage, like the small flash based players, others require a special driver.

Apple ipod


Creative NOMAD/Zen/Dell DJ (Portable Digital Entertainment (PDE) protocol devices)


libnjb is a C library and API for communicating with the Creative Nomad JukeBox and Dell DJ digital audio players. The protocol these devices use is presumably called PDE (Portable Digital Entertainment protocol) at Creative. Newer devices using the Microsoft MTP (Media Transfer Protocol) are NOT supported.

Players that use Microsoft MTP (Media Transfer Protocol) - includes Creative NOMAD/Zen/Dell DJ


I think you have to use Debian Testing to get support for these devices.

Creative Nomad players



OpenVPN client



This describes how to connect to an OpenVPN server that uses a tun interface, PKCS12 certificate, LZO compression and TCP protocol.

You'll need the client certificate, from the VPN server, stored somewhere you can point the openvpn program to.

Setup the tunnel:
# openvpn --dev tun0 --mktun

# openvpn --remote <IP address of VPN server> --dev tun0 --pkcs12 <filename of certificate>.p12 --client --comp-lzo --proto tcp

Reporting Issues

Reporting an issue to Debian

Automated Method, Using GNOME

Applications → Programming → Bug Report Tool.

Manual Method

If you know the name of the package you have an issue with, check whether your issue has already been reported by going to Under 'Viewing bug reports on the WWW' → 'What to search for:' put the name of the package you have an issue with and choose 'Find'.

If you don't know the name of the package go to and choose 'Search package directories' or go there direct at Choose 'Keyword:' and enter the closest you know of to the package name. Under 'Distribution:' choose 'Stable' or 'Testing'. Choose 'Search'. Under 'More Information on' <package name> → 'Check for Bug Reports about' <package name>.

Checkout the list of bugs/issue reports. If you've found an unreported issue, you can send an email describing the issue to At the top of the message you need to use this syntax:
Package: <package name>
Version: <package version>
Describe your issue...

Further Information

'How to report a bug in Debian':

Further information

Release Information:

Release Notes:

All software packages keep their documentation in /usr/share/doc/package-name. dwww (in GNOME choose Applications → Debian → Help → Dwww) is an easy way to browse this. There is usually a README.Debian file and a README file giving an introductions from Debian and from the package author, a changelog for the upstream package and a a changelog for the package upstream and a changelog for Debian-specific changes. Sometimes this documentation here is essential and useful, sometimes it is inadequate.



Debian GNU/Linux Desktop Survival Guide by Graham Williams:

Debian Wiki:, aggregate blog of developers:

GNOMEFILES GTK+ software repository:

If you have problems with a package you can search

The Debian development announcements mailing list:

The Debian development mailing list:



? irc://

? irc://

List of all known bugs with a particular package:<package name>


Log files

Error logs are kept that can help understand when something is broken.

When troubleshooting a problem it can be useful to keep a command-line window open displaying a program's log file, with entries appended in real time as the file grows, using: tail -f <log-file>.



These are the most pressing problems we've been troubled by.

Cannot become administrator from within the printer queues dialog.

Cannot remove print jobs from queue using GNOME, as the print queue dialog hangs when you choose delete. (Fixed in Testing/Etch about January 2005)

Cannot set the system's default sound card. If you have multiple sound cards you need to run alsaconf every time you turn the computer on. (Fixed in Testing/Etch's GNOME 2.12)

Appendix 1

Tasksel's 'desktop environment' installs the following: fortune-mod, gdm, gimp, gnome, gnome-desktop-environment, kde, kde-core, kdeadmin, kdeartwork, kdegraphics, kdemultimedia, kdenetwork, kdepim, kdeutils, menu mozilla-browser, mozilla-psm, myspell-en-gb, myspell-en-us,, x-window-system-core, xscreensaver.

We can leave out fortune-mod, gnome-desktop-environment (it's a dependancy of GNOME), kde, kde-core, kdeadmin, kdeartwork, kdegraphics, kdemultimedia, kdenetwork, kdepim, kdeutils, mozilla-browser (we recommend Mozilla Firefox instead, and GNOME installs it anyway), mozilla-psm, gimp (covered separately), (covered separately), myspell-en-gb (covered separately), myspell-en-us (covered separately), xscreensaver (it's a dependency of GNOME).