...making Linux just a little more fun! | Doing Things in GNU/Linux By Raj Shekhar, Anirban Biswas, Jason P Barto and John Murray

> 1. Chatting / Instant Messaging with Linux |  |
> 2. Printing |  |
> 3. Installing and Managing Software with RPM |  |
> 4. Playing and Recording Music |  |
> 5. Linux in the Office |  |
> 6. Gaming With Linux |  |
> 7. The Post-Install Tune-up |  |
> 8. End Note |  |

# 1. Chatting / Instant Messaging with Linux

## 1.1 History of chatting

Many normal users think that GNU/Linux is not for them, but only for geeks. One reason for this is they believe they can not do the basic things like chatting under GNU/Linux. They believe that there are no Instant Messenger clients for Yahoo, MSN, and ICQ in GNU/Linux, but this is absolutely wrong - chatting was actually first implemented in UNIX. (Linux is a UNIX like free/open operating system).

`talk` was the first chatting program developed from UNIX long ago when there was no MS trying to capture the Internet. The computing world was a free land then, and you could share any program with any one, you could change them too to suit your needs - much like what Free Software is trying to do. `talk` is still available with UNIX & GNU/Linux .

From `talk`, other chatting concepts were developed. IRC was the first to be developed,then other companies came and hence ICQ, Yahoo, MSN, Jabber, AIM etc. chat systems were developed.

I shall try to touch on each of the chat systems here.

## 1.2 talk

It is the most basic chat system but still popular in LAN's. If you are in a college or office and can access only a UNIX or Linux terminal then you can chat with your friends. First of all the talk server daemon must running.

To chat with your friend then all you have to do the following
`[anirban@anirban anirban]$ talk <username>@host <tty>`
i.e. if the user name is raj (it will the same as the login name to the system) and his host computer is www.anyhost.com then it will be
`[anirban@anirban anirban]$ talk raj@www.anyhost.com`

You may be wondering what `tty` is? Suppose your friend opened many terminals - the terminal in which you want to send the message is specified by the tty number. Numbers start from 0 and only integers are allowed.

You can do the above with `write` too.
`[anirban@anirban anirban]$ write <username@host> <tty>`

If you want not to receive any chat invitition or any chatting then you have to give the command.
`[anirban@anirban anirban]$ mesg n`
to remove the blocking you have to do
`[anirban@anirban anirban]$ mesg y`

If you a GUI lover and a heavy Yahoo or MSN chatter then you may not like this kind of chatting, but for many of us who like GNU/Linux this old system is still gold.

## 1.3 IRC or Internet Relay Chat

After `talk` came IRC and it is still popular. I think that if you really want a high class chatting experience without the flooding or other bad stuff of Yahoo and MSN, then IRC is the thing for you. Also, there are many rooms (known as channels in IRC) from where you can get really good help on GNU/Linux, C/C++ programming, maintaining your Linux box and much more. (As an aside, in my personal experience I was a Yahoo chatter and did not get any thing more than flooding and 4 or 5 guys running for a girl in the room. But from IRC I received really good help when I was stuck. IRC can really be a great source of help.)

### 1.3.1 Basic concept of IRC

IRC is a little bit different from Yahoo or MSN chat since IRC is not owned by any company. It is free/open like GNU/Linux and generally run by volunteers.

The main difference is that you do not have to sign up to get a ID or password. So what do you do instead? Choose a nickname and a host (IRC server) to connect to. Since it is not run by a single company you have to know the host address, like you have to know the URL to visit a page on Internet. You can get the addresses of different hosts from the internet and also to which topic it is dedicated; for example, irc.openprojects.net is dedicated to the betterment of open source projects and open source developers.

So you have to provide your nickname and the host you want to connect to. If the nickname you pick is already taken then you'll have to provide another nickname.

IRC newbies should check out the IRC Primer before using IRC for the first time.

### 1.3.2 Software for IRC

There are many IRC chat applications available but I think `Xchat` is the best. Most distributions provide it with their installation CDs and it is often included in default installations. If it isn't already installed, fear not; you can find it in the installation CDs or download it from http://www.xchat.org. You will generally find it in RPM format so installation will not be difficult.

### 1.3.3 Configuring Xchat

After installation type `xchat` in a terminal or click the xchat icon (you will find it in ``Main Menu > Internet > Chat'`).

The first window of Xchat will appear. Provide the nickname you would like. You can provide more than one. In case a nickname is already taken in a room xchat will use the other nickname you provided, else it will pick the first nickname in the list. You also can provide your real name and as which user you want to use it - (generally you do not have to provide all these; the system guesses it for you from your system login name and real name).

Now choose a host from the list of hosts and double click it or click on ``Connect'` at the bottom. A new window will open with some text flowing in it. It will take a little time to connect, then after connecting it will show the rules you should follow to chat in this host. Since IRC generally is a volunteer effort by good-at-heart people and not by any company, please try to follow it or else you may get banned. Maintainers of IRC chat rooms are very strict about the rules. (That is why chatting experience is much better here than yahoo or MSN).

Now you will see a single line text box where you can write both what you want to say, and also commands to navigate. Commands all start with a `/` (ie. slash). To get the list of rooms (or channels) in the host type `/list` . You will see all the rooms, choose the one which suits you and then type `/join #<roomname>` and then click ``Enter'`. Please note that you have to always give the number sign (`#`) before any room name.

Now you will enter that room and start chatting. At the extreme right there will be the list of all users/chatters in that room; selecting any one will get info about him /her. You will find many buttons at the right side of your chat window, by selecting a user and clicking the buttons you can ban or block a user, get info about him/her, invite him/her in a personal chat or even transfer files in IRC.

So I think you will now be able to chat in IRC. Some day you may even meet me in IRC. I generally live in the host irc.openprojects.net and in the room linux (you have to give a number sign ie. # before joining ie. `/join #linux`).

## 1.4 Instant Messaging

### 1.4.1 ICQ

There are several ICQ chat clients in GNU/Linux, and Licq is one of the most popular. You will find it inside the internet or network sections of the main menu i.e. KDE main menu ( so ``Main Menu > Internet/Networking > Instant messenger'`) or just type `licq` in a terminal. After starting for the first time it will want you to register to their server to get a ID and password. Then you can login with that ID and password as you do with most of the Window's versions of ICQ clients.

### 1.4.2 Yahoo!

Yahoo provides its own yahoo messenger for Linux and it is similar to the windows version except that you may find some features missing. To get more details go to yahoo.

Since it is similar to the windows version you will find ``Add Friends, Your Status, Ban'` etc buttons in their usual places, generally as part of a menu at the top of Yahoo Messenger. Currently you can send files, invite people to group chat, and get email notifications.

### 1.4.3 AIM

Kit is the AIM client for Linux (KDE). You will find it in the main menu under network / internet or just type ``kit'` in a terminal. At the first startup it will ask you to create a profile and if you do not have a account in AOL it will ask you to create one by going to their site. The current version of Netscape also has a built-in AIM client.

## 1.5 All-In-One IM Clients

### 1.5.1 Everybuddy

Do you use or need several different instant messaging clients? Everybuddy is an Open Source IM client that supports AIM, ICQ, MSN, Yahoo!, and Jabber chat, as well as having some file transfer capabilities. In other words, a single Everybuddy client can take the place of several single-purpose clients. It is included (and often installed by default) with some distros, or you can download it from the Everybuddy homepage.

### 1.5.2 GAIM

GAIM is another all-in-one client resembling AIM that works with AIM, ICQ, MSN, Yahoo! and more. If you don't have it already installed, check out your installation CDs or go to the GAIM website.

# 2. Printing

## 2.1 Which Printer to Use

First check to see if your printer is supported by Linux. Most Epson, HP, and Canon printers will be supported, though there are some cheap printers which have less hardware hence need special software to simulate the hardware. This special software isn't generally available for Linux, so you cannot use these printers. But I would not recommend you buy these types of printer anyway since their performance is less than normal printers.

You can find the list of printers that are supported by GNU/linux at linuxprinting.org. I have used RH 7.3 and a HP 810c Printer here as an example.

## 2.2 Connecting the Printer to the Computer

After choosing the printer, check how it connects to the computer; that is which interface it uses, eg.USB (universal serial bus) or parallel port. Most printers use parallel port, but modern printers generally have both options. My printer (HP 810c) can be connected to the computer by parallel port or USB - I chose the parallel port interface. After connecting the printer comes the software part.

## 2.3 Installing the Printer

A standard installation of Red Hat (any version from 6.1) will contain the required software for installing the printer, but old versions of the software can be difficult to configure. Here I will focus on RH 7.1 to Rh 7.3 using KDE, though it can also be done from GNOME.

### 2.3.1 Configuration Program

Now to install printer do the following:

1. In KDE click the ``kontrol panel'` on the desktop and then click ``Printer Configuration'`.
2. Click ``New'` and a printer configuration wizard will appear (In RH 7.1 and 7.2 a wizard will not appear but a new window will appear; however, the procedure is almost the same).
3. Next you have to specify the kind of printer that you want to add, that is ``Network Printer'` or ``local Printer'`. Choose local printer since the printer is attached to the machine from where you are configuring it. You have to also specify a name to identify the printer. A name must only have alphabet characters, numbers, "_" (i.e underscore ) and "-"(i.e hyphen). Now click ``New'`.
4. If it is a normal printer the interface it uses will be automatically detected. If not, specify it. For example if it is on the first parallel port it will be `/dev/lp0`, if it is in the second parallel port it will be `/dev/lp1` and so on. Now click ``Next'`.
5. Next choose the driver for your printer from the given list, you will find drivers for most normal printers. Different brands of printers (like HP, Canon, Epson, etc) are listed; choose the appropriate brand and then expand it by clicking the ``arrow'` at the left side of the brand name or double clicking the brand name.
6. Choose your printer from the list and expand it to find the driver. Now, you may find more than one driver has been created for your printer by different people. Generally choose the driver supported by your brand, eg. the driver named "hpijs" is supported by HP and although other drivers also work "hpijs" works better.
7. Next click ``Finish'` and you will be back to the main window. Now click ``Apply'` and then choose ``Save Changes'` from File in the main menu. ( i.e ``File > Save Changes'`).
8. Now choose ``Restart lpd'` from File in the main menu (i.e ``File > Restart lpd'`). It will restart the printer daemon or process and your system will be ready for printing.
9. You can test if the installation of printer was successful by selecting ``test'` in the main menu.

If you have trouble setting up the printer, you can use The Linux Printing HOWTO for help in troubleshooting.

# 3. Installing and Managing Software with RPM

## 3.1 What is RPM?

RPM stands for Red Hat Package Manager, and is an easy to use and widely adopted tool for installing, deleting, upgrading, querying and building software packages. There are other systems in use (Debian's DEB for example), though RPM is by far the most popular, and is what you'll get with Red Hat, Mandrake, SuSE and some others.

## 3.2 What is a Software Package?

Under GNU/Linux, programs are often distributed as single files known as RPM packages. These packages contain the actual program files, its documentation or manual pages, a summary of what the program does, menu entries and icons, plus information on where each file in the package should be installed. The package also contains information on any other files requires to run the program (dependencies), disk space required and so on. It's not unusual for a program to consist of a hundred or more files, so you can see that packaging them all into a single RPM file greatly simplifies the tasks of adding or removing programs. When you install an RPM package, it is uncompressed and broken down into its individual files which are then put into their correct places. RPM also checks to see whether other files necessary to run the new package (dependencies) are present. Another feature of RPM is the building and maintenance of a database of all packages installed on your computer. This means that you can quickly check to see which packages are installed, the files belonging to a particular package, or the package that provides a particular file.

## 3.3 Using RPM

You can use RPM from the command line, or if you prefer point'n'click, there are several graphical tools available. KDE has a particularly good one named kpackage; there are similar apps for users of other desktop environments, and distribution builders such as Mandrake have their own RPM front ends. I tend to use kpackage for removing un-needed packages to free up disk space, and the command line for everything else; but it doesn't really matter which tool you use. There are significant advantages to becoming familiar with using RPM from the command line; firstly it will be available on any RPM based system you may encounter, regardless of the desktop environment installed, plus it allows you to manage packages on machines that can't or don't run X. The ability to use wild cards (eg.*) to install multiple packages from a group at once is another feature of the command line - for example `rpm -ivh mysql*`

Just remember that generally speaking, you'll need to be running as root to install, upgrade or delete packages. However any user can run queries.

## 3.4 Installing Packages

In all the examples below, we'll use the Mozilla web browser package as a sample. To install it, first navigate into the directory holding the package, either from the command line or a graphical file manager. This directory might be one of your Linux installation CDs, or your home folder if you've downloaded the package. Using the command line, you would type:
`rpm -ivh mozilla-0.9.8-10mdk.i586.rpm` (your version of Mozilla might be different..)
Note that you only need to type in the complete file name when you are working with a package that is not yet installed, otherwise the basic package name (in this case "mozilla") is enough. And don't forget the tab key to auto-complete the long file names. If you prefer graphical tools, clicking on the RPM file in most file managers (Konqueror for example) will open the appropriate tool, or you can right click and use the "Open With" dialog box. It's then just a matter of clicking the ``Install'` button.

## 3.5 Updating Packages

Updating an existing program with a later version is done in almost exactly the same way as installing. From the command line:
`rpm-Uvh mozilla-0.9.8-10mdk.i586.rpm` (note the uppercase "U")
Or click the ``Update'` button from kpackage or similar tools.

## 3.6 Downgrading Packages

What if you upgrade, and then find that you preferred the older version? You can use the ``"--oldpackage"'` option from the command line like this:
`rpm -Uvh --oldpackage mozilla-0.9.8-10mdk.i586.rpm`.

## 3.7 Uninstalling Packages

To uninstall from the command line:
`rpm -e mozilla`(the complete package name isn't required)

Or start your graphical tool, either from the menu or a terminal. You'll see a list of all the installed packages. Click on the package you want to remove, then click the ``Uninstall'` button. Note that if there are other packages installed that require files from the one you are deleting, a warning will appear and the uninstall won't go ahead. You can override this by using
`rpm -e --nodeps mozilla` (command line),
or selecting "Ignore Dependencies" (GUI tool), but be aware that this will break the other programs.

## 3.8 Querying packages

Listing all installed packages is easy. From the command line type:
`rpm -qa`
If the list is too big to view you can pipe it through less like this:
`rpm -qa | less`
Graphical tools will usually show the list of installed packages on start up.

### 3.8.1 Listing all of the files installed by a package

This is done with the `rpm -ql` command. Using mozilla again as an example we would type:
`rpm -ql mozilla`
Under a GUI tool just select the package and then click on the " File List" (or equivalent) button. Listing all of the files supplied by a package not yet installed - is done with the `rpm -qpl` command. Requires the complete file name.
Eg.`rpm -qpl mozilla-0.9.8-10mdk.i586.rpm`.

### 3.8.2 Listing a description of an installed package

can be performed with the `rpm -qi` command. For example:
`rpm -qi mozilla`.
Using a GUI tool, just click on the desired package. To see a description and other information of an package not yet installed, use the `rpm -qpi` command. You'll need to use the complete file name for this one. For example:
`rpm -qpi mozilla-0.9.8-10mdk.i586.rpm`.
With a GUI, select the package, or just click on the file from within your file manager (eg. Konqueror)

### 3.8.3 To find the package to which a file belongs

To find the package to which a file belongs is done with the `rpm -q --whatprovides` command. Example:
`rpm -q --whatprovides/usr/lib/mozilla/xpicleanup`

### 3.8.4 To list all the packages a package depends on

Use `rpm -qR` like this:
`rpm -qR -mozilla`
(For a package not yet installed use `rpm -qpR`, with the full file name )

## 3.9 Resolving Dependency Problems

The most common problem encountered when installing software is an unsatisfied dependency. You might be already familiar with this problem if you've installed new software under Windows and then found it refuses to run, with a "missing ***DLL" error message.

GNU/Linux is subject to the same problems, except that RPM will advise you of the problem before the program is installed. Many problems can be avoided when you install Linux - selecting Gnome and KDE for installation will help, even if you don't intend to run them, as many other programs use the same libraries.

So what do you do when RPM complains that a package can't be installed, because of missing packages or files. Write down the missing package/file names, and check your installation CD-ROMs for packages with similar names to the ones required. You can use the `rpm-qpl` command to view the files supplied by a not-yet-installed package. Often it is just a matter of installing these packages to resolve the problem. Sometimes, though, it leads to even more dependencies, so it can be a rather lengthy process.

## 3.10 Using RPMFind and RPMBone

There is another extremely useful tool for finding files and packages, and that's the RPMFind website. Type the name of the needed file or package into the box on the main page and click on the search button; you'll then be presented with some relevant information and links to the package. Often you'll already have the package on your Linux CDROM - using the information from RPMFind you'll know which one to look for. RPMFind can provide a list of dependencies for a package; the file names in this list link back to their parent package. Usually, there is also a link to the package's home site. RPMBone is another site that's useful for finding and downloading RPM packages, and is somewhat similar to RPMFind. RPMBone has a more flexible search function; you can narrow down your search to only give results for a certain distribution or architecture for example. It also provides links to a huge number of ftp servers for downloading. If you need to find a package containing a particular file to satisfy a dependency, however, RPMFind should be your first stop.

## 3.11 Circular Dependencies

Occasionally, you might come across a circular dependency. This is when package A won't install because package B is missing, but when you try to install package B, RPM complains that package A is missing. What you do here is use the ``--nodeps'` option. For example:
`rpm -ivh --nodeps mozilla-0.9.8-10mdk.i586.rpm`.
If you are using a GUI tool, click on the "Ignore Dependencies" button.

## 3.12 Library Version Problems

Sometimes a package will refuse to install because it requires a library file version later than the one already installed. This is easily fixed by upgrading the package to which the file belongs. While library files are usually backwards compatible, occasionally a package will refuse to install because a certain version of a file is missing, even though a later version is present. While you could downgrade the library package, this might well break other programs. Try creating a symbolic link with the name of the older library file that points to the existing newer version. If for example the package you are trying to install insists on having foo.so.3, and you already have foo.so.4 installed in `/usr/lib`, do this (as root): `ln -s /usr/lib/foo.so.3 /usr/lib/foo.so.4`

## 3.13 Automatic Dependency Resolution Tools

Automatic Dependency Resolution Tools are available with some distributions. Mandrake for example has ``urpmi'`, RedHat has ``up2date'`,while Ximian has RedCarpet. There are also tools like apt4rpm. These can automatically download and install required packages for you. See your distributions documentation or the relevant website for details.

## 3.14 Miscellaneous

### 3.14.1 RPM Version Incompatibilities

You probably won't have to worry about this unless your Linux installation is fairly old. Earlier Linux distributions were packaged with version 3.x of RPM, and are unable to handle the later 4.x series of packages. The exception to this seems to be version 3.05, you could update RPM to this version, or just replace your distribution with something newer. The RPM 4.x series is backwards compatible with the older series.

### 3.14.2 Midnight Commander

Occasionally you might want to copy files from an RPM package without actually installing it. You can do this with a file manager known as mc (for Midnight Commander). Despite being somewhat ugly, it is extremely capable. It is supplied (though not always installed by default) with most distributions, and can be started from a terminal window by typing `mc`. You can then navigate around the package as if it was a normal folder, and copy individual files from it.

### 3.14.3 Learning More

This article only covers the bare basics of RPM, if you'd like to learn more you could read the RPM manual page (type `man rpm`), or follow the links below:
RPM One Liners - A concise guide by Brian Jones, worth downloading and printing for reference.
The RPM HOWTO - The "official" HOWTO at the Linux Documentation Project.
Maximum RPM - An extremely thorough guide to just about anything that can be done with RPM. (All these resources were used in the writing of this article)

# 4. Playing and Recording Music

It's easy to enjoy music with Linux, whether you are playing an audio CD, an mp3 or OGG files you recorded yourself onto CDR or hard disk. You can download tracks, or copy them from your own audio cds. While there are plenty of tools for audio work under Linux in both command line and GUI form, I'll be mainly concentrating on the command line as these tools are available on nearly all Linux distributions. Familiarity with the command line tools will also make configuring GUI programs much easier. I'll assume you already have a sound card installed and working.

*Warning*
Breach of copyright is taken very seriously in most parts of the world - this article in no way encourages users to break the law.

## 4.1 The Basics

Since much of this story involves CDs, perhaps we should start with a brief look at both audio and data CDs.

Ordinary audio CDs like the ones you'd play in your home stereo differ from data CDs in that the music is recorded onto the disk as raw data, that is, there is no file system on the disk. That's why if you put an ordinary audio CD into your CD drive and try to read the contents in a file manager, you won't find anything. Your computer is looking for a file system where there is none. An audio CD doesn't need to be mounted to be read or burnt - unlike data disks.

Data CDs on the other hand use a file system to organize the way in which the data is written to and read from the disk, similar to the file system on a hard disk. Music files in formats such as .mp3, wav, or ogg are written onto data CDs using a file system just like any other CDROM. These CDs can be opened in a file manager or from the command line, and the music played using the appropriate program.

## 4.2 Playing Audio Cds

There are several GUI tools available for playing audio CDs. For example Gnome has `gtcd`, KDE has `kscd`, and `xmms` can also play CDs if you have the audio CD plugin enabled. These can be started from the Multimedia section of your menu. From the command line you could try the `cdplay` program, though it's not very intuitive. Read the manual page (`man cdplay`) to find out more. Or you can simply use the ``play/skip/stop'` buttons on your CD drive to play audio CDs.

## 4.3 Playing MP3 Files

The mp3 format is a hugely popular way of storing and sharing music. One reason for its popularity is its compact size compared to other formats or conventional audio CDs. A typical mp3 file is usually only about a tenth of the size of the same file in .wav or audio CD form. This means you can fit the equivalent of ten audio CDs on a single CD using the mp3 format. Other advantages include the reduction in space used when storing music on a hard disk, and the smaller file size also makes transferring files over a network much more practical. The disadvantage is that mp3 CDs can't be played on most normal CD players (although mp3 compatibility is starting to appear on some portable Walkman type players), so you can only play them on your computer. The most popular player for Linux is probably `xmms`, an excellent clone of the Windows Winamp player.

## 4.4 Using XMMS

Xmms (X MultiMedia System) is a widely used multi purpose sound file player that is included with most common distributions. It's mostly used for playing mp3 files, but it can do much more than that. It is also capable of playing wav files, ogg-vorbis files (an open source alternative to mp3), streaming audio etc. Starting xmms can be done from the menus (look under "Sound" or "Multimedia"), or from a command line just type `xmms`. The interface is much like that of a CD or tape player, with buttons and sliders to control starting, stopping, pausing. skip, repeat, volume, balance and so on. It also includes an equalizer function (the ``eq'` button) and allows you to set up play lists. To choose a track to play, hit the `L` key or press the eject `("^")` button. This brings up a window allowing you navigate to the folder holding your music files. Once there, you can select a track or tracks to play, or you can choose to play every file in the folder. As well as the audio options, xmms also has visual options, and different skins can be selected to change the appearance of the player. It can even use Windows Winamp skins. Despite the multitude of options, xmms is exceptionally easy to use. If you want to explore its options and capabilities, click on the small `O` on the left hand side of the display.

## 4.5 Recording (or ripping) Tracks from Audio CDs

There are several tools for recording audio CDs to hard disk. You can record a single track, selected tracks or the entire CD at once. The music will be converted to a file format that can be read by your computer (usually .wav) as it is recorded. While there are both command line and graphical tools for the job, my favorite is the command line program `cdparanoia`. If you prefer GUI tools, you might like to check out grip. One of the things I particularly like about cdparanoia is the way it can correct jitters or skips on marked or scratched disks. Here are some examples of how to record tracks from an audio CD using cdparanoia:
To record a single track type:

`cdparanoia n`

`n` specifies the track number to record. By default the track will be recorded to a file named cdda.wav. If cdda.wav already exists it will be overwritten, so be careful if you are recording several tracks! You can specify your own file name like this:

`cdparanoia n filename.wav`
To record the entire CD type: `cdparanoia -B`

The -B in the above command simply ensures that the tracks are put into separate files (track1.wav, track2.wav etc.). Cdparanoia has many more options and an easy to understand manual page; type `man cdparanoia` to read it.

## 4.6 Converting .wav files to mp3

If you intend to burn files to an audio CD, you should leave them in .wav format. On the other hand, if you want to play them from your hard drive, or burn a data CD that you'll play from your computer, you'll probably want to convert them to the mp3 format to save space. One of the most popular tools for this is bladeenc. To convert a .wav file into a .mp3 use this command:

`bladeenc filename.wav`

This will produce a file with the same name as the source file, but with the .mp3 suffix. If you want to specify a destination filename you can add it to the end like this:

`bladeenc filename.wav filename.mp3`

By default, bladeenc will encode the file at 128kbit/sec, this is the most commonly used bitrate and results in a very compact file of reasonable quality. Higher rates can be specified, giving a better sound quality at the expense of a slightly bigger file size, though it's hard to detect any improvement in sound quality using sampling rates above 160kbits/sec. To convert a file at 160kbits/sec use:

`bladeenc -160 filename.wav`

## 4.7 The Ogg-Vorbis Format

Ogg -Vorbis is a completely free and open alternative to the mp3 format. The sound quality is at least as good as mp3, and ogg files can be played on players such as xmms. You'll need the vorbis-toolspackage (check your distributions installation CDs) to convert .wav files to .ogg. Converting is easy:

`oggenc filename.wav`

As with bladeenc, the sampling rate (and sound quality) can be specified. This is done by using the following command:

`oggenc -q n filename.wav` (where n is the quality level)

The default level is 3, but can be any number between 1 and 10. Level 5 seems to be roughly equivalent to an mp3 encoded at 160kbits/sec.

## 4.8 Converting .mp3 files into .wav format

Audio CDs are usually burned from a collection of .wav or .cdr files - you can't directly burn mp3s to an audio cd unless you convert them to one of these formats. The mpg123 program can do this for you and is often installed by default with many distributions. To convert an .mp3 to a .wav, type:

`mpg123 -w filename.wav filename.mp3` (note - the destination filename comes first)

Note also that there is some slight loss of sound quality when a .wav file is converted to mp3 format, and this isn't regained when converting back to .wav - so if possible, you should try to use .wav files that have been ripped from an audio CD rather than converting back from mp3s.

## 4.9 To Normalize a group of .wav files

Creating an audio CD using tracks from different sources can lead to variations in volume amongst the tracks. By using a program named normalize, you can equalize the volume level of a group of files. You'd normally do this to a group of .wav files before burning them to CD. Normalize is a command line tool; to equalize the volume of all the .wav files in a folder type:

`normalize -m /path/to/files/*.wav`

## 4.10 Recording (or burning) an Audio CD

I'll assume that you have a CDR or CDRW drive installed and configured already - if you don't, see the links section at the end of this article for more information on set-up details. I'll also assume that you'll be using cdrecord to burn your disks - it's the most popular tool for this and is also what's used by most graphical front-ends like XCDRoast etc. Your files will need to be in .wav or .cdr format; most likely they will be .wavs. Put all the files you want to burn into a separate folder to simplify the burning process, and make sure that they will fit onto the disk (you can check by changing into the folder and running the `du` command). Now it's just a matter of typing this command:
`cdrecord -v speed=4 dev=0,0,0 -audio -pad *.wav`

Of course, your speed and device numbers might be different - you can use `cdrecord -scanbus` to find the device address, and the speed setting will depend on your CD burners' speed rating. In general, burning will be more reliable at slower speeds, especially on older machines.

## 4.11 Recording a Data CD (mp3 or ogg)

If you only plan to play a music CD on your computer or other mp3 capable device, you can burn mp3 or ogg files in exactly the same way as an ordinary data CD. Because data CDs use a file system, we'll use `mkisofs` (to create the file system) and `cdrecord` to burn the disk. As in the audio CD example above, put all the files into a separate folder. The two operations can be combined into a single command like this:

`mkisofs -R /path/to/folder_to_record/ | cdrecord -v speed=4 dev=0,0,0 -`

Don't forget the hyphen at the end! As in the example for burning audio CDs, you might have to use different speed and dev numbers. Older or slower computers might have difficulties running both mkisofs and cdrecord at once - if so you can do it as two separate operations like this:

`mkisofs -R -o cdimage.raw /path/to/folder_to_record/`

This creates an image named cdimage.raw. Then burn the disk:

`cdrecord -v speed=4 dev=0,0,0 cdimage.raw` (using suitable speed and device settings..)

## 4.12 Some detailed information on related topics:

The Linux MP3 HOWTO
The Linux MP3 CD Burning HOWTO
The SOX Homepage- The swiss army knife of Linux sound tools.
The Normalize Homepage
Installing and Setting Up a CDR/CDRW - *Note* Modern desktop distributions can usually detect and setup a CD burner without any manual configuration required. This page may be useful however for older/difficult distributions that require manualinstallation.
The OggVorbis Homepage
The Bladeenc Homepage
The CDRecord Homepage
The CDParanoia Homepage
The mpg123 Homepage

# 5. Linux in the Office

Office applications for Linux are now quite mature. Linux desktop productivity tools are in fact so capable and feature rich that corporations are beginning to look at alternatives to MS Office with its high TCO, and leaning towards office suites like OpenOffice and StarOffice. OpenOffice in fact is a part of discussion being held between multiple companies including Boeing Aeronautics, a major international technology contractor, to begin to define a standard for Office document formats. Allowing greater portability of documents between office suites; XML of course is being discussed as the most viable vehicle for the mission. But I digress, to sum it up, if someone wishes to do all of their word processing, spreadsheets, and so on on the Linux desktop they would find themselves very satisfied with today's applications.

## 5.1 Word Processing

User's choices for word processing on Linux are varied and diverse. To list several applications would probably only begin to scratch the surface of what is available. So in an effort to simplify things I will include a review of those applications with which I have experience and list a few more with which I do not. In addition all of the Word Processors I have used in the past are Microsoft Word compatible - meaning that they can both read and write MS Word documents. This will come in handy for all those who are afraid they will never be able to open a '.Doc' (Word Document) once they move over to Linux.

### 5.1.1 StarOffice Star Writer

StarOffice is an office suite written for Unix / Linux and developed by Sun Microsystems. Until recently StarOffice was a freely available download but recently with their newest version (I believe StarOffice 6.0) they have begun charging a license fee. I haven't used StarOffice 6.0 but I am familiar with the final release just before it. StarOffice is a functional Office suite with many additional features. When you first open StarOffice you are presented with a screen very similar in appearance to the MS Windows desktop complete with 'Start' bar. StarOffice provides the full suite of functionality including word processing, spreadsheets, email, and MS PowerPoint-like presentations. And again, any and all documents written in StarOffice can be saved in the equivalent MS Office format so you lose no compatibility with co-workers / family members / unconverted Windows- but-soon-to-be-Linux users. StarOffice, along with all the other applications I review here provides a very similar interface to MS Word. So there is little to any learning curve involved with using it. In fact the only real difference between the list of applications reviewed here and those in MS Office is how well the applications can read and write in the MS format. StarOffice does a very adequate job of processing MS Word documents. The only area where StarOffice runs into trouble is reading and writing MS Word documents that have tables embedded in them or those containing forms. However if it is merely straight text, such as a report there is typically no problem involved. But it is my unconfirmed suspicion that even this has changed now that you can pay for StarOffice. Again I have not checked this first hand but I believe the reason Sun now charges for StarOffice is because they paid Microsoft for the APIs that allow StarOffice to read and write MS Office documents. Up until now the formats have merely been reverse-engineered, kind of a best guess at how to interpret the symbols in a MS Word document. For more information, and to confirm / deny my crazy allegations check out StarOffice at http://www.staroffice.com.

### 5.1.2 OpenOffice Writer

OpenOffice is a spinoff of Sun's StarOffice (as the name may suggest). And like StarOffice, OpenOffice also provides a suite of applications including word processing, spreadsheets, and MS PowerPoint-like presentations. OpenOffice also supports the reading and writing of MS Office documents. Recently I rewrote my resume (and being a Linux-only kinda guy I of course couldn't use MS Word) using OpenOffice. This consisted of multiple fonts and font sizes, the embedding of tables so as to properly position the many elements of my resume, and also included bullets. After completing my resume I proceeded to save it in both the native OpenOffice format as well as the MS Word 2000 format. Of course before shipping it out to employers I wanted to check to see how it would look in MS Word. So when I went to work the next day I proceeded to open it using (the very expensive) MS Word 2000. Much to my surprise, with the exception of some bullets the resume had made it through quite well. All the tables were properly in place, the fonts well represented in their multiple sizes, and the only thing wrong with the bullets was that instead of the ``>'` arrow I had originally had, it was replaced with a round bullet (I guess perhaps that MS Word didn't support the particular type of bullet I had specified.) So OpenOffice (if you absolutely refuse to pay for software) will do very well for your Office and Word Processing needs. More can be learned about OpenOffice (you can download a copy of OpenOffice from here too) at http://www.openoffice.org.

### 5.1.3 AbiWord

The only complaint I can really make concerning AbiWord can be summed up in one word - tables. While AbiWord does support tables the interface and handling of tables has a long way to go. Otherwise AbiWord is much like StarOffice and OpenOffice. Reads and writes simple MS Word documents, very MS-like interface, etc. Another nice feature of AbiWord is its support of Gnome themes; a feature that neither OpenOffice or StarOffice provide.

## 5.2 Others Word Processors

### 5.2.1 Kword

Kword is part of the KOffice office suite for the KDE desktop. It has all the usual bells and whistles, frames, numbering, bullets, tables, paragraph alignment, etc. However from what I can see at on the webpage KOffice does not support reading and writing of MS Word documents. If you would like to learn more point your browser to
http://www.koffice.org

### 5.2.2 Corel WordPerfect

WordPerfect was once the dominant word processor for PCs, and the latest available version for Linux is WordPerfect2000. It is a fully featured application and is unusual in that it is not Linux native, but is essentially the Windows binaries running under a built-in version of Wine. For this reason, it may not be as stable or fast as some of the others. You can find out more about Corel WordPerfect 2000 at:
http://linux.corel.com/products/wpo2000_linux/index.htm

## 5.3 Spreadsheets

Spreadsheets are possibly the most widely used Office program, and as with word processors, Linux users have several quality offerings to choose from.

### 5.3.1 Gnumeric

Gnumeric is the GNOME projects spreadsheet, and it is a mature and stable program. Compatability with MS Excel files is quite good, and gnumeric is often installed by default with many distros, or at least is available on the installation CDs. A good choice for those who don't want to install a big, fullblown suite like Star/Open Office.

### 5.3.2 StarOffice/OpenOffice Calc

The Calc spreadsheet is another very competent office tool, with very good Excel compatability. Possibly the best choice for heavy duty spreadsheet users.

### 5.3.3 kspread

Koffices' spreadsheet, kspread, is a good looking, powerful app, however its Excel compatability is somewhat limited, so if this is important to you, perhaps one of the others would be a better choice. Otherwise an excellent spreadsheet.

## 5.4 Other Office Applications

The number and quality of office type apps. has grown rapidly in the last couple of years. Some of these are listed below, along with a brief description and links. Most people will probably find these will meet their needs, though some may find they are dependant on certain features of Microsoft Office apps. that just aren't available under Linux yet. For these users, a proprietary product known as Codeweavers Crossover Office allows MS Office (as well as some others) to be installed and run directly from Linux. I've only listed the more well known programs here, and some of these are probably already installed on your computer. If you need to install them, most of these packages can be found on your installation CDs, otherwise just follow the links. The KDE apps listed here are mainly included in the koffice package, while the GNOME programs are usually separate packages.

### 5.4.1 Address Books

GNOME has ``gnomecard'` (part of the gnome-pim package), KDE uses ``kaddressbook'`.

### 5.4.2 Fax Apps

There is ``kfax'` with KDE, gfax for GNOME. Programs like hylafax and mgetty+sendfax are also popular.

### 5.4.3 Email/PIM

Outlook users will probably be most interested in Ximians' Evolution, a fully featured email/PIM program.
There is also a proprietary add-on for Evolution named Connector, and this can enable Evolution to function as an MS Exchange client. As well as email, it has address book, calendar and task-scheduling/alarm features.

### 5.4.4 Drawing/Graphics

Dia is a structured diagrams program similar to Visio, while Sketch is a vector drawing package.
KDE has Kontour (another vector drawing tool), Kivio for flowcharts, and KChart kchart for drawing charts/graphs.

### 5.4.5 Financial

Gnucash is a popular personal finance manager, though there are several others. And if you just can't survive without Quicken, you'll be pleased to know it will run under Linux using Codeweavers Crossover Office.

### 5.4.6 Database

postgreSQL is included with distros such as Mandrake and RedHat, also there is MySQL, a somewhat simpler database.
As well, there are databases such as Interbase, and Firebird a free, open source version of Interbase.
The big names like Oracle and IBM (DB2 for Linux) support Linux too.

### 5.4.7 Presentation Apps.

The major office suites (StarOffice, OpenOffice, Applix, KOffice) all have functional presentation programs. The StarOffice and OpenOffice versions can handle MS PowerPoint format files.

### 5.4.8 Organizers

If you are looking for something a little lighter than Evolution, KDE has ``korganizer'`, and GNOME uses ``gnomecal'` (part of the gnome-pim package).

### 5.4.9 Calculators

RedHat distribution installs three calculators by default. Xcalc,GNOME Calculator,KCalc.

Xcalc is a scientific calculator desktop accessory that can emulate a TI-30 or an HP-10C. Xcalc can be started from a terminal emulator or from the Run dialog box by typing `xcalc`. It takes the following command line argument (among others)

`-rpn`
  This option indicates that Reverse Polish Notation should be used. In this mode the calculator will look and behave like an HP-10C. Without this flag, it will emulate a TI-30.

GNOME Calculator is a double precision calculator application. GNOME Calculator is included in the `gnome-utils` package, which is part of the GNOME desktop environment. It is intended as a GNOME replacement for xcalc. To run GNOME Calculator, select gcalc from the Utilities submenu of the Main Menu in GNOME, or type `gcalc` on the command line in a terminal emulator or Run Program dialog box.

KCalc can be started by typing `kcalc` on the command prompt or in the Run Program Dialog box.

### 5.4.10 PDF Files Viewer

PDF (Adobe's Portable Document Format) is a format for transfering documents with formatting (including fonts, sizes, etc) with a few more extra features (such as URLs). It is a quite common format for publishing documents - it is generally quite difficult to edit such a document, but relativly easy to show it, as it already contains an exact definition of the document (somewhat similar to postscript). There are a number of viewers for PDF documents under GNU/Linux.

#### 5.4.10.1 XPdf

``xpdf'` supports most of PDFs features, including LZW-compressed images URLs and encryption. It can be started from command prompt by typing `xpdf`. xpdf's home is at http://www.foolabs.com/xpdf/ . It also comes with a number of distros, including RedHat, Mandrake and SuSE.

#### 5.4.10.2 Adobe Acrobat Reader

This is not free software (although it can be used free of charge for non-commercial use). Free software gives you permission to use, copy, study and improve the software. You can learn more about Free Software here.

You can get Adobe Acrobat Reader from: http://www.adobe.com/products/acrobat/readstep2.html

## 5.5 Links

It's impossible to cover all the available office type programs in just a few paragraphs; if you need to know more try the links below:

The Linux-Office Site is a very useful resource for Linux office apps.
The KOffice website
The Gnome-Office website
Codeweavers Crossover Office can run Windows apps like MS Office, Lotus Notes and others under Linux.

# 6. Gaming With Linux

Okay, you've got your word processor and spreadsheet set up under Linux, plus a web browser, an email client and a million other boring programs. But what about the important stuff? Where are the games? Most people probably wouldn't think of Linux as being a gamer's platform, and it's true that the real hard-core gamer might need to stick with a dual boot system for the time being at least. But for the rest of us, Linux can offer a great environment for playing games. There are plenty of good ones on offer, and accelerated 3D is no longer a pain to set up for many common cards. And now that lots of Windows games are playable using emulators like WineX, we've never had so much choice.

## 6.1 Where to Get Them

Most distros come with a variety of games, and you probably have some already installed. Look in your GNOME or KDE menus under "Games" or "Amusements". If you don't have any installed, check your installation CDs for packages named "kdegames" and "gnome-games". These packages include a wide variety of games ranging from Arcade style games (Tetris and Jezzball clones, Snakerace etc.), board games (Chess, Mahjongg, Reversi and so on), to card games, plus games to test your strategic skills and much more. As well as the ones in the KDE and GNOME packages, some distros include others like Maelstrom, Bzflag (a popular tank game), FrozenBubble (one of my favourites), and even 3D games such as Tuxracer and Chromium. Browse the package directory of your distro CDs to see what's available. There are also lots of games freely available from the internet, plus some commercially produced/ported titles for sale.

## 6.2 Commercial Games

A few companies make or have made games available to Linux users. Perhaps the best known of these was Loki, who are sadly no longer in business. Loki ported quite a few popular titles to linux, (QuakeIII Arena, HeavyGearII, Descent III etc), and you might even find some of them still available for sale. Probably the best way to find out what's available is to check out online stores like TuxGames.

## 6.3 Hardware and Software Requirements

Broadly speaking, games can be split into two groups; those that require accelerated 3D support, and those that don't. The first group would include 3D games such as QuakeIII, UnrealTournament, Tuxracer and so on, while the second group includes the 2D style of games such as those found in the GNOME and KDE game packages (and of course the old style text games would be in this group too). Games in the 2D group don't need anything special to run them; if you can run GNOME or KDE you'll have no problems. The 3D games however are much more fussy about what they'll run on; as well as having enough RAM and CPU power, you'll also need a Linux-supported 3D graphics card (or on-board chip). Individual game requirements vary widely, but as rough guide, the recommended minimum for QuakeIII is a 233Mhz CPU with an 8meg graphics card and 64 meg. of RAM. Keep in mind that this is the bare minimum required just to run the game; you'd probably need to double those figures to get reasonable performance.

Setting up 3D graphics with Linux used to be a bit tricky, but now many modern distros will set up the appropriate drivers during installation, giving accelerated 3D out of the box. When you are setting up your machine, keep in mind that it isn't the brand of graphics card you have that is important, but rather the brand of chipset it uses. In other words, you would use ATI drivers for a card with an ATI chipset, regardless of its brand. Currently, most Linux gamers seem to prefer nVidia based cards, and with good reason. NVidia write their own (closed source) drivers for Linux; these are easy to install and set up and their performance is generally on a par with their Windows counterparts. ATI based cards are also popular, and ATI have recently released unified drivers for Linux users with their higher end cards. Check out this site to see what cards are supported. As well as suitable hardware, you'll also want to use a recent version (>4.0) of XFree86. Later versions have much better 3D support, so if you are having problems an XFree86 upgrade should be one of your first steps.

## 6.4 Setting up NVidia Based Graphics Cards

As I mentioned earlier, nVidia based cards have become a favourite amongst Linux gamers. While these cards will usually work perfectly out of the box for normal 2D work, you'll probably have to install nVidia's drivers to get accelerated 3D. Some recent distros will install these for you during installation of Linux; even so, you might want to read on so you can update to the current drivers. These drivers are "unified", ie. the same drivers are used for all versions of nVidia based cards. Before you start, you should check that you are running a reasonably recent version of XFree86. There are two drivers that will need to be installed, the NVIDIA_kernel package and the NVIDIA_GLX package. The kernel package is available in several versions to suit most common distros; if there isn't one to suit your distro you can also get tarballs. And if you aren't sure which package to get there is a script you can download from nVidia that will advise you of the best package to use.

Once you've downloaded the packages, you should exit X (not strictly necessary, but it makes recovery easier if things go wrong..) and install the kernel package and then the GLX package. If you are upgrading rather than installing, nVidia recommend removing the old GLX package first instead of upgrading over it. Now all you need to do is edit a couple of lines in your XF86 configuration file (usually this will be /etc/X11/XF86Config-4). Assuming you already have an XF86Config file working with a different driver (such as the 'nv' or 'vesa' driver that is installed by default), then all you need to do is find the relevant Device section and replace the line:
`Driver "nv" (or Driver "vesa")`
with
`Driver "nvidia"`.
In the Module section, make sure you have:
`Load "glx"`
You should also remove the following lines:
`Load "dri"`
`Load "GLcore"`
if they exist. Now restart X to use the new drivers. If you have any problems, check the ``XF86'` log file (named `` /var/log/XFree86.0.log'` or similar) for clues. Also read the documentation on the nVidia website and in the README file included in the NVIDIA_GLX package.

## 6.5 Playing Windows Games With Linux

Some well known games produced for windows have Linux binaries available (Return To Castle Wolfenstein etc). The Linux binaries allow you to install the data files from your Windows game CD, and then run the game directly from Linux. Some games include the Linux binaries on the CD (rare, but hopefully this will become commonplace), or you may have to download them.

Another way to run Windows games is to use an emulator like Wine, or WineX. The list of programs that will run well under Wine is growing steadily, though for gaming you'll probably be more interested in WineX by Transgaming. WineX is a commercial offshoot of the Wine project, and while Wine aims to enable Windows programs in general to be run under Linux, WineX focusses exclusively on games. Many Windows games install and play perfectly with WineX, including Max Payne, Warcraft III, Diablo II, The Sims etc. There is a list of games at the TransGaming website, however I have found that there are some games not listed that will still play under WineX. Try searching Google for name of game + winex for help on unlisted games. You can download the WineX source from the CVS tree for free, but compiling and configuring can be confusing for a newbie. Much better is the precompiled packages that are available to subscribers. Subscriptions cost US$5 per month, with a 3 month minimum. There are some other benefits to subscribers, though I think the binaries alone are worth the price.

## 6.6 Links

Obviously this has been no more than a very brief overview of Linux gaming; see the sites listed below for more info.

The Linux Gamers HOWTO - I can't recommend this one highly enough; if you are serious about gaming with Linux, read this doc!
Linux for Kids - This site has lots of links and info about games and educational apps. You don't have to be a kid to enjoy this stuff - adults will probably find some good stuff here too.
The Linux Game FAQ - A comprehensive list of Frequently Asked Questions about Linux gaming.
The Linux Game Tome - Definitely worth a look!
New Breed Software - Bill Kendrick and co. have written some good games, mainly for kids.
Racer - is a promising race car game with extremely good graphics and physics. Not finished yet, but still playable, and makes a nice change from the shooters.
Transgamings Winex Homepage
LinuxGamers is another interesting game site.

# 7. The Post-Install Tune-up

Many Linux distributions install lots of stuff that many people never use. Often there are services or daemons set to run that aren't needed, and system configuration settings are conservative so as to run on the widest range of hardware. All these things can detract from your Linux desktops performance, and that's what this article is about; getting more performance from your box by performing a post-install tune-up. Here's what we'll be doing:

- Tidying up the boot-up process
- Freeing resources by removing un-needed services/daemons from boot scripts
- Freeing hard disk space
- Speeding up hard disk performance with `hdparm`
- Recompiling the kernel for better system performance

You don't need to do all these things by the way, only those that you need or want to, the rest are optional. Be aware that if your box is reasonably configured to begin with (and most distributions are, out of the box), you are unlikely to get a dramatic improvement from any one of these things.

However, by doing some or all of them you should end up with a system that boots more quickly, has more disk space and slightly more free memory, and a small but noticeable improvement in performance. The one thing you can do that will have a profound effect on performance is run lightweight, efficient software, so you should make that your first priority when building a fast Linux desktop.

## 7.1 Disclaimer

I don't guarantee the accuracy of anything that follows, so use this information at your own risk. In other words, if by following this guide you trash your computer, don't blame me.

## 7.2 Before You Start

I'll assume you'll be running a SysV type system, as this is the most common and what you'll have if you are running a Red Hat-type distribution. SysV simply refers to the way services etc are started at boot time. If you are running some other system, you can still clean up the boot process; check your distribution's documentation for details. It's a good idea to browse through any documentation that came with your distribution anyway. This might be in the form of HTML files or a printed manual, and with many modern distributions is very comprehensive. The documentation should be able to provide you with details of any variations to the boot process used by your particular distribution, though I think the common distributions are pretty much all the same in this regard.

If this is a fresh installation, you should make sure all your hardware is properly configured first. Linux has really come a long way as far as hardware recognition goes, and chances are you won't have to do anything, though things like sound cards sometimes have to be setup manually. Once you are sure everything is going to work, you can continue with the tuning ....

## 7.3 The Boot-Up

We probably should start with a brief description of what actually happens when you boot your Linux box. You can skip this bit if you want to, but I think an understanding of what goes on at boot-up can often be helpful, so stick around ....

After the kernel is kicked into life by GRUB or LILO or whatever, the following steps occur (with possible minor variations):

1. The kernel gets it's own internal systems set up.
2. The `init` program is started.
3. init reads the ``/etc/inittab'` file. This file provides init with the default run level for the system (eg console, graphical, single-user etc.) Take a look at ``/etc/initab'` yourself so you understand what the various run levels do.
4. `init` then runs a script (usually ``/etc/rc.d/rc.modules'`) to load auto loaded kernel modules.
5. Depending on the default run level (from ``/etc/inittab'`), `init` then starts or stops all the services in that particular run level directory. For example, if runlevel 5 is the default according to ``/etc/inittab'`, then all the scripts in ``/etc/rc.d/rc5.d/'` are run.
6. `init` then runs another script (usually ``/etc/rc.d/rc.local'`) . This is where the user can put stuff that he/she wants to be started automatically at boot-up. You might want to start your OSS sound driver from here for example. Users of older versions of Mandrake can edit this file to get rid of that damn ugly penguin ....

This is a bit over-simplified, but I hope you get the idea. If you take a look at the scripts in ``/etc/rc.d/rc5.d'` (or whatever your default runlevel is), you'll see that the names of the scripts all start with an S(for Start) or a K(for Kill or stop) followed by a number. The number determines the order in which the scripts are run. Most distributions start a diverse range of services or daemons at boot time, and while this automatically covers the needs of the majority of users, it also means that there will probably be several processes started that aren't required. This results in longer boot-up times, increased memory usage, and more potential security holes. Stripping un-needed stuff from the start-up scripts is easy; the hard part is determining what does what, and what you do and don't need. Hopefully the listing below will be of some help, it notes some of the most commonly found services and gives a brief description of what they do. And don't forget to make backups or notes of your changes, just in case you find you really did need to have that daemon started after all .... (this list is courtesy of Stan and Peter Klimas' Linux Newbie Administrators Guide)

`anacron`
  checks `cron` jobs that were left out due to down time and executes them. Useful if you have `cron` jobs scheduled but don't run your machine all the time--anacron will detect that during bootup.
`amd`
  automount daemon (automatically mounts removable media).
`apmd`
  Advanced Power Management BIOS daemon. For use on machines, especially laptops, thatsupport apm.
`arpwatch`
  keeps watch for ethernet/ip address pairings.
`atd`
  runs jobs queued by the "at" command.
`autofs`
  control the operation of automount daemons (competition to `amd`).
`bootparamd`
  server process that provides information to diskless clients necessary for booting.
`crond`
  automatic task scheduler. Manages the execution of tasks that are executed at regular but infrequent intervals, such as rotating log files, cleaning up `/tmp` directories, etc.
`cupsd`
  the Common UNIX Printing System (CUPS) daemon. CUPS is an advanced printer spooling system which allows setting of printer options and automatic availability of a printer configured on one server in the whole network. The default printing system of Linux Mandrake.
`dhcpd`
  implements the Dynamic Host Configuration Protocol (DHCP) and the Internet Bootstrap Protocol (BOOTP).
`gated`
  routing daemon that handles multiple routing protocols and replaces `routed` and `egpup`.
`gpm`
  useful mouse server for applications running on the Linux text console.
`httpd`
  daemon for the Apache webserver.
`inetd`
  listens for service requests on network connections, particularly dial-in services. This daemon can automatically load and unload other daemons (ftpd, telnetd, etc.), thereby economizing on system resources. Newer systems use `xinetd` instead.
`isdn4linux`
  for users of ISDN cards.
`kerneld`
  automatically loads and unloads kernel modules.
`klogd`
  the daemon that intercepts and displays/logs the kernel messages depending on the priority level of the messages. The messages typically go to the appropriately named files in the directory `/var/log/kernel`.
`kudzu`
  detects and configures new or changed hardware during boot.
`keytable`
  loads selected keyboard map.
`linuxconf`
  the linuxconf configuration tool. The automated part is run if you want linuxconf to perform various tasks at boottime to maintain the system configuration.
`lpd`
  printing daemon.
`mcserv`
  server program for the Midnight Commander networking file system. It provides access to the host file system to clients running the Midnight file system (currently, only the Midnight Commander file manager). If the program is run as root the program will try to get a reserved port otherwise it will use 9876 as the port. If the system has a portmapper running, then the port will be registered with the portmapper and thus clients will automatically connect to the right port. If the system does not have a portmapper, then a port should be manually specified with the -p option (see below).
`named`
  the Internet Domain Name Server (DNS) daemon.
`netfs`
  network filesystem mounter. Used for mounting nfs, smb and ncp shares on boot.
`network`
  activates all network interfaces at boot time by calling scripts in ``/etc/sysconfig/network-scripts'`.
`nfsd`
  used for exporting nfs shares when requested by remote systems.
`nfslock`
  starts and stops nfs file locking service.
`numlock`
  locks numlock key at init runlevel change.
`pcmcia`
  generic services for pcmcia cards in laptops.
`portmap`
  needed for Remote Procedure Calls. Most likely, you need it for running network.
`postfix`
  mail transport agent which is a replacement for sendmail. Now the default on desktop installations of Mandrake (RedHat uses sendmail instead).
`random`
  saves and restores the "entropy" pool for higher quality random number generation.
`routed`
  daemon that manages routing tables.
`rstatd`
  kernel statistics server.
`rusersd, rwalld`
  identification of users and "wall" messaging services for remote users.
`rwhod`
  server which maintains the database used by the `rwho(1)` and `ruptime(1)` programs. Its operation depends on the ability to broadcast messages on a network.
`sendmail`
  mail transfer agent. This is the agent that comes with Red Hat.
`smbd`
  the SAMBA (or smb) daemon, a network connectivity services to MS Windows computers on your network (hard drive sharing, printers, etc).
`squid`
  An http proxy with caching. Proxies relay requests from clients to the outside world, and return the results. You would use this particular proxy if you wanted to use your linux computer as a gateway to the Internet for other computer on your network. Another (and probably safer at home) way to do it, is to set up masquarading.
`syslogd`
  manages system activity logging. The configuration file is ``/etc/syslog.conf'` .
`smtpd`
  Simple Mail Transfer Protocol, designed for the exchange of electronic mail messages. Several daemons that support SMTP are available, including sendmail, smtpd, rsmtpd, qmail, zmail, etc.
`usb`
  daemon for devices on Universal Serial Bus.
`xfs`
  X font server.
`xntpd`
  finds the server for a NIS domain and stores the information about it in a binding file.
`ypbind`
  NIS binder. Needed if computer is part of Network Information Service domain.

Many users will find they have a lot of unnecessary stuff in their `/etc/rc.d/rc*.d/` folders. If you aren't sure if you need something or not, just move it somewhere else temporarily (but don't delete it), re-boot and see how things go. If you find that you do need it, just move it back and re-boot.

## 7.4 How To Make The Changes

I usually just fire up a file manager and make a new folder in `/etc/rc.d` called `JunkFromRc5` or something similar. Then I just drag the unneeded scripts from `/etc/rc.d/rc5.d/` into the new folder (obviously my default runlevel is 5, you might need to use something different..). Alternatively, you can use a graphical tool like `tksysv`, or perhaps your distribution has it's own tool. You might also want to edit ``/etc/rc.d/rc/local'`. Apart from user's entries, this often has a few lines that overwrite ``/etc/issue'` with some system specs (and/or that hideous penguin), and the contents of the ``/etc/issue'` file are displayed just before the login screen. Many people prefer to delete this bit and insert a line to display a fortune here instead, eg. `/usr/games/fortune > /etc/issue`. As usual, if you aren't sure what you are doing, make a backup copy of the file first.

## 7.5 Re-Claiming Hard Disk Space

This bit is easy, if a little time consuming. I usually start by getting rid of unneeded software packages. Fire up your favorite package management tool (like `kpackage`) and spend some time browsing through the list of installed programs. Tools like kpackage are ideal for this kind of work as they can easily show you the size of each package, a summary (so you know what the package is for), and any related dependencies.

Do you really need six editors, four file managers, five shells, three ftp clients etc.? Don't be surprised to get rid of a hundred megs or more of stuff. Packages like the Tex related ones, Emacs/Xemacs, and various emulators are never used by many, yet they occupy lots of space. If you are doubtful about removing some packages, keep some notes so you can re install them later if you have to.

Many distributions also install lots of documentation (check out `/usr/doc` or `/usr/share/doc` ). You'll probably find that there are only a few files in there worth keeping, and remember most of this stuff is available on the Web anyway. The `du` tool is invaluable for finding disk hogs. Also look for core files left over from crashes; these are only really useful to debuggers and can be deleted.

## 7.6 Hard Disk Tuning

I've seen a few articles claiming huge performance gains from using `hdparm`, a command line tool for setting (IDE) hard disk parameters. The claimed gains are sometimes in the order of several hundred percent. While I'm not doubting these figures, I have to wonder whether they just indicate that the disk was horribly mis-configured to start with. I've tried using hdparm on a few disks, and have found modest gains in performance. Keep in mind that disk performance is only one factor in overall system performance, and even a fairly big jump in disk performance might not make a perceptible difference to the overall speed of your system. If a disk was noticeably slow, I would certainly give hdparm a try, but otherwise I wouldn't worry about it too much. Some common distributions already set some of the optimizing parameters at boot time anyway, so as I said before, unless you think there is a problem, you could probably just leave well enough alone. If you do decide to give it a go, make sure you read (and understand) the man page (at a terminal emulator type `man hdparm`), and be aware that with some of the adjustments there is a small but real risk that things can go spectacularly wrong, ie. corruption of the file system. If you'd like to give hdparm a try, here's the basic usage:
`hdparm [-flag] device`

Running hdparm without any flags (or with the `-v` flag) will display the current settings. To see the current settings for my first hard disk (/dev/hda) for example, I would use: `hdparm /dev/hda`. To do a basic check of the speed of the first hard disk I would use: `hdparm -Tt /dev/hda`. Some more commonly used flags:

`-c3`
  Enables IDE 32 bit I/O support
`-a [sectcount]`
  Get/set sector count for read ahead
`-m16`
  Sets multi-sector I/O (in this example 16 sectors, you may need to experiment to find the optimal number for your disk)
`-u1`
  Unmasks interupts
`-d1 -X34`
  Unable DMA mode2 transfers
`-d1 -X66`
  Enable UltraDMA mode2 transfers

Read the man page for more options.

I guess the logical way to use hdparm would be to find out what your disk supports, then set hdparm accordingly. More commonly though, trial and error is used, changing one setting at a time and measuring the performance after each change. Don't use settings recommended by someone else ; while they may have worked perfectly on that persons disk, your disk might be completely different and the results may not be good. There are several tools available for testing disk performance, one of the better known ones is bonnie. And remember the changes will be lost when you re-boot, so if you want to make them permanent, you'll have to add them to a boot script like ``/etc/rc.d/rc.local'`.

## 7.7 Filesystem

Linux updates a last access time attribute every time you open a file. If you are after all the speed you can get, and you are sure you don't need this feature, you can add `noatime` to the mount options listed in ``/etc/fstab'`. For example:
In the ``/etc/fstab'` file add the line `/dev/hda5/ ext2 defaults,noatime 11` if you do not wish to update last access time on the files in `/dev/hda5` partition.

### 7.7.1 Alternative Filesystems

You might have tried (or read about) alternatives to the traditional ext2 file system, and at present the most common seem to be ReiserFS and Ext3. These have some advantages over ext2, including quicker performance, so if you are about to start a new Linux installation you should certainly consider using the Reiser file system. However, as with hdparm, unless you are doing something unusually disk intensive, the gains are likely to be minor, and if your current system is doing the job I'd stick with it.

## 7.8 Kernel Recompilation

This is another one of those things that is often recommended in the Linux tune-up guides. While it may have been important years ago, it is probably of questionable value now that modular kernels are the norm. So unless you need to compile in some special feature, or you are using a pre-historic non-modular kernel (in which case you could probably benefit from updating your Linux installation), I wouldn't bother. Most recent distributions come with a variety of optimized kernels, and automatically install the one that best suits your system. Of course, you might want to recompile just for its sheer geek entertainment value, and I guess that's as good a reason as any.... I won't go into the details of kernel compilation here, check your distribution's documentation or the Kernel HOWTO for details.

## 7.9 Miscellaneous Tips

This article has only covered the very basic stuff - if you are interested in reading some much more detailed info about configuring Linux read the Configuration HOWTO.

If you are serious about tuning your Linux box, you'll need some benchmarking tools. To get started, take a look at this site: The Linux Benchmarking Project.

Obviously you'll be aiming to conserve memory as much as possible. Use the `free` command from a terminal emulator to see memory usage details. Ideally, you'll be able to balance usage against available memory so that swap isn't used.

You can save some memory by using a plain background on your desktop, rather than an image file.

Other useful tools are `ps -aux` (shows details of running processes), and `top` (similar to ps but continually updates).

Help reduce the time it takes X to update the screen on low-end machines by not using a greater colour depth than necessary, eg. use 16bit instead of 32 bit. You can check X's performance with x11bench, which is often installed by default.

# 8. End Note

These are only a few of the chapters that we have covered in our HOWTO "Doing Things In GNU/Linux". You can get the complete HOWTO from here, or here. If you find any mistakes, please mail mail your suggestions to `lunatech3007 at yahoo dot com` . This HOWTO needs active participation from the readers and I welcome suggestions, praises and curses. Feel free to ask for help on a topic - just check that your question isn't answered here first . If you don't understand the any topic please tell us, so we can explain it better. General philosophy is: if you need to ask for help, then something needs to be fixed so you (and others) don't need to ask for help.

#### Raj Shekhar

I have completed my Bachelor in Information Technology from University of Delhi. I have been a Linux fan since the time I read "Unix Network Programming" by Richard Stevens and started programming in GNU/Linux in my seventh semaster . I have been trying to convert people right, left and center ever since.

#### Anirban Biswas

I am Anirban Biswas from Calcutta, India. I have been using Linux for 4 years (from RH 6.1 to RH 8.0, then to MDK 9.0). Currently I'm in the final year of computer enginnering.

#### Jason P Barto

I am from Pittsburgh, Pennsylvania and have been using Linux for 7 years. My first distro was Redhat 3 or something like that. back when configuring the X server was a real adventure. I'm currently an avid Slackware fan, and have been working in software development for Lockheed Martin Corporation for three years.

#### John Murray

John is a part-time geek from Orange, Australia. He has been using Linux for four years and has written several Linux related articles.

Copyright © 2003, Raj Shekhar, Anirban Biswas, Jason P Barto and John Murray. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 88 of Linux Gazette, March 2003