The Linux XFree86 HOWTO

Eric Steven Raymond

[http://www.tuxedo.org/~esr/] Thyrsus Enterprises

    esr@thyrsus.com
    

Copyright © 2000 by Eric S. Raymond

$Date: 2001/09/09 08:29:29 $
Revision History                                                             
Revision 7.2           2001-09-09            Revised by: esr                 
XFree86 site has changed directory structure.                                
Revision 7.1           2001-08-09            Revised by: esr                 
Configuration has changed, and is now much simpler.                          
Revision 7.0           2000-08-21            Revised by: esr                 
First DocBook version.                                                       


This document describes how to obtain, install, and configure version 4.1.0
of the XFree86 version of the X Window System (X11R6) for Linux systems. It
is a step-by-step guide to configuring XFree86 on your system.

-----------------------------------------------------------------------------
Table of Contents
1. Introduction
    1.1. Other sources of information
    1.2. New versions of this document
    1.3. Feedback and Corrections
   
   
2. Hardware requirements
3. Installing XFree86
4. Configuring XFree86
    4.1. Normal Configuration
   
   
5. Running XFree86
6. Translations

-----------------------------------------------------------------------------
1. Introduction

The X Window System is a large and powerful (some might say excessively large
and overly complex) graphics environment for UNIX systems. The original X
Window System code was developed at MIT; commercial vendors have since made X
the industry standard for UNIX platforms. Virtually every UNIX workstation in
the world runs some variant of the X Window system.

A freely redistributable port of the MIT X Window System version 11, release
6 (X11R6) for 80386/80486/Pentium UNIX systems has been developed by a team
of programmers originally headed by David Wexelblat <dwex@XFree86.org>. The
release, known as XFree86, is available for System V/386, 386BSD, and other
x86 UNIX implementations, including Linux. It includes all of the required
binaries, support files, libraries, and tools.

Complete information on XFree86 is available at the XFree86 web site, [http:/
/www.XFree86.org] http://www.XFree86.org.

In this document, we'll give a step-by-step description of how to install and
configure XFree86 for Linux, but you will have to fill in some of the details
yourself by reading the documentation released with XFree86 itself. (This
documentation is discussed below.) However, using and customizing the X
Window System is far beyond the scope of this document---for this purpose you
should obtain one of the many good books on using the X Window System.
-----------------------------------------------------------------------------

1.1. Other sources of information

If you have never heard of Linux before, there are several sources of basic
information about the system. The best place to find these is at the Linux
Documentation Project home page. You can find the latest, up-to-date version
of this document there, as [http://metalab.unc.edu/LDP/HOWTO/
XFree86-HOWTO.html] http://metalab.unc.edu/LDP/HOWTO/XFree86-HOWTO.html.
-----------------------------------------------------------------------------

1.2. New versions of this document

New versions of the Linux XFree86 HOWTO will be periodically posted to [news:
comp.os.linux.help] comp.os.linux.help and [news:comp.os.linux.announce]
comp.os.linux.announce and [news:news.answers] news.answers. They will also
be uploaded to various Linux WWW and FTP sites, including the LDP home page.

You can always view the latest version of this on the World Wide Web via the
URL [http://www.linuxdoc.org/HOWTO//XFree86-HOWTO.html] http://
www.linuxdoc.org/HOWTO//XFree86-HOWTO.html.

This document was originally written by Matt Welsh in the dim and backward
abysm of time. Thanks, Matt!
-----------------------------------------------------------------------------

1.3. Feedback and Corrections

If you have questions or comments about this document, please feel free to
mail Eric S. Raymond, at <esr@thyrsus.com>. I welcome any suggestions or
criticisms. If you find a mistake with this document, please let me know so I
can correct it in the next version. Thanks.

Please do not mail me questions about how to make your video card and monitor
work with X. This HOWTO is intended to be a rapid, painless guide to normal
installation using the new interactive configurator. If you run into
problems, browse the XFree86 Video Timings HOWTO. (This is the up-to-date
HTML version of XFree86's `Videomodes.doc' file.) That document tells
everything I know about configuration troubleshooting. If it can't help you,
I can't either.
-----------------------------------------------------------------------------

2. Hardware requirements

You can find an up-to-date list of supported cards and chipset types at
[http://www.xfree86.org/4.1.0/Status.html] the 4.1.0 status page.

The documentation included with your video adaptor should specify the chipset
used. If you are in the market for a new video card, or are buying a new
machine that comes with a video card, have the vendor find out exactly what
the make, model, and chipset of the video card is. This may require the
vendor to call technical support on your behalf; in general vendors will be
happy to do this. Many PC hardware vendors will state that the video card is
a ``standard SVGA card'' which ``should work'' on your system. Explain that
your software (mention Linux and XFree86!) does not support all video
chipsets and that you must have detailed information.

You can also determine your videocard chipset by running the SuperProbe
program included with the XFree86 distribution. This is covered in more
detail below.

Supported video cards will work with all bus types, including ISA and VLB and
PCI.

One problem faced by the XFree86 developers is that some video card
manufacturers use non-standard mechanisms for determining clock frequencies
used to drive the card. Some of these manufacturers either don't release
specifications describing how to program the card, or they require developers
to sign a non-disclosure statement to obtain the information. This would
obviously restrict the free distribution of the XFree86 software, something
that the XFree86 development team is not willing to do. For a long time, this
has been a problem with certain video cards manufactured by Diamond, but as
of release 3.1 of XFree86, Diamond has started to work with the development
team to release free drivers for these cards.

The suggested setup for XFree86 under Linux is a 486 or better with at least
8 megabytes of RAM, and a video card with a chipset listed above. For optimal
performance, we suggest using an accelerated card, such as an S3-chipset
card. You should check the documentation for XFree86 and verify that your
particular card is supported before taking the plunge and purchasing
expensive hardware.

As a side note, the personal Linux system of Matt Welsh (this FAQ's
originator) was a 486DX2-66, 20 megabytes of RAM, equipped with a VLB S3-864
chipset card with 2 megabytes of DRAM. He ran X benchmarks on this machine as
well as on Sun Sparc IPX workstations. The Linux system was roughly 7 times
faster than the Sparc IPX (for the curious, XFree86-3.1 under Linux, with
this video card, runs at around 171,000 xstones; the Sparc IPX at around
24,000). In general, XFree86 on a Linux system with an accelerated SVGA card
will give you much greater performance than that found on commercial UNIX
workstations (which usually employ simple framebuffers for graphics).

Your machine will need at least 4 megabytes of physical RAM, and 16 megabytes
of virtual RAM (for example, 8 megs physical and 8 megs swap). Remember that
the more physical RAM that you have, the less that the system will swap to
and from disk when memory is low. Because swapping is inherently slow (disks
are very slow compared to memory), having 8 megabytes of RAM or more is
necessary to run XFree86 comfortably. 16 is better. A system with 4 megabytes
of physical RAM could run much (up to 10 times) more slowly than one with 8
megs or more.
-----------------------------------------------------------------------------

3. Installing XFree86

It's quite likely that you obtained XFree86 as part of a Linux distribution,
in which case downloading the software separately is not necessary. Or you
may be able to get RPM binary packages built for your machine, in which case
you can just install those using rpm(1). In either case you can skip this the
rest of this section.

The Linux binary distributions of XFree86 can be found on a number of FTP
sites. On the XFree86 site they are [ftp://ftp.xfree86.org/pub/XFree86/4.1.0/
binaries/] here. You will want either the Linux-axp-glibc21,
Linux-ix86-glibc20, or Linux-ix86-glibc21 subdirectories, depending on your
processor type (axp=alpha, ix86=Intel 80x86) and Gnu C library version.

Before doing anything else, download and run the `Xinstall.sh' shell script
first. This may tell you about prerequisites you'll need to have in place
before continuing your installation. Complete instructions for installing the
XFree86 binary distribution are at [http://www.xfree86.org/4.1.0/
Install2.html] http://www.xfree86.org/4.1.0/Install2.html.

The binary directory should contain release notes for the current version in
RELNOTES. Consult those for installation details.

All that is required to install XFree86 is to obtain the above files, create
the directory /usr/X11R6 (as root), and unpack the files from /usr/X11R6 with
a command such as:
+---------------------------------------------------------------------------+
|gzip -dc Xbin.tgz | tar xfB -                                              |
+---------------------------------------------------------------------------+

Remember that these tar files are packed relative to /usr/X11R6, so it's
important to unpack the files there.

You need to make sure that /usr/X11R6/bin is on your path. This can be done
by editing your system default /etc/profile or /etc/csh.login (based on the
shell that you, or other users on your system, use). Or you can simply add
the directory to your personal path by modifying .bashrc or .cshrc, based on
your shell.

You also need to make sure that /usr/X11R6/lib can be located by ld.so, the
runtime linker. To do this, add the line:
+---------------------------------------------------------------------------+
|/usr/X11R6/lib                                                             |
+---------------------------------------------------------------------------+

to the file /etc/ld.so.conf, and run /sbin/ldconfig, as root.
-----------------------------------------------------------------------------

4. Configuring XFree86

4.1. Normal Configuration

Configuring XFree86 to use your mouse, keyboard, monitor, and video card
correctly used to be something of a black art, requiring extensive
hand-hacking of a complex configuration file. No more; recent releases have
made the process nearly trivial. It simplifies matters a lot that there are
no longer separate servers for different kinds of cards, just modules loaded
by a common server.

If you're enabling X as you intall a Linux distribution, the distribution
install script will ask the few questions needed to configure X. Otherwise,
all you need do to configure it is fire up the command XFree86 -configure.

Both methods depend on the fact that all new PC hardware these days ships
with monitors that can tell X what their capabilities are. When invoked in
this mode, X does that query and also polls your hardware for the presence of
a mouse and keyboard. It then writes out a configuration file thar is used by
later runs of X.

One minor point to keep in mind is that, if you're like most people using a
current PC, your keyboard is actually what XF86Setup calls `Generic 102-key
PC (intl)' rather than the default `Generic 101-key PC'. If you pick the
default (101) the key cluster on the extreme right of your keyboard (numeric
keypad and friends) may stop working.
-----------------------------------------------------------------------------

5. Running XFree86

With your XF86Config file configured, you're ready to fire up the X server
and give it a spin. First, be sure that /usr/X11R6/bin is on your path.

The command to start up XFree86 is
+---------------------------------------------------------------------------+
|startx                                                                     |
+---------------------------------------------------------------------------+

This is a front-end to xinit (in case you're used to using xinit on other
UNIX systems).

This command will start the X server and run the commands found in the file
.xinitrc in your home directory. .xinitrc is just a shell script containing X
clients to run. If this file does not exist, the system default /usr/X11R6/
lib/X11/xinit/xinitrc will be used.

A standard .xinitrc file looks like this:
+---------------------------------------------------------------------------+
|#!/bin/sh                                                                  |
|                                                                           |
|xterm -fn 7x13bold -geometry 80x32+10+50 &                                 |
|xterm -fn 9x15bold -geometry 80x34+30-10 &                                 |
|oclock -geometry 70x70-7+7 &                                               |
|xsetroot -solid midnightblue &                                             |
|                                                                           |
|exec fvwm2                                                                 |
+---------------------------------------------------------------------------+

This script will start up two xterm clients, an oclock, and set the root
window (background) color to midnightblue. It will then start up fvwm2, the
window manager. Note that fvwm2 is executed with the shell's exec statement;
this causes the xinit process to be replaced with fvwm2. Once the fvwm2
process exits, the X server will shut down. You can cause fvwm2 to exit by
using the root menus: depress mouse button 1 on the desktop background --
this will display a pop up menu which will allow you to Exit Fvwm2.

Be sure that the last command in .xinitrc is started with exec, and that it
is not placed into the background (no ampersand on the end of the line).
Otherwise the X server will shut down as soon as it has started the clients
in the .xinitrc file.

Alternately, you can exit X by pressing ctrl-alt-backspace in combination.
This will kill the X server directly, exiting the window system.

The above is a very, very simple desktop configuration. Many wonderful
programs and configurations are available with a bit of work on your .xinitrc
file.

If you are new to the X Window System environment, we strongly suggest
picking up a book such as The Joy of X: An Overview of the X Window System by
Niall Mansfield (Addison-Wesley 1993, ISBN 0201-565129). Using and
configuring X is far too in-depth to cover here. See the man pages for xterm,
oclock, and fvwm2 for clues on getting started.
-----------------------------------------------------------------------------

6. Translations

  * [http://www.pluto.linux.it/ildp/HOWTO/XFree86-HOWTO.html] Italian
   
  * [http://www.lugos.si/delo/slo/HOWTO-sl/XFree86-HOWTO-sl.html] Slovenian
   
  * [http://meta.mioc.hr/XFree86-KAKO.html] Croatian
   
  * [http://www.nl.linux.org/doc/HOWTO/] Dutch
   
  * [http://www.ppk.ini.hu/texts/XFree86-HOGYAN/XFree86-HOGYAN.html]
    Hungarian
   

