Linux Zone

| HowTo Linux Zone | Linux Zone Home | E-Mail Me |

The Linux XFree86 HOWTO


by Eric S. Raymond

v5.12, 12 May 1999

This document describes how to obtain, install, and configure version

3.3 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

4.2 Troubleshooting

4.3 Custom Configuration

4.4 Using 16-bit Color

5. Running XFree86

5.1 Terms of Use

5.2 Acknowledgements

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

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 at

<http://metalab.unc.edu/LDP>. You can find the latest, up-to-date

version of this document there, as

<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

comp.os.linux.help and and news.answers <news: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://metalab.unc.edu/LDP/HOWTO/XFree86-HOWTO.html>.

 

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,

<http://metalab.unc.edu/LDP/HOWTO/XFree86-Video-Timings-HOWTO.html>.

(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

 

XFree86 3.3.3 presently supports the following chipsets: 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.

 

Ark Logic

ARK1000PV, ARK1000VL, ARK2000PV, ARK2000MT

 

Alliance

AP6422, AT24

 

ATI

18800, 18800-1, 28800-2, 28800-4, 28800-5, 28800-6, 68800-3,

68800-6, 68800AX, 68800LX, 88800GX-C, 88800GX-D, 88800GX-E,

88800GX-F, 88800CX, 264CT, 264ET, 264VT, 264GT, 264VT-B, 264VT3,

264GT-B, 264GT3 (this list includes the Mach8, Mach32, Mach64,

3D Rage, 3D Rage II and 3D Rage Pro)

 

Avance Logic

ALG2101, ALG2228, ALG2301, ALG2302, ALG2308, ALG2401

 

Chips & Technologies

65520, 65525, 65530, 65535, 65540, 65545, 65546, 65548, 65550,

65554, 65555, 68554, 69000, 64200, 64300

 

Cirrus Logic

CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428, CLGD5429,

CLGD5430, CLGD5434, CLGD5436, CLGD5440, CLGD5446, CLGD5462,

CLGD5464, CLGD5465, CLGD5480, CLGD6205, CLGD6215, CLGD6225,

CLGD6235, CLGD6410, CLGD6412, CLGD6420, CLGD6440, CLGD7541(*),

CLGD7543(*), CLGD7548(*), CLGD7555(*)

 

Cyrix

MediaGX, MediaGXm

 

Compaq

AVGA

 

Digital Equipment Corporation

TGA

 

Epson

SPC8110

 

Genoa

GVGA

 

IBM

8514/A (and true clones), XGA-2

 

IIT

AGX-014, AGX-015, AGX-016

 

Matrox

MGA2064W (Millennium), MGA1064SG (Mystique and Mystique 220),

MGA2164W (Millennium II PCI and AGP), G100, G200

 

MX MX68000(*), MX680010(*)

 

 

NCR

77C22(*), 77C22E(*), 77C22E+(*)

 

NeoMagic

2200, 2160, 2097, 2093, 2090, 2070

 

Number Nine

I128 (series I and II), Revolution 3D (T2R)

 

NVidia/SGS Thomson

NV1, STG2000, RIVA128, Riva TNT

 

OAK

OTI067, OTI077, OTI087

 

RealTek

RTG3106(*)

 

Rendition

V1000, V2x00

 

S3 86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C864, 86C964,

86C732, 86C764, 86C765, 86C767, 86C775, 86C785, 86C868, 86C968,

86C325, 86C357, 86C375, 86C375, 86C385, 86C988, 86CM65, 86C260

 

SiS

86C201, 86C202, 86C205, 86C215, 86C225, 5597, 5598, 6326

 

3DLabs

GLINT 500TX, GLINT MX, Permedia, Permedia 2, Permedia 2v

 

Tseng

ET3000, ET4000AX, ET4000/W32, ET4000/W32i, ET4000/W32p, ET6000,

ET6100

 

Trident

TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000,

TVGA9000i, TVGA9100B, TVGA9200CXR, Cyber9320(*), TVGA9400CXi,

TVGA9420, TGUI9420DGi, TGUI9430DGi, TGUI9440AGi, TGUI9660XGi,

TGUI9680, ProVidia 9682, ProVidia 9685(*), Cyber 9382, Cyber

9385, Cyber 9388, 3DImage975, 3DImage985, Cyber 9397, Cyber 9520

 

Video 7/Headland Technologies

HT216-32(*)

 

Weitek

P9000, P9100

 

Western Digital/Paradise

PVGA1

 

Western Digital

WD90C00, WD90C10, WD90C11, WD90C24, WD90C24A, WD90C30, WD90C31,

WD90C33

(*) Note, chips marked in this way have either limited support or the

drivers for them are not actively maintained.

All of the above are supported in both 256 color, and some are

supported in mono and 16 color modes, and some are supported an higher

color depths.

The monochrome server also supports generic VGA cards, using 64k of

video memory in a single bank, the Hercules monochrome card, the

Hyundai HGC1280, Sigma LaserView, Visa and Apollo monochrome cards.

The VGA16 server supports memory banking with the ET4000, Trident,

ATI, NCR, OAK and Cirrus 6420 chipsets allowing virtual display sizes

up to about 1600x1200 (with 1MB of video memory). For other chipsets

the display size is limited to approximately 800x600.

You can find an up-to-date list of supported cards at

http://www.xfree86.org/3.3.3/README3.html

<http://www.xfree86.org/3.3.3/README3.html>.

Video cards using these chipsets are supported on all bus types,

including 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 distribution of XFree86 can be found on a number of

FTP sites. On the XFree86 site it's under

<ftp://ftp.xfree86.org/pub/XFree86/current/binaries/>.

Before doing anything else, download and run the `preinst.sh' shell

script first. This may tell you about prerequisites you'll need to

have in place before contibuing your installation.

If you are downloading XFree86 directly, this table lists the files in

the XFree86-3.3 distribution.

One of the following servers is required:

X8514.tgz

Server for 8514-based boards.

 

XAGX.tgz

Server for AGX-based boards.

 

XI128.tgz

Server for the Number Nine Imagine 128.

 

XMach32.tgz

Server for Mach32-based boards.

 

XMach64.tgz

Server for Mach64-based boards.

 

XMach8.tgz

Server for Mach8-based boards.

 

XMono.tgz

Server for monochrome video modes.

 

XP9K.tgz

Server for P9000-based boards.

 

XS3.tgz

Server for S3-based boards.

 

XS3V.tgz

Server for the S3 ViRGE and ViRGE/VX (considered beta)

 

XSVGA.tgz

Server for Super VGA-based boards.

 

 

XW32.tgz

Server for ET4000/W32-based boards.

 

If you don't know which one to take, take the VGA16 server, XVG16.tgz.

You want to download this one anyway, because you'll need it to run

the auto-configuration utility in the next step.

All of the following files are required:

preinst.sh

Pre-installation script

 

postinst.sh

Post-installation script

 

Xbin.tgz

The rest of the X11R6 binaries.

 

Xcfg.tgz

Config files for xdm, xinit and fs.

 

Xdoc.tgz

Documentation.

 

Xman.tgz

Manual pages.

 

Xfnts.tgz

75dpi, misc and PEX fonts

 

Xlib.tgz

Shared X libraries and support files.

 

Xset.tgz

XF86Setup utility.

 

XVG16.tgz

Server for VGA/EGA-based boards.

 

The following files are optional:

Xf100.tgz

100dpi fonts

 

Xfcyr.tgz

Cyrillic fonts

 

Xfnon.tgz

Other fonts (Chinese, Japanese, Korean, Hebrew)

 

Xfscl.tgz

Scalable fonts (Speedo and Type1)

Xfsrv.tgz

Font server and config files

 

Xprog.tgz

X header files, config files and compile-time libs

 

Xlkit.tgz

X server LinkKit

 

Xlk98.tgz

PC98 X server LinkKit

 

Xnest.tgz

Nested X server

 

Xprt.tgz

X print server

 

Xvfb.tgz

Virtual framebuffer X server

 

Xps.tgz

PostScript version of the documentation

 

Xhtml.tgz

HTML version of the documentation

 

The XFree86 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; the

3.2/3.3 release made the process nearly trivial. All you do is fire

up the program XF86Setup.

This program depends on the fact that all new PC hardware these days

ships with EGA/VGA capable monitors. It invokes the VGA16 server and

uses it to bring up X in a lowest-common-denominator 640x480 mode.

Then it runs an interactive program that walks you through a series of

five configuration panels -- mouse, keyboard, (video) card, monitor,

and `other' (miscellaneous server options). The whole process is quite

painless.

(If you're running Red Hat Linux, you may see a different program

called xf86config. This works fairly similarly to XF86Setup but does

not itself use an X interface and the VGA16 server.)

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.

If you're not sure of your monitor type, you can try the listed ones

in succession. Work your way from top down (upper choices involve

lower dot-clock speeds and are less demanding on the hardware). Back

off if you get hash or a seriously distorted picture. Minor

distortions (picture slightly too large, slightly too small, or

slightly off-center) are no problem; you'll get a chance to correct

those immediately by fine-tuning the mode.

And, when the program brings up xvidtune to allow you to tweak your

video mode, don't let the initial warning box make you nervous.

Modern multisync monitors (unlike their fixed-frequency predecessors)

are not easy to damage this way.

XF86Config may assume that your mouse device is /dev/mouse. If you

find this doesn't work, you may need to link /dev/mouse to whatever

/dev/ca[01] the mouse is on. If you find that XFree86 gives you a

"mouse busy" error when gpm is running, you may need to link to

/dev/ttyS[01] instead.

The configuration process operates by selecting a server corresponding

to to the general type of your video card (such as XF86_VGA16,

XF86_Mach64, or XF86_S3) and configuring an XF86Config that the server

will read on startup to get specific parameters for your installation.

The location of XF86Config varies depending on your OS, but one place

to look for it is /etc/X11.

On older versions of XFree86, XF86Setup links the `X' command directly

to the chosen server. In recent versions, `X' is instead linked to a

set-user-id wrapper program called Xwrapper. The idea is that all the

setuid root stuff gets localized in Xwrapper so the server doesn't

have to run setuid root.

 

 

4.2. Troubleshooting

 

Occasionally, something will not be quite right when you initially

fire up the X server. This is almost always caused by a problem in

your configuration file. Usually, the monitor timing values are off,

or the video card dot clocks set incorrectly. Minor problems can be

fixed with xvidtune; a really garbled screen usually means you need to

go back into XF86Setup and choose a less capable monitor type.

If your display seems to roll, or the edges are fuzzy, this is a clear

indication that the monitor timing values or dot clocks are wrong.

Also be sure that you are correctly specifying your video card

chipset, as well as other options for the Device section of

XF86Config. Be absolutely certain that you are using the right X

server and that /usr/X11R6/bin/X is a symbolic link to this server.

If all else fails, try to start X ``bare''; that is, use a command

such as:

 

X > /tmp/x.out 2>&1

 

 

 

You can then kill the X server (using the ctrl-alt-backspace key com&SHY;

bination) and examine the contents of /tmp/x.out. The X server will

report any warnings or errors---for example, if your video card

doesn't have a dot clock corresponding to a mode supported by your

monitor.

Remember that you can use ctrl-alt-numeric + and ctrl-alt-numeric - to

switch between the video modes listed on the Modes line of the Screen

section of XF86Config. If the highest resolution mode doesn't look

right, try switching to lower resolutions. This will let you know, at

least, that those parts of your X configuration are working correctly.

Also, check the vertical and horizontal size/hold knobs on your

monitor. In many cases it is necessary to adjust these when starting

up X. For example, if the display seems to be shifted slightly to one

side, you can usually correct this using the monitor controls.

The USENET newsgroup comp.windows.x.i386unix is devoted to discussions

about XFree86, as is comp.os.linux.x. It might be a good idea to

watch that newsgroup for postings relating to your video

configuration---you might run across someone with the same problems as

your own.

 

4.3. Custom Configuration

You will need to hand-hack your X configuration to get optimal

performance if your monitor can support 1600x1200 -- the highest

canned resolution XF86Setup supports is 1280x1024.

If you want to hand-hack your video configuration for this or any

other reason, go see the LDP's XFree86 Video Timings HOWTO,

<http://metalab.unc.edu/LDP/HOWTO/XFree86-Video-Timings-HOWTO.html>.

(This is the up-to-date HTML version of XFree86's `Videomodes.doc'

file.)

 

 

 

 

4.4. Using 16-bit Color

 

By default, X uses 8-bit color depth giving 256 colors. To circumvent

this restriction, many applications allocate their own colormaps,

resulting in sudden color jumps when the cursor moves between two

windows each having a color map of its own. The Arena WWW browser does

it this way.

If you want to use advanced graphic applications 256 colors may be not

sufficient. You may need to go to 16-bit color depth (65,536 colors).

But beware, not all applications will work with 16bit colors.

You can use 16bit color depth with 65K different colors simply by

starting X with

 

______________________________________________________________________

startx -- -bpp 16

______________________________________________________________________

 

 

or putting

 

______________________________________________________________________

exec X :0 -bpp 16

______________________________________________________________________

 

 

into your .xserverrc file. In order for this to work, however, you

need to have a

______________________________________________________________________

screen

______________________________________________________________________

 

 

 

______________________________________________________________________

DefaultColorDepth 16

______________________________________________________________________

 

 

If you're using xdm, you may need to change the Xservers file, which

is probably located in /etc/X11/xdm/. A typical configuration has

just one uncommented line, looking something like

 

______________________________________________________________________

:0 local /usr/X11R6/bin/X

______________________________________________________________________

 

 

Add

______________________________________________________________________

-bpp 16

______________________________________________________________________

 

______________________________________________________________________

:0 local /usr/X11R6/bin/X -bpp 16

______________________________________________________________________

 

 

Also, you'll need to add to the `screen' section of your X

configuration a Display part with a Depth value of 16. Generally you

can just duplicate the 8-bit Display section and change the Depth

field.

More colors makes your video card transfer more data during the same

time. If your video card cannot cope, then either the resolution has

or the refresh rate has to be reduced. By default, XFree reduces the

resolution. If you want to keep the resolution and reduce the refresh

rate, you must insert a new appropriate Modeline into your XF86Config

file which defines that resolution with a lower refresh rate. For

instance replace the old value

 

Modeline "1024x768" 75 1024 1048 1184 1328 768 771 777 806 -hsync -vsync

 

 

 

with

 

Modeline "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync.

 

 

 

The magic numbers 75 and 65 are the respective clock rates which you

find reported by X in your .X.err file. Consult the monitors file in

the XF86 documentation for Modelines suitable to the maximum clock

rate your video card can deliver under 16bit color depth.

 

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.

 

5.1. Terms of Use

This document is copyright 1996 by Eric S. Raymond. You may use,

disseminate, and reproduce it freely, provided you:

 

· Do not omit or alter this copyright notice.

· Do not omit or alter the version number and date.

· Do not omit or alter the document's pointer to the current WWW

version.

· Clearly mark any condensed or altered versions as such.

These restrictions are intended to protect potential readers from

stale or mangled versions. If you think you have a good case for an

exception, ask me.

 

5.2. Acknowledgements

This document was originated by Matt Welsh in the dim and backward

abysm of time. Thanks, Matt!

6. Translations

 

· Italian <http://www.pluto.linux.it/ildp/HOWTO/XFree86-HOWTO.html>

· Slovenian <http://www.lugos.si/delo/slo/HOWTO-sl/XFree86-HOWTO-

sl.html>

· Croatian <http://meta.mioc.hr/XFree86-KAKO.html>

· Dutch <http://www.nl.linux.org/doc/HOWTO/>


| HowTo Linux Zone | Linux Zone Home | E-Mail Me |

Copyright 1999

Linux Zone