No Longer Needed

As of a while ago, Quake 4 should work "out of the box" on an amd64 Debian system running Etch or Sid. Simply "apt-get install ia32-libs" if you haven't done so already.

I've left the obsolete instructions below in case they have any use.

debian-amd64 Quake 4 howto

I ran into all sorts of problems in the process of getting Quake 4 working on my debian-amd64 system, so I decided to document the steps I had to go through.

I use sid (unstable). At this point, the howto should also apply exactly to etch (testing). I've tried to note what steps are different for sarge (stable), but I haven't tested with sarge.

Please send me updates and corrections. My address is at the bottom of this page.

Installation Instructions

Step 1: Install the game

Follow the instructions on the official website:
http://zerowing.idsoftware.com/linux/quake4/
Try running the game. If it works, then you can safely ignore the rest of this document.

Step 2 (alternate 1): Set up ia32-libs

I have a functioning i386 chroot, but I'd like to get rid of it. I try to do as much as I can with ia32-libs.

Quake 4 requires SDL libraries for sound; however, the standard ia32-libs deb doesn't include SDL, so that means either building a custom ia32-libs package or manually installing SDL to /emul/ia32-linux. Pick one or the other; I prefer building my own ia32-libs.

Building a custom ia32-libs deb

Advantages
Disadvantages

The ia32-libs source is 205MB of sources and debs that are a little outdated by now. For the convenience of dial-up users, I've made a stripped tar.gz so nobody has to download more than they need to: ia32-libs-1.6.q4-stripped.tar.gz. Download the source and extract to your usual source directory (/usr/local/src or something). Further installation instructions are in the README.

Manually installing SDL from i386 debs

Advantages
Disadvantages

First, download the i386 versions of libasound2 and libsdl1.2debian-alsa (or libsdl1.2debian-oss). Then, extract them to /emul/ia32-libs.

dpkg -X libasound2_*i386.deb /emul/ia32-linux/
dpkg -X libsdl1.2debian-alsa_*i386.deb /emul/ia32-linux/

Last, run 'ldconfig'.

Step 2 (alternate 2): Prepare your chroot

If you are using a chroot, you have to make sure you have the required libraries installed. quake4 will tell you when it's missing a library each time you run it.

Quake 4 will not run with libsdl1.2debian-all. See "Debian SDL Confusion" below.

Step 3: Run the game

Try running quake4. If you have problems, check the "Problems and Fixes" section below. If you have a problem and a fix I haven't listed, send me an email. My address is at the bottom of this page. If you have a problem but don't know the fix, you can try sending me an email. I will redirect you to the debian-amd64 mailing list if I don't know the answer.

Debian SDL Confusion

Quake 4 segfaults when libsdl1.2debian-all is installed (on both i386 and amd64). Installing libsdl1.2debian-alsa or libsdl1.2debian-oss instead fixes the problem. The -arts, -esd, and -nas packages may or may not work (I haven't tried).

At this point, I don't know if the segfault is a bug in Quake 4 or in Debian's libSDL. When this ends up getting resolved, I will submit a wishlist bugreport against ia32-libs asking for libsdl1.2debian-all to be included. The other SDL packages conflict with each other and wouldn't be a good general solution.

Problems and Fixes

Problem:

After installing ia32-libs and running quake4, I get the following line:
/usr/local/bin/quake4: line 6: ./quake4.x86: No such file or directory

Fix:

Old versions of ia32-libs seem to remove the symlink to the 32-bit dynamic linker. Re-create it as root:
ln -s /emul/ia32-linux/lib/ld-linux.so.2 /lib

Problem:

quake4 segfaults. Near the end of the output is the following line:
copy gamex86.so to /home/bugfood/.quake4/q4base/gamex86.so

Fix:

Do you have libsdl1.2debian-all installed in your chroot or ia32-libs? See the "Debian SDL Confusion" above.

Problem:

quake4 quits at startup with the following line:
Sys_Error: SDL_GL_LoadLibrary libGL.so.1 failed: Could not load OpenGL library

Fix:

Do you have an nvidia card? If so, you need to either install nvidia-glx-ia32 (if you use ia32-libs) or nvidia-glx (into your chroot if you use one).

Resources

Id Software official Quake 4 page: http://zerowing.idsoftware.com/linux/quake4/
Debian AMD64 howto: https://alioth.debian.org/docman/view.php/30192/21/debian-amd64-howto.html
Debian ia32-libs development page: http://packages.qa.debian.org/i/ia32-libs.html
debian-amd64 mailing list thread: http://lists.debian.org/debian-amd64/2005/10/msg00683.html
linuxgames.com Quake 4 discussion: http://ppj.telefragged.com/news/feedback.php?identiferID=7972&action=flatview
Gentoo Quake 4 forum thread: http://forums.gentoo.org/viewtopic-t-395036.html


Revision History:
2005-10-24 Wrote initial version.
2005-10-25 Added instructions for extracting i386 debs to /emul/ia32-linux (thanks to Robert Isaac).
Added revision history.
2005-11-16 Added ia32-libs-1.5-stripped.
2006-03-26 Added ia32-libs-1.6.q4-stripped.
ia32-libs no longer removes /lib/ld-linux.so.6
2006-08-24 Added "obsolete" notice.
2006-09-12 Converted to XHTML 1.0

2006-09-12
Corey Hickey, bugfood-c [at] fatooh [dot] org
other stuff