Next Previous Contents

2. Quake/Quakeworld

To install Quake on your Linux system, you'll need some flavor of the official Quake distribution from id. This will be either the retail DOS/Windows CD-ROM that you bought at your favorite software store, or the shareware version you downloaded from the net (see below for details on acquiring the shareware version). Alternatively, if you've already got Quake installed on a DOS/Windows machine, you can use the relevant files from that installation.

2.1 Minimum Requirements

You will need, as a bare minimum, the following:


2.2 Installing Quake

Download the Necessary Files

All the necessary files for Linux Quake are available at id Software's ftp site, This site can be quite busy at times,so you may want to use one of these mirror sites instead:

The Quake files mentioned in in this section are:

Other software mentioned:

Create the Installation Directory ++

The first thing you'll need to do is decide where you want to install Quake. The "standard" location is /usr/local/games/quake. This is where the .rpm packages put Quake. If you choose to install somewhere else, please substitute the appropriate path wherever /usr/local/games/quake is mentioned.

Note to Redhat users: If you plan on installing QuakeWorld from the rpm packages, you should probably install Quake in /usr/local/games/quake, since the rpms install to this directory by default.

So go ahead and create the directory you'll install Quake in, and cd to it. The rest of these instructions will assume that this is your current directory.

     mkdir /usr/local/games/quake
     cd /usr/local/games/quake

Installing From a Quake CD

If you're installing from a Quake CD-ROM, read on. Otherwise you have permission to skip this section.

There are at least two versions of the Quake CD in circulation. I've got one from the early days that has Quake version 1.01 on it. Iv'e seen other CDs that contain version 1.06. You have 1.01 if you see files on your CD called quake101.1 and quake101.2. If instead you see a file called resource.1, you have a newer CD. Mount your Quake CD now and determine which version you've got. In the example below, replace /dev/cdrom and /mnt/cdrom with the device file and mount point appropriate for your sysem:

     mount -t iso9660 /dev/cdrom /mnt/cdrom
     ls /mnt/cdrom

That's it for installing from the CD. You can jump ahead to section " Installing the Linux Binaries" now.

DOS/Windows to Linux Install

If you have Quake installed under Windows or DOS on a different machine, you can transfer the files in quake\id1\ to your Linux system via FTP or some other mechanism. Keep in mind that the filenames on your Linux system must be in lower case for Quake to find them, so you may have to rename them after the transfer. Also note that it may be necessary to delete your DOS/Win installation after you do this to remain in compliance with the terms of id's software license. It's not my fault if you do something illegal.

If your DOS/Win and Linux systems are on the same machine, you have two options: copy the files from your DOS/Windows partition to your Linux partition, or link to the necessary files from Linux. Both options will work equally well. You just save around 50 megabytes of disk space when you link instead of copy.

Whatever you choose to do, start by cd'ing to your Quake directory and creating a new directory below it called id1:

     cd /usr/local/games/quake
     mkdir id1

Replace /win95/games/quake with the correct path to your DOS/Windows partition and Quake installation directory.

The Quake data files are now installed. Move ahead to " Installing the Linux Binaries".

Shareware Version Install

The single-episode shareware version of Quake is freely available for download from id's ftp site. It has all the features of the full version, with a couple of major limitations: You can't play QuakeWorld with it, and you can't play custom or modified levels.

Installing the shareware version of Quake isn't really much different than installing from the CD.

See section Download the Necessary Files for the location of the shareware distribution. Download it and extract it to your Quake directory:

     cd /usr/local/games/quake
     unzip -L /wherever/you/put/it/

Now you've got (among others) a file called resource.1 that's really an lha archive (lha is a file compression and archiving format like zip or tar). We'll use the lha(1) command to extract it. If lha is not already installed on your system, you can get it from

     lha e resource.1

When lha is done, your Quake directory will contain a bunch of new files. A directory called id1/ will also be created. The files in this directory are the only ones that are important for Linux Quake, so you can safely remove everything else. If you're totally new to Quake, or even if you're not, you may want to hang on to the *.txt files. On my system, I throw all the readmes that accumulate into a doc/ subdirectory. So:

     cd /usr/local/games/quake
     mkdir doc
     mv *.txt doc
     rm -f *

Now you're ready to install the Linux binaries.

2.3 Adding the Linux Binaries

Decide which of the three flavors of Quake you'd like to install:

Download the packages you want (see section Download the Necessary Files) and extract them to your Quake directory like so:

     cd /usr/local/games/quake
     tar -xzf XXXX-i386-unknown-linux2.0.tar.gz

2.4 Setting Permissions

Quake and QuakeWorld servers can be run by any user. The Quake clients, however, need access to your sound and graphics cards, which requires privileges that normal users don't have. One (bad) way to deal with this is to always run Quake as root. Responsible system administrators will cringe at this filthy suggestion. Making the Quake binaries setuid root is a more acceptable solution. Quake can then be run by regular users and still have the privileges it needs to access the sound and graphics devices. Setuid presents a security risk, though. A clever user could exploit a bug or security hole in Quake to gain root access to your system. Of course, if you don't run a multi-user system, this is may not be a big concern.

squake is the only Quake client that must be run with root permissions. With a little work, you can run the X and GL clients without setuid. Running X and GL games without setuid in the Tips and Tricks section tells how to make this work.

If you plan to run squake, make it setuid root with the following commands:

     chown root squake
     chmod 4755 squake

If you've decided it's ok to run quake.x11 and glquake setuid root on your system, you can repeat the above commands for these binaries as well.

2.5 X11 Quake

If you installed the X11 client, now's a good time to try it out. You may need to do further configuration for glquake and squake, but at this point quake.x11 should be ready to go.

     cd /usr/local/games/quake

If all is well, a small Quake window should appear with the first demo running in it. You should hear sound effects and possibly music, if your CD is in the drive. If any of this fails to occur, please see the Troubleshooting section for help.

2.6 SVGAlib Quake

Both squake and glquake require SVGAlib to run (glquake uses SVGAlib to process keyboard and mouse input, in case you're wondering). SVGAlib comes with most modern Linux distributions, and must be properly configured before squake or glquake will run correctly.

libvga.config is SVGAlib's configuration file. On most systems you'll find it in either /etc or /etc/vga. Make sure the mouse, monitor, and video card settings in this file are correct for your system. See the SVGAlib documentation for more details.

If you don't already have SVGAlib on your system, download it from the location mentioned in the files section above.

If you have a RedHat 5.x or other glibc-based Linux distribution, see Glibc, RedHat 5.x, Debian 2 considerations in the Troubleshooting/FAQs section for important information about compiling libraries for use with Quake. A precompiled libc5 SVGAlib binary is available at for those who don't want to deal with the hassle of compiling for libc5.

You should run squake from a virtual console. It won't run from X unless you're root when you start it. And running a game as the root user is something that should be avoided. So if you're in X, do a CTRL+ALT+F1, login and then:

     cd /usr/local/games/quake

Running SVGA and GL games from X in the Tips & Tricks section below explains how to launch SVGA and GL Quake from X without manually switching to a virtual console.

2.7 GLQuake

Hardware-accelerated OpenGL Quake is Quake the way God intended it to be. There is no substitute, and once you've experienced it there's no going back.

To run glquake, you need a 3D card with the Voodoo, Voodoo2 or Voodoo Rush graphics chipset on it. There are specific issues to be dealt with if you have a Voodoo Rush card, and I won't go into them now because frankly, I wouldn't know what I was talking about. A future version of this HOWTO will cover Rush issues (If somebody wants to write about Voodoo Rush issues, I'll gladly include it here).

The SVGAlib, Glide, and Mesa libraries must all be installed and configured properly on your system for glquake to work. The following sections will very briefly cover what you need to do to get them going.

Bernd Kreimeier's ( Linux 3Dfx HOWTO ( is good source for further information.

The 3dfx.glide.linux newsgroup on the 3dfx news server ( is another good source of information about the intersection of Linux, glide, Mesa and Quake.


glquake uses SVGAlib to get input from the mouse and keyboard, so you'll need to configure it as outlined in section SVGAlib Quake.

Glide ++

Glide is a library that provides an API for programming 3Dfx based cards. If you want the Mesa graphics library to use your 3Dfx card, you've gotta have it.

Do NOT use the Linux Glide library distributed at 3Dfx's web site. It's more than a year out of date. You're bound to have problems if you try to use it. The latest version of glide can always be found at Select the package(s) appropriate for your system, and install according to the instructions on the web page.

Note that unless you download the 3Dfx device driver package in addition to the Glide library, you will only be able to run Glide applications (like GLQuake) as root. Install the /dev/3dfx module and you can play GLQuake as a regular user. PentiumPro/Pentium II users have an additional incentive for downloading this driver: it can dramatically increase your framerate. The driver enables support for MTRRs, a memory-caching feature of these CPUs. See for a better explanation of this feature.

Once you have glide installed, try out the test program that comes with it. Remember this program: it's a good way to reset your display if you ever have a glide application (like GLQuake) crash and leave your screen switched off. NOTE: run this test from a VC, not X! It's possible for the test app to lose mouse and keyboard focus in X, and then you'll have no way of shutting it down.


Your screen should turn blue and prompt you to hit any key. After you press a key you should be returned to the prompt. 3dfx.glide.linux on 3dfx's news server ( is a great source of information for Linux glide-specific problems.


Once glide's installed, you need to install Mesa, a free OpenGL implementation by Brian Paul ( Luckily, you won't have to look far, because Mesa 2.6 is included with the QLQuake & QuakeWorld binaries. All you have to do is move it to the right place:

     cd /usr/local/games/quake
     cp /usr/local/lib

The RedHat distribution comes with a (IMO) broken configuration. /usr/local/lib is not part of's search path by default, so anything you install there won't get used. You can remedy the situation by adding the line /usr/local/lib to your /etc/ file, or including /usr/local/lib in your $LD_LIBRARY_PATH. Alternatively, you could install all new libraries someplace like /lib, but this approach seriously offends my tidy nature.

If you want to upgrade Mesa to a more recent version (Mesa 3.0 is the most recent version as of this writing), you can download the latest from If you have a RedHat 5.x or other glibc-based Linux distribution, see Glibc, RedHat 5.x, Debian 2 considerations in the Troubleshooting/FAQs section for important information about compiling libraries for Quake.

After you've built it according to the instructions, you will have to do two things:

Now switch to a VC (CTRL+ALT+F1) and start glquake.

     cd /usr/local/games/quake

2.8 Linux-Specific Command Line Options

This section covers command line options that are specific to the Linux versions of Quake. There are plenty of other Quake options, but they're beyond the scope of this HOWTO. Check out some of the sites listed in section General Quake Information for this kind of information.

-mem num

Specify memory in megabytes to allocate (default is 8MB, which should be fine for most needs).


Don't do any output to stdout. Use this if you don't want all the console output dumped to your terminal.

-mdev device

Mouse device, default is /dev/mouse

-mrate speed

Mouse baud rate, default is 1200

-cddev device

CD device, default is /dev/cdrom

-mode num

Use indicated video mode (squake only)


Don't initialize keyboard

-sndbits 8 or 16

Set sound bit sample size. Default is 16 if supported.

-sndspeed speed

Set sound speed. Usual values are 8000, 11025, 22051 and 44100. Default is 11025.


Set mono sound


Set stereo sound (default if supported)

2.9 QuakeWorld says it better than I could:

QuakeWorld is an Internet multi-player specific version of Quake. While the original version of Quake can be played over the Internet, modem users - the majority of players, had less than satisfactory play. Symptoms like excessive lag - actions actually happening much later than you did them; packet loss - the game would freeze and resume several seconds later; and various other difficulties plagued users. After realizing how many people played Quake on the internet, and how many wanted to, but couldn't due to the play being unsatisfactory, John Carmack of id Software decided to create a version of Quake that was optimized for the average modem Internet player. This Internet specific version does only 1 thing, play deathmatch games over a TCP/IP network such as the Internet. It has no support for solo play, and you can't do anything with out connecting to a special server.

You need the full, registered or retail version of Quake to play QuakeWorld, and a Linux QuakeWorld client. QuakeWorld clients come in the same flavors (X11, SVGAlib and Mesa) as normal Quake, but they're all bundled together in one package, so you only need to download one file. However, you've got four packages to choose from:

Install just one of these packages. Each contains the same files, they're just linked against different libraries. Redhat 5.x users should choose the the glibc rpm package. Users of glibc based systems without rpm support should use the glibc tar package. The libc5 rpm is for Redhat distributions prior to 5.0 and other distributions that use the rpm package format. The libc5 tar.gz package is for Slackware and everyone else.

See the Download the Necessary Files section for the location of the Linux Quakeworld files.

The prerequisites and configuration for these binaries are the same as for Quake, so refer to the previous sections for help on setting up SVGAlib or glide/Mesa.

Installing the RPM packages

Installation of the rpm packages should be as simple as:

     su root
     rpm -Uvh qwcl-xxxxx.i386.rpm

qwcl, glqwcl and glqwcl.glx will be installed setuid root so that they can access the graphics devices on your system. The X and GL clients can be run without root privileges if you follow the instructions in Running X and GL games without setuid below.

Rpm may complain that it can't find The Glide library is only necessary if you have a 3Dfx card and want to run QuakeWorld in GL mode (glqwcl). If you don't plan to use the GL mode, you can override the glide dependency with the --nodeps option:

     su root
     rpm -Uvh qwcl-xxxxx.i386.rpm --nodeps

Installing the tar.gz packages

To install, just untar the file in your Quake directory. Do it as root so the proper file permissions get set:

     cd /usr/local/games/quake
     su root
     tar -xzf qwcl2.21-i386-unknown-linux2.0.tar.gz

qwcl, glqwcl and glqwcl.glx will be installed setuid root so that they can access the graphics devices on your system. The GL and X clients can be run without root privileges if you follow the instructions in Running X and GL games without setuid below.

Running QuakeWorld

Once QuakeWorld is installed alongside your Quake files, you can start it up like:

     ./qwcl +connect some.server.address

See section Related Software for info about some nifty front ends for QuakeWorld that make finding servers easy.

2.10 Servers

Most, if not all, existing information about running a DOS/Windows QW server is equally applicable to running a Linux server.

To start a QuakeWorld server, simply do:


The official QuakeWorld server manual lives at

2.11 Mods & Addons

One of the very cool things about the Quake games is that the authors made them easily extensible. End users can create their own levels, add new weapons or monsters, or even completely change the rules of the game.

Capture the Flag

This is my favorite variation of both Quake and Quake 2. Instead of just running around and killing everyone you meet (which definitely has its merits, don't get me wrong!), CTF is team-based and more strategic. Dave 'Zoid' Kirsch, also the maintainer of the Linux Quake ports, created this mod.

Everything you need to know about CTF can be found at You need to play. To install the client piece of CTF, simply create a directory called ctf in your Quake directory and unzip the file there. The accompanying readme.txt file is chock full of good information.

     cd /usr/local/games/quake
     mkdir ctf
     cd ctf
     unzip -L /wherever/you/put/it/

For information on running a CTF server, see the web pages mentioned above.

Mission Packs

Activision released two add-on packs of extra levels for Quake, Scourge of Armagon and Dissolution of Eternity.

Quake Tools

Anybody care to contribute some info about qcc, bsp and all that?

Next Previous Contents

Hosting by: Hurra Communications Ltd.
Generated: 2007-01-26 17:57:55