Desktop System Setup with Debian GNU/Linux 'Testing/Lenny'



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, the Testing variation, with a Linux version 2.6 kernel, using a GNOME desktop environment. It applies most accurately to 32-bit x86 and 64-bit amd64 architectured computers; most of it but not all will apply to all Debian's supported architectures.

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

I try to stick closely to stock Debian, which means adding non-free but being very consertaive about installing software from outside Debian, which is to say that some is but not much. This is as much for reasons of simplicity (so you're not chasing round a load of external sites) as it is for system stability (stability in terms of crashing). This is more difficult with browser add-ons because they provide worthwhile functionality but many don't exist in Debian so this restriction is more relaxed for them. Firefox and Thunderbird extensions, compared with other kinds of software from other sources, have the 'advantage' they're checked for and updated automatically on startup.

This document has related documents:
'Desktop System Setup with Debian 3.1 Sarge';
'Desktop System Setup with Debian 4.0 Etch';
'Server Setup with Debian 3.1 'Sarge''
'Server Setup with Debian 4.0 'Etch''.

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

This document needs your feedback, it is under constant development so 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.10.0 - 20 December 2007

0.9.1 - 18 September 2007

0.9.0 - 13 September 2007

0.8.27 - 1 September 2007 - added ufraw; removed gimp-dcraw

0.8.26 - 31 August 2007 - removed thinkpad-base, tpctl, thinkpad-source, configure-thinkpad, ibm-acpi as they're not available and thus also removed the IBM Thinkpad section.

0.8.25 - 30 August 2007 - mistakenly had Testing security updates repository as ' etch/security-updates main contrib' rather than ' testing/updates main'

0.8.23 - 29 August 2007

0.8.22 - 25 August 2007

0.8.21 - 24 August 2007

0.8.19 - 11 August 2007

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

0.8.12 - 23 June 2007 - Tidied up NTFS filesystem support info, adding ntfs-3g and better explaining the various mounting capabilities available

0.8.2 - 29 April 2007 - Added regionset

0.8.1 - 25 April 2007 - Reduced 'CD audio - Playing, digital audio extraction (ripping), copying and encoding' section into just 'Copying Audio CDs'; restored serpentine; removed abcde and jack.

0.8.0 - 24 April 2007 - Added an 'Audio / Sound - decoding, encoding, playing' section; just the packages, more will follow.

0.7.0 - 22 April 2007


<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):,

Subscribe to the debian-testing-changes mailing list ( to be kept informed of changes to Debian Testing.

Debian bug tracking system:

Getting Debian

Downloading from the Internet

Download a snapshot of Testing/Lenny 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 Stable 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' version that you boot your computer with, it runs the operating system straight from CD or USB flash media 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.
You can get a live Debian image 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

Hardware4Linux - a web site to lookup and report hardware compatibility and incompatibility with Linux distributions.

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 either dpkg-reconfigure <package-name>. or tasksel

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.

To start the installer, either just press [Enter] to start the installer in text mode, or type installgui and press [Enter] to start the installer in graphical mode.

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 CD discs 1 and 2 (DVD disc 1) and choose to add them all to the sources list when prompted.

Partitioning scheme - You have the following options:

Choose the 'Separate /home partition' 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 option to install one or more predefined collections of software, the 'desktop environment' option will install a fairly useful system (its a massive improvement on what Debian 3.1 installed) but it can be improved upon, which is what this documents all about. You can either choose that option and return to this document for additional software advice, or do it all manually.

The installer's 'desktop environment' option installs the following:
twm, gimp-print, xresprobe, eject, foomatic-filters-ppds,, xserver-xorg-video-all,, foomatic-db-hpijs, cupsys-driver-gutenprint, cupsys-client, avahi-daemon, foomatic-db-gutenprint,, discover1, myspell-en-us, xdg-utils, hotkey-setup, foomatic-gui, xorg, cupsys-bsd, iceweasel, xserver-xorg-input-all, hplip, desktop-base, alsa-base, libnss-mdns, xterm, cupsys, alsa-utils, anacron, printconf, hpijs, menu, gimp,, foomatic-db-engine.

The installer's 'laptop' option installs the following:
wireless-tools, acpi-support, hibernate, cpufrequtils, acpi, wpasupplicant, pcmciautils, acpid, apmd, hotkey-setup, anacron, uswsusp, bluetooth

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 - Development version:

Debian GNU/Linux Installation Guide, Debian 4.0 Etch version:

This is also installable as the installation-guide-<architecture> package, for example installation-guide-i386 or installation-guide-amd64.

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 Desktop → Administration → Users & Groups → Users → pick user → Properties → User privileges.
More specifically groups administration is available from Desktop → Administration → Users & Groups → Groups → pick group → 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.

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

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.





When you click from within the web browser on a .deb file choose Open with → other → /usr/bin/gdebi-gtk.


From the command-line

aptitude, using switches
aptitude, used interactively


Synaptic Package Manager
(Desktop → Administration → 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 a GNOME, KDE or XFCE desktop environment depending on which installer you use. This document describes individual packages to install for a GNOME desktop environment for a vaguely modern computer. For an older computer you're advised to use XFCE instead of GNOME.

Install these for a basic desktop environment without major applications:


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 IceWeasel / Mozilla Firefox, and so they only serve as an example and are thus worth spending some time changing and adding to with your most used programs.

X Windows:

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



Video Driver Choice

The Debian Installer, or dpkg-reconfigure xserver-xorg should auto-detect your video graphics adapter and configure with the appropriate driver, such as from those below. You can further configure for your particular adapter with options specific to the driver.

New Auto-Configuration

Debian Wiki - XStrikeForce - HowToRandR12:

Brice Goglin's Blog - Debian/ notes - Modesettings/RandR-1.2 improvements with Intel driver 2.0 and others:

Brice Goglin's Blog - Debian/ notes - Dual-Head config breaks with xserver-xorg-video-intel:

Brice Goglin's Blog - Debian/ notes - Intel driver 2.0 does not find my nice mode/resolution:


Restart X: Ctrl+Alt+Backspace

dpkg-reconfigure xserver-xorg - 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:

xorgconfig - text based question and answer configuration

xorgcfg - graphical configuration

xvidtune - video mode tuner for Xorg. "When given one of the non-toolkit options, xvidtune provides a command line interface to either switch the video mode. Without any options (or with only toolkit options) it presents the user with various buttons and sliders that can be used to interactively adjust existing video modes. It will also print the settings in a format suitable for inclusion in an xorg.conf file."

Video Resolution

If the video resolution isn't automatically set correctly then after installation you should tune the X configuration to best suit the monitor. Using the original documentation that came with the monitor, or the web, find the horizontal frequency (in kHz), vertical frequency (in Hz), applicable resolutions and possibly 'mode line'. You usually choose the name of the driver that relates to all the manufacturer's monitors.

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


Configuration information specific to each video chipset and other devices is provided in info pages for specific video card drivers, i.e.

Thorough explanation of mouse configuration: /usr/share/doc/xserver-xorg-input-mouse/README.gz (or, using dwww localhost.localdomain/cgi-bin/dwww?type=file&location=/usr/share/doc/xserver-xorg-input-mouse/README.gz)

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/Xorg.0.log

Further Information

Changelogs for each video card driver are in /usr/share/doc/xserver-xorg-video-<driver name>/changelog.Debian.gz Foundation: and

gravityboy's Journal (Debian developer):

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





Note that Simple Backup requires use of sudo.


Configure and use:
Desktop → Administration → Simple Backup Config

Desktop → Administration → Simple Backup Restore

Spellcheckers and Dictionaries


Fonts / Typefaces


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


Fonts for all users are located in /usr/share/fonts/

(when should they instead be in /usr/local/share/fonts/truetype?)

Fonts just for particular users (just for print?) are located in ~/.fonts/

list installed fonts (at least, those known of by the fontconfig system):


GNOME has a location you can copy fonts to to install them: fonts://. This seems to be a compendium of all the system fonts in /usr/share/fonts/truetype/ and below and your personal fonts in ~/.fonts.

Installing Individual TrueType Fonts (TTF) For Print

If a font isn't available in a Debian package you can install individual fonts from other sources.

For a particular user

For all users


For a particular user

If you, logged in as an ordinary user, drag and drop or copy and paste fonts to fonts:// it saves them in ~/.fonts and they're subsequently only available to you. You won't see the font appear in the list, though if you try to copy it again GNOME will say it's there and it is actually there. I haven't tried but you may have to logout and login again to see them in the list.

For all users

Presumably you need to be root to put fonts there to be available for the system, rather than for you individually? There's no way to 'become root' through the user interface so you have to run Nautilus from the command-line as root (but will they actually be saved in root's ~/.fonts or in /usr/share/fonts/truetype/?)


Does any or all of this apply to non-truetype fonts?

If I select to download a font from the web, it defaults to opening in gnome-font-viewer but you can't do anything in gnome-font-viewer other than look at it, which seems kind of pointless, what you want is buttons to 'install' and be asked 'Install for just you' or 'Install for all users', with the latter asking for the root password.
(See Font Sadness by Aaron Bockover, GNOME Bug 495510 - enable gnome-font-viewer to install fonts and GNOME Bug 86598 - Install new fonts through the font dialog.

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-

TrueType Fonts in Debian mini-HOWTO by Bear Giles: (from 2000 so might be outdated)

Linux fonts (mostly X11):

Office suite - Word processor, spreadsheet, presentation, database, 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://


Apart from using OpenOffice, 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.


ODBC driver definition file location: /etc/odbcinst.ini

ODBC driver definition file syntax for libmyodbc:
Description = MySQL driver
Driver = /usr/lib/odbc/
Setup = /usr/lib/odbc/
CPTimeout =
CPReuse =

ODBC user data source definition file location: ~/.odbc.ini
ODBC system data source definition file location: /etc/odbc.ini

ODBC data source file syntax for MyODBC:
Description = MySQL database test
Driver = MySQL
Server = <server hostname>
Database = <database name>
User = <database username to connect as>
Password = <database password to connect as>

Using the command-line
Driver: odbcinst -i -d -f /usr/share/libmyodbc/odbcinst.ini Data source: System: odbcinst -i -s -l -f template.ini User: odbcinst -i -s -h -f template.ini SHOULD THIS COMMAND EVEN BE USED BY A PERSON? SHOULD THIS FILE EVEN BE CREATED MANUALLY?

To create an ODBC data source just for the particular user you're logged in as, Applications → Debian → Apps → Databases → ODBCConfig → User DSN.

To create an ODBC data source for all users of this system, run ODBCConfig from the command-line whilst root, then choose '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



Iceweasel / Firefox

Set Iceweasel / Firefox as the preferred GNOME web browser: Desktop → Preferences → Preferred Applications - change 'Custom' - 'gnome-www-browser %s' to 'Iceweasel'.


Per-user configuration

User bookmarks location: ~/.gftp/bookmarks


To enable it, right-click on the Pidgin system tray applet -→ Plug-ins -→ Off-the-Record Messaging -→ and choose to enable it. To configure it for use choose Configure Plug-in -→ Config -→ My private keys -→ Generate.



To enable OTR, initiate a conversation with someone. Choose 'OTR: unverified' in the bottom left of the chat window. Choose to verify the person and then confirm and they'll be added to the list of verified people you can access in the plug-in's preferences.

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):

Colour Management

Software required for creating a colour managed workflow. This is a first draught of this section so isn't considered complete.



Linux Color Management:





The most secure way to run this is in 'Restrictive by default, whitelist traffic' mode, rather than the default 'Permissive by default, blacklist traffic'. Be aware this can be a major pain to use because typically things won't work and you'll not understand why, having forgotten that you have the firewall on, even with the system tray applet visible. When you exit the system tray applet the firewall remains running at all times unless you explicity choose 'Stop Firewall', it just doesn't have a system tray applet to represent it. This further confuses (I think the system tray applet should instead say 'hide' rather than 'exit' or perhaps we shouldn't have it minimise to system try).

If you have the GUI turned on it'll turn red when it blocks a port and you can go to the Events section, right-click and choose one of either 'Allow Connections to Destination', 'Allow Outbound Service For Everyone', or 'Allow Outbound Service For Source'. I choose 'Allow Outbound Service For Everyone'. The nomenclature reflects the fact the software can also provide Internet connection sharing for other computers.

These are the outbound ports I've found useful to whitelist (as defined in /etc/firestarter/outbound/allow-service):

	DNS, 53, everyone,
	DHCP, 67-68, everyone,
	FTP, 20-21, everyone,
	HTTP, 80, everyone,
	HTTPS, 443, everyone,
	IMAP, 143, everyone,
	Ircd, 6667, everyone,
	Openvpn, 1194, everyone,
	Samba (SMB), 137-139 445, everyone,
	SMTP, 25, everyone,
	Ssmtp, 465, everyone,
	Microsoft-ds, 445, everyone, IPCop web interface
	Unknown, 222, everyone, IPCop command-line interface
	Unknown, 9100, everyone, HP JetDirect printing
	Whois, 43, everyone,

Firestarter runs as a system service / daemon (controlled using /etc/init.d/firestarter with start, stop or restart or you can do so from the GUI) whose configuration is per-machine not per-user.

My own questions answered

If you explicitly allow an outgoing port, do you correspondingly need to explicitly allow the incoming port so you can 'hear back' from the thing you've connected with?

in affect/effect(?), if you've requested something from somewhere then it coming back is trusted. By default Firestarter doesn't block absolutely everything: "Traffic from the Internet in response to connection requests from the firewall or client hosts is allowed back in through the firewall." ( It seems we should instead be talking about allowing outgoing connection requests and denying incoming connection requests.

"In most cases, the rules need to be symmetrical -- for instance, allowing request packets to go out to a remote web server only makes sense if the responses from that server are allowed to return. The exception to this rule are the "SYN" packets which are used to initiate a new connection. For instance, even though packets using the http protocol are allowed in so that you can receive data from a remote web site, http packets requesting a new connection might be blocked, to prevent outsiders from connecting to internal web servers." -

'ping: sendmsg: Operation not permitted' How do I enable ping? I haven't enabled ICMP filtering in the preferences so why doesn't ping work?

Is it because: "By default Firestarter allows ICMP traffic, although it throttles it somewhat to prevent excessive flooding or Denial of Service attacks." -

"? Run this command to fix this:
# iptables -A OUTPUT -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT
This means append to the IP chain/table OUTPUT rules. If you get a packet that uses the ICMP protocol, and its ICMP type is an echo request (ping), and it's new (this bit may have been a bit redundant, but the principle of knowing the state of the packets you want to send through is important) jump to the ACCEPT chain/table (which immediately pushes the packet through)." Needs to go at the start of your iptables.

What is the performance hit of running Firestarter? are there shades of performance grey, such as if you add more rules it affects performance more?

Issues I feel it has

When you see Events you can see whether ports are TCP or UDP. The Policy section doesn't give the option of specifying whether you're defining UDP or TCP. They are actually for both. It's a shame it doesn't communicate this.

The Policy view doesn't show the 'comment'.

Annoyingly you have to apply rules per-interface, so if you wander with a laptop between wireless and wired you'll have to maintain two lists. Note that when you edit policies of an interface that isn't currently up and running it complains when it can't apply it when the interface isn't up ('Failed to apply outbound policy') but don't worry, it's still changing the rule).

Help → Online Users' Manual is broken, it leads to which gives "Internal Server Error" (wrongly opened in Epiphany, when my default browser is set to Firefox). It should be or their web site should be fixed.

Has development of Firestarter ceased? and does it have issues with newer kernels?


To see the underlying iptables firewalling that Firestarter has configured:
iptables -L -n

Further Information


Multi media players, including DVD


Search & Indexing






Applications → Accessories → Search & Indexing



Applications → Accessories → Search

Audio / Sound - Encode and Play

Thus far the following formats are covered: Ogg Vorbis, FLAC, MP3, AAC, WMA and RealAudio.


Libraries for playing

Libraries for encoding

GStreamer plugins for playing

GStreamer plugins for encoding

Command-line programs for converting

Command-line programs for encoding

Command-line programs for playing

GNOME programs for converting

To do!

GNOME programs for ripping and encoding

GNOME programs for playing (only)

Stand-alone programs for playing (not for a specific desktop environment)

These players are not based on a specific back-end, instead using a combination of their own abilities and including lots of libraries

GNOME programs for ripping, encoding, playing and managing

Audio architectures


Audio editing


multi-track audio editors for GNOME

single-track audio editors for GNOME

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.


Runtime Environments - Java Runtime Environment (JRE)


Further Information

Debian GNU/Linux Java FAQ:

Runtime Environments - Mono


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'.


This is an interesting document on changes to be made to printing packages in Debian: PrinterDriverPackagesSuggestedChanges.

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


Use Desktop → Administration → 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 nothing happens. 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


List available devices on the system: lpinfo -v

List available drivers on the system: lpinfo -m

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, if its vendor ID and product ID are recognised by the system and it doesn't require a firmware file adding then it will likely just work without any of the following configuration. Key to this recognition is whether the configuration file relative to the scanner's family contains the vendor ID and product ID of the particular scanner.

You can find information about support in the latest upstream version of SANE for particular scanners at You can find (briefer) informatiion about support in Debian Etch's version 1.0.14 of SANE for particular scanners at

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

There are different means of locating the scanner dependent on interface

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


Some USB-attached scanners require firmware loading into them each time they're turned on.

Go to and look up the scanner to see which backend is required and thus the name of the backend config file /etc/sane.d/<backend name>.conf. Bear in mind this information is for the latest upstream SANE version, not the older version 1.0.14 in Debian Etch.

There might be some firmware information in the 'Comment' field but it won't be much. It seems if it appears there then it won't be in the man page.

Click on the link for the backend and be taken to a man page (or use your system's man page). If firmware is required there should be a 'FIRMWARE FILE' section with the firmware filename, suggestions of to get it, where to create the directory for it and save it - attributes that are defined in the backend configuration file.

Note: the man pages on the web say to put the firmware file in /usr/local/share/sane/<backend name>/" but Debian instead requires them in /usr/share/sane/<backend name>/

Some firmware files are freely redistributable and so are available from the backend homepage, linked to from the 'Backend' column. Most are not. You might find the uncompressed firmware file in these locations on the CD that came with the scanner or on a Windows system that has the scanner driver installed. Otherwise, you might find the Windows installer program, from which you can get the firmware file, on the CD that came with the scanner, the scanner manufacturer's web site or elsewhere. You might need to use one or a combination of these methods to get the firmware file from the Windows installer file:

Test the scanner

This is the syntax:
scanimage -d <backend-name>:<location> --format <saved image format> > <saved image filename>

These are example commands you might use:

Backend configuration

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


Users need to be a member of the group scanner.

Device permissions:

Configuration for sharing a scanner

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

Configuration for connecting to a remote scanner


Using the command-line

This is the command's syntax:
scanimage -d <backend-name>:<location> --format <saved image format> > <saved image filename>.

These are example commands you might use:


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, they're called 'sane-<backend-name>' (e.g. sane-epson and sane-hp).

Permission information: /usr/share/doc/sane-utils/README.debian

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

Man pages: sane-usb, sane-scsi

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:

Digital Video Broadcasting (DVB-T / Freeview)

This section is specific to DVB-T as that is the only DVB equipment I have access to but the procedures are theoretically very similar for DVB-C and DVB-S. Some of it is also UK-specific.


The Digital Video Broadcasting Project:

Wikipedia on DVB:

There are many forms of DVB, these are typical:

DVB receiver device

Devices will either be a card with a PCI interface to fit inside a computer or a portable device with USB interface. Choose carefully as not all devices are supported. From my limited experience I found the PCI Hauppage Nova-T range well supported. A typical example with USB devices is currently the Freecom DVB-T USB Stick 25451 revision 3 is supported but not revision 4 as it's based on a completely different chipset.

USB interface

Identification (by the kernal and yourself) is important and is all about the vendor ID and product ID.

PCI interface

Identification (by the kernal and yourself) is important and is all about the PCI ID.


Some USB devices require firmware loading into them when they're turned on for them to work. Predominantly this firmware won't be available under a completely free licence so won't be included in Debian. If the device needs firmware you need to download it manually and save it in /lib/firmware.
dmesg|grep dvb might give you clues such as 'dvb-usb: did not find the firmware file. (dvb-usb-wt220u-fc03.fw)' and 'dvb-usb: downloading firmware from file 'dvb-usb-wt220u-fc03.fw'' has information about required firmware for particular devices including links to download some firmware. Additionally you can download other firmware from


For the UK, get localised aerial advice from

You are likely to receive an aerial bundled with a USB device but it may not be good enough. A well recommended indoor aerial is the Telecam TCE2000 (currently £10 from Argos in the UK) or the version with the bundled amplifier the TCE2001 (currently £20 from Argos).

Kernel Driver

V4L-DVB - Linux DVB driver - /


Configuration - command-line

For the UK, get localised transmitter (multiplex) advice from; transmitter (multiplex) information from; band channel to frequency information from

The frequencies of channels depend on your local transmitter. Scan your local transmission (the frequency of which we get from a file) and save the resulting list of channels you can receive in channels.conf (alternatively has scan and channel lists for the UK):
scan /usr/share/doc/dvb-utils/examples/scan/dvb-t/<your country and transmitter name> | tee ~/channels.conf

Make a shortcut to channels.conf for the channel changing command 'tzap' to use:
mkdir ~/.tzap
cd ~/.tzap
ln -s ~/channels.conf channels.conf

Make the same shortcut to channels.conf for other programs you'll use to watch DVB streams, such as gxine and xine in ~/.xine; mplayer in ~/.mplayer (though mplayer prefers ~/.mplayer/channels.conf.ter)



(This requires mplayer be installed)

Get channel names (e.g. BBC ONE) and PIDs (e.g. 600 601):
cat ~/channels.conf
For example: BBC ONE:754166670:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_3_4:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:600:601:4168 where the channel name is BBC ONE; the frequency to tune to is 754166670 Hz; the video PID is 600; the audio PID is 601.

Tune a frequency and program (assumes you only have one DVB device attached):
tzap 'BBC ONE'
(this will also tell you the frequency (in Hz), video and audio PIDs (though not in hex not decimal))

Play / decode a stream (the syntax is mplayer dvb://[card_number@]channel). For example:
mplayer dvb://"BBC ONE"
('h' and 'k' select previous and next channel).

Save a stream. "The handy thing about digital TV is, it comes in as a digital stream that you can save right away to your harddisk without any changes necessary to it. Therefore, hardly any CPU resources are needed -- just a lot of disk space (a few GB per hour as the stream is MPEG-2 which is not as compressed as, for example, DivX/MPEG-4)". Use either of the following:

For statistics of what's coming in for each channel and PID, either use dvbtraffic (you need tzap working in the background for this) or dvbdate.


The only simple players available to play DVB are gxine, mplayer / mplayer-nogui, xine-ui and vlc. VLC wants 'transponder/multiplex frequency' and 'transponder symbol rate in kHz' which I don't understand; other programs are content with a channels.conf. xine-ui and mplayer / mplayer-nogui don't have a GNOME-compatible interface.


Tune a channel / tune to a frequency:
tzap 'BBC ONE' -r
Leave it running and continue in a different terminal.

Use dvbsnoop for debugging or seeing what's occuring with a DVB device (i.e. tuning works? data coming in? signal strong enough?)

dvbsnoop -s pidscan

dvbsnoop -s bandwidth <PID> (you can use -pd <mode> to alter the verbosity - specify a mode of 0 for no output, 9 for very verbose, the default is 6)

dvbsnoop <PID> - see if you receive something

Video Editing




To do:

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:

DVD writing - writing data files to DVD


Usage - command-line

For most usage of growisofs, follow the instructions as per genisoimage. However the differences from the genisoimage 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.

Copying Audio CDs



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

Extracting / ripping an audio CD to compressed / encoded Ogg Vorbis files

Extracting / ripping an audio CD to compressed lossless FLAC files

Further Information

Copying DVD Movies

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.

DVD disc to hard disk to DVD disc




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.

DVD disc to a compressed format

A suggested ripping strategy:

The time it takes to transcode is directly proportional to the power of the CPU(S) in the computer.



Thoggen encodes on the fly (ripping and transcoding in one go). dvd::rip offers both encoding on the fly or ripping to disc first and then transcoding which it claims doesn't stress the DVD drive as much.

Partitioning Disks




Applications → System Tools → GParted

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 file systems

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



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

FAT32 Filesystems

The Linux kernel includes support for FAT (FAT12, FAT16, FAT32) filesystems.

Mounting manually from the command-line
Mounting manually from within GNOME
Mounting automatically on system startup

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

NTFS Filesystems

Options available for accessing NTFS filesystems

Using the mount capabilities of the kernel driver
Mounting manually from the command-line

mount -t ntfs /dev/hda1 /media/windows-c

Mounting manually from within GNOME


Mounting automatically on system startup

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

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

Using the mount capabilities of the ntfsprogs package
Mounting manually from the command-line

mount -t ntfs-fuse /dev/hda1 /media/windows-c

Mounting manually from within GNOME


Mounting automatically on system startup

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

Using the Linux-NTFS project's ntfsmount (ntfs-fuse), 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-fuse umask=000,auto,nouser,async,ro 1 0

Using the Linux-NTFS project's ntfsmount (ntfs-fuse), 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-fuse umask=000,noauto,user,async,ro 1 0

Using the mount capabilities of the ntfs-3g package
Mounting manually from the command-line

mount -t ntfs-3g /dev/hda1 /media/windows-c

Mounting manually from within GNOME


Mounting automatically on system startup

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

Using ntfs-3g's ntfsmount (ntfs-3g), 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-3g umask=000,auto,nouser,async,ro 1 0

Using ntfs-3g's ntfsmount (ntfs-3g), 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-3g 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 fine, others require some minor configuration to Wine or the application, others will run but have parts of them that don't work, others won't run at all.

A Windows program you're trying to run may not work because supprting DLL files are missing. If you copied the program from a Windows system where it was installed you can get these from %WINDIR%\System, %WINDIR%\System32, %PROGRAMFILES%\Common Files\System(?) where the program will have placed them upon installation. The Wine Application Database (AppDB),, is a useful resource on which such DLL files are required. Copy them to the program's directory (not the Wine directory).


$ winecfg

Registry editor: $ regedit

Wine control panel: $ wine control

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: section.



Before you can use GSynaptics preferences you need to add Option "SHMConfig" "true" to the Driver "synaptics" section of /etc/Xorg/xorg.conf.

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""

IBM Thinkpads

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


Desktop → Administration → 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 Monitor (? 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.

[not sure if this is necessary with pcmciautils and udev] 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>


Devices with Bluetooth include phones, PDAs, keyboards and mice.




Command-Line File Transfer



The version of Bluetooth you're using can make a big difference. For a list of improvements in successive Bluetooth versions (i.e. faster speed, lower power consumption) see To check which version of Bluetooth you're using, look for the 'LMP version':


bluez-gnome provides Desktop → Preferences → Bluetooth Preferences which you use to configure the mode of operation, adapter name and class of device.


Bluetooth service manipulation: /etc/init.d/bluetooth start, /etc/init.d/bluetooth stop and /etc/init.d/bluetooth restart

Set the device name in /etc/bluetooth/hcid.conf.

Check whether the Bluetooth adapter is up and running:
hcitool dev
You should see the adapter device name and MAC address.


There is a list of supported hardware at

If you have trouble connecting look in /var/log/syslog.


Examine your Bluetooth adapter

Using the command-line

Examine all connected adapters:
hciconfig -a.


This isn't currently possible with GNOME, it is planned for inclusion in GNOME Bluetooth Manager.

Scan for remote devices

Using the command-line

Get the MAC address and name of available devices:
hcitool scan


Right-click on the Bluetooth / bluez-gnome applet, choose 'Browse Device' → select the device → 'Connect'

Ping a remote device

Using the command-line

# l2ping <MAC address of remote device>


This isn't currently possible with GNOME, it is planned for inclusion in GNOME Bluetooth Manager which will be included in the gnome-bluetooth package.

Bond / pair with a device

You can bond with devices such as Bluetooth keyboards or phones.

Using the command-line

Connect to the device:
# hcid connect <MAC address of remote device>

Setting a PIN/passkey using the command-line isn't supported so use the GNOME PIN helper, bluez-gnome, whose bonding dialog should appear in the GNOME Notification Area.


Right-click on the Bluetooth / bluez-gnome applet, choose 'Browse Device' → select the device → 'Connect'. The device will prompt you for a PIN. The applet will prompt you for the corresponding PIN.

Service discovery of devices around you

Using the command-line

sdptool browse


This isn't currently possible with GNOME and it doesn't look as though it's planned to be part of the forthcoming GNOME Bluetooth Manager. It is possible with the KDE Bluetooth chat tool and I'm wondering whether to include details here of using that.

Serial connections

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

Using the command-line

Some features require the Bluetooth device to appear as a traditional serial interface.

Create /dev/rfcomm0 bound to port 3 (the dial-up networking port) on a remote device:
# rfcomm bind 0 <MAC address of remote device> 3

Check how the rfcomm ports are setup:

Release /dev/rfcomm0:
# rfcomm release 0


This is planned for inclusion in the forthcoming, as yet unwritten, GNOME Bluetooth Manager.

Transfer files from a device to a computer

Using the command-line

Run obexpushd and it will sit there waiting for files to be sent from the device, which it saves to the current working directory.


This requires the gnome-bluetooth package. Run Applications → Accessories → Bluetooth File Sharing. This will provide a Notification Area applet. Send a file from the device to the computer, the file will be saved to the desktop and a dialog will appear asking whether you want to open or delete the file. You may have to set the mode of operation by right-clicking on the Bluetooth Notification Area applet (the other applet) and choosing 'Visible and connectable for other devices'.
Alternatively you can use the filesystem type approach of browsing for the device from the applet and connecting to it, from where you can transfer files back and forth.

Transfer files from a computer to a device

Using the command-line

ussp-push <MAC address or name of remote device>@10 <local filename> <filename to give it on remote device> (assumes the OBEX File Transfer channel is 10, which you can check with sdptool browse)


This requires gnome-bluetooth and nautilus-sendto packages. You right-click on a file and choose 'Send To...' and are able to choose Bluetooth from the 'Send as...' list and the device from the 'Send to...' list.
Alternatively you can use the filesystem type approach of browsing for the device from the applet and connecting to it, from where you can transfer files back and forth.

Internet access through a GPRS or 3G / W-CDMA phone for a computer

See Internet access through a GPRS or 3G / W-CDMA phone from a computer over Bluetooth

Internet access through a computer for a phone


Linux Unwired by Roger Weeks, Edd Dumbill, Brian Jepson:

Connect a Bluetooth keyboard

Initiate the process from the computer.

Using the command-line

(the Debian documentation mentions loads of patches but i didn't need them to get it working)

# hidd --connect <MAC address of remote device>

Though you can provide the pin using the command-line, the documentation warns against it, so use the GNOME PIN helper bluez-gnome. The bonding dialog appears in the GNOME Notification Area, you type the key in there, then type it on the Bluetooth keyboard and press [Enter].


I Don't see how it can be initiated from the computer using GNOME, without the proposed GNOME Bluetooth Manager which isn't yet available, so initiate it from the keyboard.

Connect a Bluetooth mouse

Initiate this from the computer.

Using the command-line

# hidd --connect <MAC address of remote device>


This isn't currently possible with GNOME, it is planned for inclusion in GNOME Bluetooth Manager which will be included in the gnome-bluetooth package.

Further Information

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 Device Driver Modules, Firmware 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 Linux kernel device driver module that you need to install; Or they may only be available in Debian as source code for Linux kernel device driver 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?).

PCMCIA cards may need to be allowed a bit of time to register before they can be used.

Check if the device is already usable

If using NetworkManager (in GNOME)

You need to be in the group 'netdev' otherwise it won't appear in the GNOME Notification Area.

To get the best out of NetworkManager in GNOME, you need to disable all other means of configuring those connections / adapters you want NetworkManager to manage (wired and wireless, but not yet VPNs)

You'll need to restart NetworkManager after making these changes by right-clicking on the applet and disabling, then enabling, 'Enable Networking'.
Now NetworkManager will sense whether you want to use wired or wireless connections and remember wireless keys.

If using GNOME's built-in network administration

Desktop → 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)'.

If 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


Add @include common-pamkeyring at the end of /etc/pam.d/gdm so that when logging in using GDM this module will be used. You can similarly do so in corresponding config files for other services you use for logging in.

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.

Wireless Networking (Wi-Fi / WiFi) - auditing



For Kismet to start up you need to specify the wireless network adapter driver and its device name in /etc/kismet/kismet.conf, i.e. 'source=ipw2200,eth2,centrino' or 'source=madwifing_ag,wifi0,linksys'. The syntax for this is described in the 'Capture Sources' section of /usr/share/doc/kismet/README.gz.



You need to run kismet as root.

Useful Commands
Capturing packets

If you have a system with a single partition for the Debian system and another for home directories (rather than a separate /var partition or both on a single partition), you should take care not to allow Kismet logs to use up all the available disk space on the system partition by its logging to /var.


macchanger -a -A ath0

Further Information

aircrack-ng has a lot of documentation at

Internet access through a GPRS or 3G / W-CDMA phone from a computer over Bluetooth

This requires working Bluetooth packages and Bluetooth adapter, see the Bluetooth section.



To use pon ordinary users need to be a member of the group dip.

Create /etc/ppp/peers/gprs-or-3g with the following contents:

noauth			# Do not require the peer to authenticate itself. This option is privileged.
connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs-or-3g-connect"
disconnect "/usr/sbin/chat -v -f /etc/chatscripts/gprs-or-3g-disconnect"
silent			# "needed this to remove problems with loopback on connecting"
debug				# Log to /var/log/messages
/dev/rfcomm0	# The device specified with 'rfcomm bind' or in /etc/bluetooth/rfcomm.conf
115200			# The speed at which to connect, in kilobaud
defaultroute	# Use this network as the default route, written into the routing table
usepeerdns		# Use the DNS servers from the remote network

See man pppd for help with these commands.

Create /etc/chatscripts/gprs-or-3g-connect with the following contents:

SAY		'Starting GPRS connect script\n'

# Get the modem's attention and reset it:
''              'ATZ'

# ? TIMEOUT         12

# E0=No echo; V1=English result codes
OK              ATE01V1

# Here you can set the Access Point Name (APN) or leave it commented
# out and use the phone's default GPRS or 3G / W-CDMA access point.
# Or you could create separate scripts each specific to a provider. 
# SAY	'Setting Access Point Name...\n'
# OK	'AT+CGDCONT=1,"IP","<operator APN>"'
# OK	'AT+CGDCONT=1,"IP","internet"'
# OK	'AT+CGDCONT=1,"IP","orangeinternet"'
# OK	'AT+CGDCONT=1,"IP",""'

# Dial. If no specific access point is defined above this will call the default
# GPRS or 3G / W-CDMA access point.
SAY		'Dialling...\n'

# The '1' in here is the CID number of the GPRS profile:
OK              ATD*99***1#

Create /etc/chatscripts/gprs-or-3g-disconnect with the following contents:

SAY		"\nSending break to the modem\n"	
""		"\K"		
""		"\K"		
""		"\K"		
""		"+++ATH"	
""		"+++ATH"	
""		"+++ATH"	
SAY		"\nDisconnected\n"

Get the MAC address of the phone:
hcitool scan

Bond / pair with the phone. Connect to the phone:
# hcid connect <MAC address of remote device>
Setting a PIN/passkey using the command-line isn't supported so use the GNOME PIN helper bluez-gnome. The bonding dialog appears in the GNOME Notification Area.

Find the phone's Dial-Up Networking channel:
sdptool browse <MAC address of phone>

Setup the port to the phone. You can do this one of three ways:


Connect to the Internet:
pon gprs-or-3g

The phone asks for confirmation...

For troubleshooting you can see what takes place using:
tail -f /var/log/messages

Disconnect from the Internet:
poff gprs-or-3g

Some points to note about UK Internet access using a mobile phone

Linux kernel updates


The linux-image-<architecture> package will install the most recent 2.6 series kernel available for that particular architecture and keep it updated when new versions are available. '486', '686', '686-bigmem' and 'k7' architectures are for single and multiprocessor (AKA SMP) 32-bit x86 (generically known as PC, i386, IA32, IA-32 or x86-32) processors. The 'amd64' architecture is for single and multiprocessor (AKA SMP) 64-bit Intel and AMD PC processors (generically known as x86-64 or x64). Debian includes kernels for many other architectures but I focus on these. The following describes how installing the generic kernel package will bring in the specific kernel package.


If you install any of these kernels they will be installed and your old kernel version retained with the new kernel set as the default in the GRUB boot menu. You can find out which CPU you have in your system with the command cat /proc/cpuinfo, under 'model name'.


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:

Debian Linux Kernel Handbook:

Portable audio players

Some devices work as USB Mass Storage, like the small flash based players, others require a special driver. Some devices can instead run the free Rockbox software rather than their native software.

Apple iPod (those running Apple software rather than Rockbox)


"I just wish the various different writers of iPod libraries could get together make One iPod Library To Rule Them All instead of 4 different ones with their own little issues and problems."


Connect an iPod and it auto mounts to /media/<name>, allowing you to read the files, whether its formatted with HFS+ (AKA 'Mac-iPod') or FAT32. Rhythmbox will automatically recognise it and catalogue its files. You can copy files off an iPod with gtkpod but it doesn't look as though you can with Rhythmbox.

gtkpod (Applications → Sound & Video → gtkpod) expects to find the iPod at /mnt/ipod but the iPod will instead be at /media/<name> so you need to instead start it with gtkpod --mountpoint /media/<name> or use the IPOD_MOUNTPOINT environment variable.
Then choose 'Load iPod(s)' → "Could not find iPod directory structure at '/mnt/ipod' If you are sure that the iPod is properly mounted at '/mnt/ipod', gtkpod can create the directory structure for you. Do you want to create the directory structure now?" → choose yes → iPod mountpoint → /media/<name>.
You'll also be asked 'Model Select or enter your model'. You'll need to know the generation and model name. You're supposed to be able to read this from the directory on the iPod /iPod_Control/Device/Sysinfo but I found this was blank. Alternatievly there's a model number on the rear. i.e. 'Model No: A1136' whch is a fifth generation 30GB iPod Video but this wasn't in gtkpod's list so I chose '30GB Video Black XA146' fro it seemed to work ok.

You can copy files off an iPod with gtkpod, despite the package description saying you can only copy to it. Right-click on music and choose 'Copy Tracks to Filesystem'. The default 'Filename Format:' didn't work out well so I created this one: %o.wav;%a/%A/%T - %t.mp3;%a/%A/%T - %t.m4a;%a/%A/%T - %t.aif which creates a sub-directory for the artist and for the album, I think only if the ID3 tags reflect this.

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.

One option...

Another option - is this a hotplug variant or just a later version?...

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



from the command-line
from within GNOME

Use Applications → Graphics → gtkam (I haven't successfully used it to download files though)

Creative Nomad players


iRiver (those running iRiver software rather than Rockbox)


OpenVPN client

For a full description of setting up and using a VPN server see our 'Remote Access' document at



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

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

Proprietary Software (Internet Explorer, Skype, etcetera)

To-do: a warning

Files under the directory /usr/local/ are not under the control of the Debian package management system so are safe from being overwritten when the system software is updated. This is where you install non-Debian software. Use the different sections there like so:
source code: /usr/local/src/<package name>
binaries: /usr/local/bin/<package name>
libraries: /usr/local/lib/<package name>
configuration files: /usr/local/etc/<package name>

Microsoft Internet Explorer (MSIE, IE)

Though Debian's Mozilla Firefox / Icedove is a far better choice of browser you might still want Internet Explorer (IE) for example to view specific web sites that won't allow access from other web browsers or for testing during web site development.

This IE seems to be a stand-alone version. It uses Wine but Wine doesn't seem to be able to use it, at least as far as I can deduce so far. If you have Windows software installers that require IE then you should possibly install another IE into Wine manually.



There isn't a package you can install using package management software. Instead you use IEs 4 Linux (IEs4Linux) which you download from and run using:
tar zxvf ies4linux-latest.tar.gz
cd ies4linux-*

It will download Internet Explorer(s) from Microsoft and install into your home directory (or where ever you ran the installer from) and create a desktop shortcut. This doesn't install for all users of the system. You can have Internet Explorer versions 5.0, 5.5 and/or 6.0 and in the future 7.0; and Flash Player version 9.

Further Information




Add this Skype repository, for 32-bit x86 / i386 architectures only, to your sources list (/etc/apt/sources.list) (rather than downloading manually from
deb stable non-free
You can do this using Desktop → Administration → Software Properties or with this command:
# echo "deb stable non-free" >> /etc/apt/sources.list

The Skype repository provides the latest version of Skype whether that's a stable or sometimes but not always the latest beta release which isn't ideal on Stable but is OK on Testing.


Skype wakes the CPU up too often and so consumes more power than most applications:

Further Information


Skype bug tracker:

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 '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, if you have dwww installed, 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>.

strace can be used to collect information about what a program does:
strace -o <filename to save output to> <command>