The XFree86 Server

Red Hat Linux uses XFree86 4 as the base X Window System, which includes the various necessary X libraries, fonts, utilities, documentation, and development tools. To provide maximum compatibility with older hardware, as well as hardware that isn't currently well supported by XFree86 4, Red Hat Linux also provides the older XFree86 3 Server packages. Both XFree86 Server versions differ in design methodologies, and as such vary in features as well as configuration details.

The primary X server (XFree86 4) includes many cutting edge XFree86 technology enhancements such as hardware 3D acceleration support, the XRender extension for anti-aliased fonts, a modular driver based design, support for modern video hardware and input devices, and many other features.

In contrast, the XFree86 3 server packages are standalone non-modular X servers, each of which act as a display driver for a select set of specific video hardware. If you're using an XFree86 3 server, you need to have installed the specific X server for your particular video card. These older servers do not support many features found only in the newer XFree86 4 servers, and are only included for compatibility. The XFree86 3 backward compatibility servers are now deprecated and will eventually be removed from some future release of Red Hat Linux.

The Red Hat Linux installation program will install the base components of XFree86, any optional XFree86 packages you may have chosen to install, the XFree86 4 X server, and any XFree86 3 X server packages that may be needed for your hardware.

The X Window system resides primarily in two locations in the filesystem.

/usr/X11R6

A directory containing X client binaries (the bin directory), assorted header files (the include directory), libraries (the lib directory), manual pages (the man directory), and various other X documentation (the doc directory).

/etc/X11

The /etc/X11 directory heirarchy contains all of the configuration files for the various components that make up the X Window System. This includes configuration files for the X server itself, the font server (xfs), xdm, and many other base components. Display managers such as gdm and kdm, as well as various window managers, and other X tools also store their configuration in this heirarchy.

XFree86 version 4 server is a single binary executable (/usr/X11R6/bin/XFree86). This server dynamically loads various X server modules at runtime from /usr/X11R6/lib/modules) including video drivers, font engine drivers, and other special modules as needed. Some of these modules are automatically loaded by the server, whereas some are optional features that you must specify in the XFree86 4 server's configuration file /etc/X11/XF86Config-4 before they can be used. The video drivers for XFree86 4 are located in the /etc/X11R6/lib/modules/drivers directory. The DRI hardware accelerated 3D drivers are located in the /etc/X11R6/lib/modules/dri

XFree86 version 3 servers are individual X server binaries, each of which drive a certain range of video hardware. The installed XFree86 server binaries can be found in the /usr/X11R6/bin directory with names in the format XF86_<server-type>, where <server-type> is the name of the server used. There are many different XFree86 3 servers including the basic XF86_VGA16 and XF86_SVGA servers, and the more specialized accelerated servers such as XF86_Mach64, XF86_S3, XF86_AGX, and others.

XFree86 Server Configuration Files

The XFree86 server configuration files are stored in the /etc/X11 directory. Since the XFree86 4 and XFree86 3 servers use a different configuration file syntax which are not compatible with each other, each has its own separate configuration file. The XFree86 4 server uses /etc/X11/XF86Config-4, while the XFree86 3 uses /etc/X11/XF86Config for X server configuration. When Red Hat Linux is installed, configuration files for both XFree86 versions are created using information gathered during the installation process. If you use Xconfigurator to reconfigure a new video card, both configuration files are regenerated.

Both configuration files are made up by a collection of sections, each of which defines a particular aspect of the XFree86 server's operation. Many of the configuration sections are similar or even identical in both files, however there are many differences also. One notable difference is that the XF86Config-4 configuration file used by the XFree86 4 server contains new sections such as ServerLayout and Module, that are not found in the version 3 configuration file. The XFree86 4 server allows the usage of multiple input devices, such as mice, keyboards, and drawing tablets. Each input device is presented in its own InputDevice section, where it is assigned an identifying name that tells you about the device. The XFree86 3 server by contrast configures the mouse and keyboard via the directives Keyboard and Pointer.

While there is rarely a need to manually edit these files, it is useful to know about the various sections and optional parameters found in them.

Each section begins with a Section "<section-name>" line and ends with an EndSection line. Within each of the sections, you will find several lines containing an option name and at least one option value, occasionally seen in quotes. Given the similarities between the two types of configuration files, the following list explores the most useful sections of an XFree86 version 4 file and the roles of various popular settings.

Device

Specifies information about the video card used by the system. You must have at least one Device section in your configuration file. You may have multiple Device sections in the case of multiple video cards or multiple settings that can run a single card. The following options are required or widely used:

  • BusID — Specifies the bus location of the video card. This option is only necessary for systems with multiple cards and must be set so that the Device section will use the proper settings for the correct card.

  • Driver — Tells XFree86 which driver to load in order to use this video card device.

  • Identifier — Provides a unique name for this video card. Usually, this name is set to the exact name of the video card used in this Device section.

  • Screen — An optional setting used when a video card has more than one head, or connector to go out to a separate monitor. If you have multiple monitors connected to one video card, then separate Device sections must exist for each of them with a different Screen value for each Device section. The value accepted by this option is a number, starting at 0 and increasing by one for each head on the video card.

  • VideoRam — The amount of RAM available on the video card, in kilobytes. This setting is not normally necessary, as the XFree86 server can usually probe the video card to autodetect the amount of video RAM. There is some hardware out there which XFree86 cannot correctly autodetect however, so this option lets you manually specify the exact amount of video RAM.

DRI

The Direct Rendering Infrastructure (DRI), is an interface which primarily allows 3D software applications to take advantage of the 3D hardware acceleration capabilities on modern supported video hardware. In addition, the DRI can improve 2D hardware acceleration performance when using drivers that have been enhanced to use the DRI for 2D operations. When DRI is enabled in the Module section by loading the DRI module, this section configures options specific to DRI.

Different video cards use DRI in different ways. Before changing any DRI values, read the /usr/X11R6/lib/X11/doc/README.DRI file for specific information about your particular video card.

Files

Points the XFree86 server to specific files that are used when it starts. These files contain information about particular services needed by the server. The most common options include:

  • FontPath — Sets the locations where the XFree86 server can find fonts. Different fixed paths to directories holding font files can be placed here, separated by commas. However, by default, Red Hat Linux uses xfs as the font server and points FontPath to unix/:7100. This tells the XFree86 server to obtain font information by using UNIX-domain sockets for inter process communication.

    See the section called Fonts for more information concerning XFree86 and fonts.

  • ModulePath — Allows you to set up multiple directories to use for storing modules loaded by the XFree86 server.

  • RgbPath — Tells the XFree86 server where the RGB color database is located on the system. This database file defines all valid color names in XFree86 and ties them to specific RGB values.

InputDevice

******* Configures an input device such as a mouse, keyboard used to submit information into the system using the XFree86 server. Most systems have at least two InputDevice sections, keyboard and mouse. Each section includes these two lines:

  • Driver — Tells XFree86 the name of the driver to load to use the device.

  • Identifier — Sets the name of the device, usually the name of the device followed by a number, starting with 0 for the first device. For example, the first keyboard InputDevice would have an Identifier of "Keyboard0".

Most InputDevice sections contain lines that assign specific options to that particular device. Each of these lines start with Option and contain the name of the option in quotes, followed by the value to assign to that option. Mice usually receive options such as Protocol, such as PS/2, and Device, which designates the mouse to use for this section. The InputDevice section is well commented, allowing you to configure additional options for your particular devices by uncommenting certain lines.

Module

Tells the XFree86 server which modules from the /etc/X11R6/lib/modules directory to load. Modules provide the XFree86 server with additional functionality. You should not edit these values.

Monitor

Refers to the type of monitor used by the system. There may be several Monitor sections, one for each monitor in use with the machine, with one Monitor section as the minimum.

WarningWarning
 

Be careful when manually editing values in the options of the Monitor section. Inappropriate values in this section could damage or destroy your monitor. Consult the documentation that came with your monitor for the safe operating parameters available.

The following options are usually configured:

  • HorizSync — Tells XFree86 the range of horizontal sync frequencies compatible with the monitor, in kHz. These values are used as a guide by the XFree86 server so that it will know whether to use a particular Modeline entry's values with this monitor.

  • Identifier — Provides a unique name for this monitor, usually numbering each monitor starting at 0. The first monitor would be named "Monitor0", the second "Monitor1", and so on.

  • Modeline — Used to specify the video modes used by the monitor at particular resolutions, with certain horizontal sync and vertical refresh resolutions. Modeline entries are usually preceded by a comment that explains what the mode line specifies.

    If your configuration file does not include comments for the various mode lines, you can scan over the values (or mode descriptions) to uncover what the mode line is attempting to do. See the XF86Config man page for detailed explanations of each mode description section.

  • ModelName — An optional parameter that displays the model name of the monitor.

  • VendorName — An optional parameter that displays the vendor that manufactured the monitor.

  • VertRefresh — Lists the vertical refresh range frequencies supported by the monitor, in Hz. These values are used as a guide by the XFree86 server so that it will know whether to use a particular Modeline entry's values with this monitor.

Screen

Binds together a particular Device and Monitor that can be utilized as a pair and contain certain settings. You must have at least one Screen section in your configuration file. The following options are common:

  • DefaultDepth — Tells the Screen section the default color depth to try, in bits. 8 is the default, 16 provides thousands of colors, and 32 displays millions of colors.

  • Device — Signifies the name of the Device section to use with this Screen section.

  • Identifier — Identifies the Screen section, so that it can be referred to by a ServerLayout section and be utilized.

  • Monitor — Tells the name of the Monitor section to be used with this Screen section.

You may also have a Display subsection within the Screen section which tells the XFree86 server the color depth (Depth) and resolution (Mode) to try first when using this particular monitor and video card.

ServerFlags

Contains miscellaneous global XFree86 server settings. These settings may be overridden by options placed in the ServerLayout section. Among the most useful settings:

  • DontZap — Prevents the use of the [Ctrl]-[Alt]-[Backspace] key combination to immediately terminate the XFree86 server.

  • DontZoom — Prevents the use of the [Ctrl]-[Alt]-[Keypad-Plus] and [Ctrl]-[Alt]-[Keypad-Minus] to cycle through configured video resolutions.

ServerLayout

Binds together a Screen section with the necessary InputDevice sections and various options to create a unified collection of preferences used by the XFree86 server as it starts. If you have more than one ServerLayout section and the one to use is not specified on the command line when bringing up the XFree86 server, the first ServerLayout section in the configuration file is used.

The following options are used in a ServerLayout section:

  • Identifier — A unique name used to describe this ServerLayout section.

  • InputDevice — The names of any InputDevice sections to be used with the XFree86 server. Most users will only have two lines here, Keyboard0 and Mouse0, the first keyboard and mouse configured for the system. The options CoreKeyboard and CorePointer refer to the fact that these are the preferred keyboard and mouse, respectively, to use with the XFree86 server.

  • Screen — The name of the Screen section to use. The number to the left of the name of the Screen section refers to the particular screen number to use in a multi-head configuration. For standard single-head video cards, this value is 0. The numbers to the right give the X and Y absolute coordinates for the upper-left corner of the screen, by default 0 0.

For more information, refer to the XF86Config man page which contains a comprehensive list of detailed options.

To review the current configuration of your XFree86 server, type the xset -q command. This will provide you with information about your keyboard, pointer, screen saver, and font paths.