12.3. Installing XFree86

The easiest way to install XFree86 is with the sysinstall program, either when you are installing the system, or later by starting the program /stand/sysinstall. In the rest of this chapter, we will look at what makes up the distribution, and we will also take a look at manually installing X11.

12.3.1. The XFree86 Distribution

XFree86 is distributed as a bewildering number of archives. In the following section, we will take a look at what you should install. Do not worry too much, though; if you cannot decide what to pick and you have 200MB of disk space free, it's safe to unpack everything.

At a minimum you need to unpack the archives in the following table and at least one server that matches your VGA board. You will need 10Mb for the minimum required run-time binaries only, and between 1.7 and 3 MB for the server.

Below is a table of the required components.

Archive Description
Xbin.tgz All the executable X client applications and shared libraries.
Xfnts.tgz The misc and 75 dpi fonts.
Xlib.tgz Data files and libraries needed at runtime.

12.3.2. The X Server

In addition to the archives above, you need at least one server, which will take up about 3 MB of disk. The choice depends primarily on what kind of display board you have. The default server name is /usr/X11R6/bin/X, and it is a link to a specific server binary /usr/X11R6/bin/XF86_xxxx. You will find the server archives for the standard PC architecture in /cdrom/XF86336/Servers, and the servers for the Japanese PC98 architecture in /cdrom/XF86336/PC98-Servers if you have the CD set. Alternatively, they are available on our FTP site at ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/4.1.1-RELEASE/XF86336/Servers/ or ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/4.1.1-RELEASE/XF86336/PC98-Servers/

Available X servers for the standard PC architecture:

Archive Description
X8514.tgz 8-bit color for IBM 8514 and true compatibles.
XAGX.tgz 8 and 16-bit color for AGX and XGA boards.
XI128.tgz 8 and 16-bit color for I128 boards.
XMa32.tgz 8 and 16-bit color for ATI Mach32 boards.
XMa64.tgz 8, 16, and 32-bit color fot ATI Mach64 boards.
XMa8.tgz 8-bit color for ATI Mach8 boards.
XMono.tgz 1-bit monochrome for VGA, Super-VGA, Hercules, and others.
XP9K.tgz 8, 16, and 32-bit color for Weitek P9000 boards (Diamond Viper).
XS3.tgz 8, 16, and 32-bit color for S3 boards.
XS3V.tgz 8 and 16-bit color for S3 ViRGE boards.
XSVGA.tgz >=8-bit color for Super-VGA cards.
XVG16.tgz 4-bit color for VGA and Super-VGA cards.
XW32.tgz 8-bit color for ET4000/W32, /W32i, /W32p, and ET6000 cards.

Available X servers for the Japanese PC98 architecture:

Archive Description
X9GAN.tgz 8-bit color for PC98 GA-98NB/WAP boards.
X9GA9.tgz 8, 16, and 32-bit color for PC98 S3 GA-968 boards.
X9480.tgz 8-bit color for PC98 PEGC
X9NKV.tgz 8-bit color for PC98 NEC-CIRRUS/EPSON NKV/NKV2 boards.
X9WBS.tgz 8-bit color for PC98 WAB-S boards.
X9WEP.tgz 8-bit color for PC98 WAB-EP boards.
X9WSN.tgz 8-bit color for PC98 WSN-A2F boards.
X9EGC.tgz 4-bit color for PC98 EGC.
X9TGU.tgz 8 and 16-bit color for PC98 Trident Cyber9320/9680 boards.
X9NS3.tgz 8 and 16-bit color for PC98 NEC S3 boards.
X9SPW.tgz 8 and 16-bit color for PC98 S3 PW/PCSKB boards.
X9LPW.tgz 8 and 16-bit color for PC98 S3 PW/LB boards.

Each of these servers includes a manual page which contains details of supported chipsets and server-specific configuration options.

There are also a number of archives are provided for X programmers:

Archive Description
Xprog.tgz Config, lib*.a, and *.h files needed for compiling clients.
Xctrb.tgz Contributed sources.
Xlk98.tgz The ``link kit'' for building servers, Japanese PC98 version.
Xlkit.tgz The ``link kit'' for building servers, normal PC architecture.
Xsrc-1.tgz Part 1 of the complete sources.
Xsrc-2.tgz Part 2 of the complete sources.
Xsrc-3.tgz Part 3 of the complete sources.

Note: You will need Xprog.tgz if you intend to install ports of X software.

XFree86 also includes a number of optional parts, such as documentation, and setup programs.

Archive Description
Xdoc.tgz READMEs
Xjdoc.tgz READMEs in Japanese.
Xps.tgz READMEs in PostScript.
Xhtml.tgz READMEs in HTML.
Xman.tgz Manual pages.
Xcfg.tgz Customizable xinit and xdm runtime configuration files.
Xset.tgz The X86Setup utility; a graphical version of the xf86config utility.
Xjset.tgz The XF86Setup utility, Japanese version, for the normal PC architecture.

XF86Setup is a graphical mode setup program for XFree86, and you may prefer it to the standard setup program xf86config. You do not need any special archives for xf86config; it is included in Xbin.tgz.

The first time you install, you will need Xcfg.tgz to create your initial configuration files. Do not use it when upgrading; it overwrites your configuration files.

There are also additional fonts that are available with XFree86:

Archive Description
Xf100.tgz 100 dpi fonts.
Xfscl.tgz Speedo and Type1 fonts.
Xfnon.tgz Japanese, Chinese, and other non-english fonts.
Xfcyr.tgz Cyrillic fonts.

Unlike the X servers described above, the archives for the following servers are all in the main directory.

Archive Description
Xfsrv.tgz The font server.
Xnest.tgz A nested server running as a client window on another display.
Xprt.tgz The print server.
Xvfb.tgz The Virtual Framebuffer X server, which renders into memory or an mmapped file.

12.3.3. Installing XFree86 Manually

If you do not use sysinstall to install X, you need to perform a number of steps:

  1. Create the directories and unpack the required archives.

  2. Choose and install an X server.

  3. Set up the environment to be able to access X.

  4. Find a virtual terminal in which to run X.

  5. Configure X for your hardware.

This sounds like a lot of work, but if you approach it methodically, it is not too bad. In the rest of this section, we will look at each step in turn.

12.3.3.1. Unpacking the Archives

You must unpack the archives as root, since a number of the executables are set-user-id (they run as root even when started by other users). If you unpack the server as an ordinary user, it may abort when you try to run it. You must also use a umask value of 022 (permissions rwxr-xr-x), because the X server requires special permissions.

    % su
    Password:
    # umask 022

If you do not have enough space in the /usr file system, create a directory on another partition and symlink it to /usr. For example, if you have a file system /home with adequate space, you could do:

    # cd /home
    # mkdir X11R6
    # ln -s /home/X11R6 /usr/X11R6

Next, decide which archives you want to install. For a minimal installation, choose Xbin.tgz, Xfnts.tgz, Xlib.tgz, and Xcfg.tgz. If you have already configured X for your hardware, you can omit Xcfg.tgz.

If you are using sh, unpack like this:

    # mkdir -p /usr/X11R6
    # cd /usr/X11R6
    # for i in bin fnts lib cfg; do
    #  tar xzf X$i.tgz
    # done

If you are using csh, enter:

    # mkdir -p /usr/X11R6
    # cd /usr/X11R6
    # foreach i (bin fnts lib cfg)
    ?  tar xzf X$i.tgz
    ? end

12.3.3.2. Installing the Server

Choose a server archive corresponding to your VGA board. If the table in the section above does not give you enough information, check the server man pages, /usr/X11R6/man/man1/XF86_*, which list the VGA chipsets supported by each server. For example, if you have an ET4000 based board you will use the XF86_SVGA server. In this case you would enter:

    # cd /usr/X11R6
    # tar xzf XSVGA.tgz [substitute your server name here]

12.3.3.3. Setting up the environment

Next, you may wish to create a symbolic link /usr/X11/bin/X that points to the server that matches your video board. In this example, it is the XF86_SVGA server:

    # cd /usr/X11R6/bin
    # rm X
    # ln -s XF86_SVGA X

X needs this symbolic link in order to be able to work correctly, but you have the option of setting it when you run xf86config - see below.

Next, check that the directory /usr/X11R6/bin is in the default path for sh in /etc/profile and for csh in /etc/csh.login, and add it if it is not. It is best to do this with an editor, but if you want to take a shortcut, you can enter:

    # echo 'PATH=$PATH:/usr/X11R6/bin' >>/etc/profile

or:

    # echo 'set path = ($path /usr/X11R6/bin)' >>/etc/csh.login

Alternatively, make sure everybody who uses X puts /usr/X11R6/bin in their shell's PATH variable.

Next, invoke ldconfig to put the shared libraries in ld.so's cache:

    # ldconfig -m /usr/X11R6/lib

You can omit invoking ldconfig if you plan to reboot before using X.

You do not need to uncompress the font files, but if you do, you must run mkfontdir in the corresponding font directory, otherwise your server will abort with the message ``could not open default font `fixed'''.

12.3.3.4. Assigning a virtual terminal to X

Next, make sure you have a spare virtual console which is running a getty. First check how many virtual consoles you have:

    # dmesg | grep virtual
    sc0: VGA color <16 virtual consoles, flags=0x0>

Then check /etc/ttys to make sure there is at least one virtual terminal (ttyvxx device) which does not have a getty enabled. Look for the keyword off:

    # grep ttyv /etc/ttys
    ttyv0  "/usr/libexec/getty Pc" cons25  on secure
    ttyv1  "/usr/libexec/getty Pc" cons25  on secure
    ttyv2  "/usr/libexec/getty Pc" cons25  on secure
    ttyv3  "/usr/libexec/getty Pc" cons25  off secure

In this case, /dev/ttyv3 is available, if your kernel has least 4 VTs. If not, either disable a getty in /etc/ttys by changing on to off, or build another kernel with more virtual terminals.

12.3.3.5. Configuring X for Your Hardware

After installing the X software, you will need to customize the file XF86Config, which tells the X server about your hardware and how you want to run it.

In order to set up XF86Config, you will need the following hardware information:

  • Your mouse type, the bit rate if it is a serial mouse, and the name of the device to which it is connected. This will typically be /dev/ttyd0 or /dev/ttyd1 for a serial mouse, /dev/psm0 for a PS/2 mouse, or /dev/mse0 for a bus mouse.

  • The type of the video board and the amount of display memory. If it is a no-name board, establish what VGA chip set it uses.

  • The parameters of your monitor; vertical and horizontal frequency.

12.3.3.6. Identifying the hardware

How do you decide what your hardware is? The manufacturer should tell you, but very often the information you get about your display board and monitor is pitiful; ``Super VGA board with 76 Hz refresh rate and 16,777,216 colors''. This tells you the maximum pixel depth (24 bits - - the number of colors is 2(pixel depth)), but it doesn't tell you anything else about the display board.

As we will see later, the real parameters you need to know are the maximum horizontal frequency, the dot clock range, the chipset and the amount of display memory.

You could be unlucky trying to get some of this information, but you can get some with the SuperProbe program. It should always be able to tell you the chipset and the amount of memory on board.

Occasionally SuperProbe can crash your system. Make sure you are not doing anything important when you run it. Running SuperProbe looks like this:

    # SuperProbe
    (warnings and acknowledgments omitted)
    First video: Super-VGA
            Chipset: Tseng ET4000 (Port Probed)
            Memory:  1024 Kbytes
            RAMDAC:  Generic 8-bit pseudo-color DAC
                     (with 6-bit wide lookup tables (or in 6-bit mode))

SuperProbe is very finicky about running at all, and you will often get messages like:

    SuperProbe: Cannot be run while an X server is running
    SuperProbe: If an X server is not running, unset $DISPLAY and try again
    SuperProbe: Cannot open video

In other words, even if no X server is running, SuperProbe will not work if you have the environment variable DISPLAY set. How do you unset it? With Bourne-style shells, you enter:

    # unset DISPLAY

In the C shell, you enter:

    # unsetenv DISPLAY

12.3.3.7. Running xf86config

The easy way to create your configuration file is with one of the utilities xf86config (note the lower case name) or XF86Setup. Both lead you through the configuration step by step. xf86config runs in character mode, while XF86Setup runs in a graphical mode. XF86Setup can have problems with unusual hardware, so I personally prefer xf86config.

You can also use sysinstall, but this does not change much; sysinstall just starts xf86config for you, and it is easier to start it directly. In this section, we will use an example to illustrate configuration via xf86config. We are installing X for an ancient Diamond SpeedStar with 1 MB of display memory, a Logitech MouseMan mouse, and an ADI MicroScan 5AP monitor. The mouse is connected to the system via the first serial port, /dev/ttyd0.

To run xf86config, type in the name. If /usr/X11R6/bin is included in your PATH environment variable, you just need to type xf86config. If it is not, you need to type out the full path to xf86config, like so:

    # /usr/X11R6/bin/xf86config

This program will create a basic XF86Configfile, based on menu selections you make.

The XF86Config file usually resides in /usr/X11R6/lib/X11 or /etc. A sample XF86Config file is supplied with XFree86; it is configured for a standard VGA card and monitor with 640x480 resolution. This program will ask for a pathname when it is ready to write the file.

You can either take the sample XF86Config as a base and edit it for your configuration, or let this program produce a base XF86Config file for your configuration and fine-tune it. Refer to /usr/X11R6/lib/X11/doc/README.Config for a detailed overview of the configuration process.

For accelerated servers (including accelerated drivers in the SVGA server), there are many chipset and card-specific options and settings. This program does not know about these. On some configurations some of these settings must be specified. Refer to the server man pages and chipset-specific READMEs.

Before continuing with this program, make sure you know the chipset and amount of video memory on your video card. SuperProbe can help with this. It is also helpful if you know what server you want to run.

    Press enter to continue, or ctrl-c to abort. ENTER
    
    First specify a mouse protocol type. Choose one from the following list:
    
     1.  Microsoft compatible (2-button protocol)
     2.  Mouse Systems (3-button protocol)
     3.  Bus Mouse
     4.  PS/2 Mouse
     5.  Logitech Mouse (serial, old type, Logitech protocol)
     6.  Logitech MouseMan (Microsoft compatible)
     7.  MM Series
     8.  MM HitTablet
     9.  Microsoft IntelliMouse

If you have a two-button mouse, it is most likely of type 1, and if you have a three-button mouse, it can probably support both protocol 1 and 2. There are two main varieties of the latter type; mice with a switch to select the protocol, and mice that default to 1 and require a button to be held at boot-time to select protocol 2. Some mice can be convinced to do 2 by sending a special sequence to the serial port (see the ClearDTR/ClearRTS options).

    Enter a protocol number: 6              Logitech MouseMan
    
    You have selected a Logitech MouseMan type mouse. You might want to enable
    ChordMiddle which could cause the third button to work.
    
    Please answer the following question with either 'y' or 'n'.
    Do you want to enable ChordMiddle? n

You definitely want to enable the third button on your mouse, since many X clients use it. With a genuine Logitech mouse, however, you don't need to enable ChordMiddle in order to use the button. If you find that the third button does not work when you start X, you can enable ChordMiddle by editing the configuration file - it is much easier and less error-prone than re-running XF86Setup.

Continuing through the setup:

    If your mouse has only two buttons, it is recommended that you enable Emulate3Buttons.
    
    Please answer the following question with either 'y' or 'n'.
    Do you want to enable Emulate3Buttons? n
    
    Now give the full device name that the mouse is connected to, for example
    /dev/tty00. Just pressing enter will use the default, /dev/mouse.
    
    Mouse device: /dev/ttyd1

Be very careful about this entry. You must specify the correct name for the device to which the mouse is connected. xf86config is not specific to FreeBSD, and the suggested example is just plain wrong for FreeBSD. Use the names /dev/ttyd0 through /dev/ttyd3 for serial mice, /dev/psm0 for PS/2 mice or /dev/mse0 for a bus mouse.

Continuing, we see:

    Beginning with XFree86 3.1.2D, you can use the new X11R6.1
    XKEYBOARD extension to manage the keyboard layout. If you answer 'n' to the
    following question, the server will use the old method, and you have to
    adjust your keyboard layout with xmodmap.
    
    Please answer the following question with either 'y' or 'n'.
    Do you want to use XKB? y
    
    The following dialogue will allow you to select from a list of already
    preconfigured keymaps. If you don't find a suitable keymap in the list,
    the program will try to combine a keymap from additional information you
    are asked then. Such a keymap is by default untested and may require
    manual tuning. Please report success or required changes for such a
    keymap to XFREE86@XFREE86.ORG for addition to the list of preconfigured
    keymaps in the future.
    
    Press enter to continue, or ctrl-c to abort.
    
    List of preconfigured keymaps:
    
      1  Standard 101-key, US encoding
      2  Microsoft Natural, US encoding
      3  KeyTronic FlexPro, US encoding
      4  Standard 101-key, US encoding with ISO9995-3 extensions
      5  Standard 101-key, German encoding
      6  Standard 101-key, French encoding
      7  Standard 101-key, Thai encoding
      8  Standard 101-key, Swiss/German encoding
      9  Standard 101-key, Swiss/French encoding
     10  None of the above
    
    Enter a number to choose the keymap.
    
    1                                       Choose the standard US keyboard

Now we want to set the specifications of the monitor. The two critical parameters are the vertical refresh rate, which is the rate at which the the whole screen is refreshed, and most importantly the horizontal sync rate, which is the rate at which scanlines are displayed.

The valid range for horizontal sync and vertical sync should be documented in the manual of your monitor. If in doubt, check the monitor database /usr/X11R6/lib/X11/doc/Monitors to see if your monitor is there.

    Press enter to continue, or ctrl-c to abort. ENTER
    
    You must indicate the horizontal sync range of your monitor. You can either
    select one of the predefined ranges below that correspond to industry-
    standard monitor types, or give a specific range.
    
    It is VERY IMPORTANT that you do not specify a monitor type with a horizontal
    sync range that is beyond the capabilities of your monitor. If in doubt,
    choose a conservative setting.
    
        hsync in kHz; monitor type with characteristic modes
     1  31.5; Standard VGA, 640x480 @@ 60 Hz
     2  31.5 - 35.1; Super VGA, 800x600 @@ 56 Hz
     3  31.5, 35.5; 8514 Compatible, 1024x768 @@ 87 Hz interlaced (no 800x600)
     4  31.5, 35.15, 35.5; Super VGA, 1024x768 @@ 87 Hz interlaced, 800x600 @@ 56 Hz
     5  31.5 - 37.9; Extended Super VGA, 800x600 @@ 60 Hz, 640x480 @@ 72 Hz
     6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @@ 60 Hz, 800x600 @@ 72 Hz
     7  31.5 - 57.0; High Frequency SVGA, 1024x768 @@ 70 Hz
     8  31.5 - 64.3; Monitor that can do 1280x1024 @@ 60 Hz
     9  31.5 - 79.0; Monitor that can do 1280x1024 @@ 74 Hz
    10  31.5 - 82.0; Monitor that can do 1280x1024 @@ 76 Hz
    11  Enter your own horizontal sync range
    
    Enter your choice (1-11):

Unfortunately, our monitor is not mentioned in the file /usr/X11R6/lib/X11/doc/Monitors, but by chance the manual does specify the frequency range in the Technical Data section. The horizontal frequency range is from 30 to 64 kHz, and the vertical frequency range is from 50 to 100 Hz. The horizontal frequency range is almost exactly covered by choice 8, but that setting threatens to go 0.3 kHz higher in frequency than the technical data state. Do you want to risk it? Doing so will most likely not be a problem, since it is unlikely that the monitor will die at such a small deviation from the specs, and it is also unlikely that your XF86Config will actually generate a horizontal frequency between 64.0 and 64.3 kHz. However, there is no need to take even this slight risk. Just specify the real values:

    Enter your choice (1-11): 11
    
    Please enter the horizontal sync range of your monitor, in the format used
    in the table of monitor types above. You can either specify one or more
    continuous ranges (e.g. 15-25, 30-50), or one or more fixed sync
    frequencies.
    
    Horizontal sync range: 30-64

Next, we select the vertical frequency range:

    You must indicate the vertical sync range of your monitor.
    You can either select one of the predefined ranges below that correspond
    to industry-standard monitor types, or give a specific range.  For
    interlaced modes, the number that counts is the high one (e.g., 87 Hz
    rather than 43 Hz).
    
     1  50-70
     2  50-90
     3  50-100
     4  40-150
     5  Enter your own vertical sync range
    
    Enter your choice: 3                         exactly the range of the monitor

The next step is to specify identification strings. You can think out names if you want, but unless you are juggling a lot of different hardware, you can let xf86config do it for you:

    You must now enter a few identification/description strings,
    namely an identifier, a vendor name, and a model name. Just pressing enter
    will fill in default names.
    
    The strings are free-form, spaces are allowed.
    Enter an identifier for your monitor definition: ENTER
    Enter the vendor name of your monitor:  ENTER
    Enter the model name of your monitor:  ENTER

Next comes the choice of the video board. We have an elderly Diamond SpeedStar Plus with an ET4000 chip, and unknown Ramdac and Clock Chip. Let's see how we fare:

    Now we must configure video card specific settings.  At
    this point you can choose to make a selection out of a database of video
    card definitions.  Because there can be variation in Ramdacs and clock
    generators even between cards of the same model, it is not sensible to
    blindly copy the settings (e.g., a Device section).  For this reason,
    after you make a selection, you will still be asked about the components
    of the card, with the settings from the chosen database entry presented as
    a strong hint.
    
    The database entries include information about the chipset, what server to
    run, the Ramdac and ClockChip, and comments that will be included in the
    Device section. However, a lot of definitions only hint about what server
    to run (based on the chipset the card uses) and are untested.
    
    If you can't find your card in the database, there's nothing to worry about.
    You should only choose a database entry that is exactly the same model as
    your card; choosing one that looks similar is just a bad idea (e.g. a
    GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of
    hardware as can be).
    
    Do you want to look at the card database? y
      0  2 the Max MAXColor S3 Trio64V+                    S3 Trio64V+
      1  928Movie                                          S3 928
      2  AGX (generic)                                     AGX-014/15/16
      3  ALG-5434(E)                                       CL-GD5434
      4  ASUS 3Dexplorer                                   RIVA128
      5  ASUS PCI-AV264CT                                  ATI-Mach64
      6  ASUS PCI-V264CT                                   ATI-Mach64
      7  ASUS Video Magic PCI V864                         S3 864
      8  ASUS Video Magic PCI VT64                         S3 Trio64
      9  AT25                                              Alliance AT3D
     10  AT3D                                              Alliance AT3D
     11  ATI 3D Pro Turbo                                  ATI-Mach64
     12  ATI 3D Xpression                                  ATI-Mach64
     13  ATI 3D Xpression+ PC2TV                           ATI-Mach64
     14  ATI 8514 Ultra (no VGA)                           ATI-Mach8
     15  ATI All-in-Wonder                                 ATI-Mach64
     16  ATI Graphics Pro Turbo                            ATI-Mach64
     17  ATI Graphics Pro Turbo 1600                       ATI-Mach64
    
    Enter a number to choose the corresponding card definition.
    Press enter for the next page, q to continue configuration.
    ENTER

Dozens of board definitions come in alphabetic order. Finally we see:

    108  DSV3325                                           S3 ViRGE
    109  DSV3326                                           S3 Trio64V+
    110  DataExpert DSV3325                                S3 ViRGE
    111  DataExpert DSV3365                                S3 Trio64V+
    112  Dell S3 805                                       S3 801/805
    113  Dell onboard ET4000                               ET4000
    114  Diamond Edge 3D                                   nv1
    115  Diamond Multimedia Stealth 3D 2000                S3 ViRGE
    116  Diamond Multimedia Stealth 3D 2000 PRO            S3 ViRGE/DX
    117  Diamond SpeedStar (Plus)                          ET4000
    118  Diamond SpeedStar 24                              ET4000
    119  Diamond SpeedStar 24X (not fully supported)       WD90C31
    120  Diamond SpeedStar 64                              CL-GD5434
    121  Diamond SpeedStar HiColor                         ET4000
    122  Diamond SpeedStar Pro (not SE)                    CL-GD5426/28
    123  Diamond SpeedStar Pro 1100                        CL-GD5420/2/4/6/8/9
    124  Diamond SpeedStar Pro SE (CL-GD5430/5434)         CL-GD5430/5434
    125  Diamond SpeedStar64 Graphics 2000/2200            CL-GD5434
    
    Enter a number to choose the corresponding card definition.
    Press enter for the next page, q to continue configuration.
    
    117
    
    Your selected card definition:
    
    Identifier: Diamond SpeedStar (Plus)
    Chipset:    ET4000
    Server:     XF86_SVGA
    
    Press enter to continue, or ctrl-c to abort.ENTER
    
    Now you must determine which server to run.  Refer to the man pages and
    other documentation.  The following servers are available (they may not
    all be installed on your system):
    
     1  The XF86_Mono server. This a monochrome server that should work on any
        VGA-compatible card, in 640x480 (more on some SVGA chipsets).
     2  The XF86_VGA16 server. This is a 16-color VGA server that should work on
        any VGA-compatible card.
     3  The XF86_SVGA server. This is a 256 color SVGA server that supports
        a number of SVGA chipsets. On some chipsets it is accelerated or
        supports higher color depths.
     4  The accelerated servers. These include XF86_S3, XF86_Mach32, XF86_Mach8,
        XF86_8514, XF86_P9000, XF86_AGX, XF86_W32, XF86_Mach64, XF86_I128 and
        XF86_S3V.
    
    These four server types correspond to the four different "Screen" sections in
    XF86Config (vga2, vga16, svga, accel).
    
     5  Choose the server from the card definition, XF86_SVGA.
    
    Which one of these screen types do you intend to run by default (1-5)?

The system already chose XF86_SVGA for us. Do we want to change? We would need a good reason. In this case, we do not have a reason, so we will keep the server from the card definition:

    Which one of these screen types do you intend to run by default (1-5)? 5
    
    The server to run is selected by changing the symbolic link 'X'. For example,
    the SVGA server.
    
    Please answer the following question with either 'y' or 'n'.
    Do you want me to set the symbolic link? y

All the programs that start X (xinit, startx, and xdm) start a program /usr/X11R6/bin/X. This symbolic link makes /usr/X11R6/bin/X point to your X server. If you don't have a link, you will not be able to start X.

    Now you must give information about your video card.  This
    will be used for the "Device" section of your video card in XF86Config.
    
    You must indicate how much video memory you have. It is probably a good
    idea to use the same approximate amount as that detected by the server you
    intend to use. If you encounter problems that are due to the used server
    not supporting the amount memory you have (e.g. ATI Mach64 is limited to
    1024K with the SVGA server), specify the maximum amount supported by the
    server.
    
    How much video memory do you have on your video card:
    
     1  256K
     2  512K
     3  1024K
     4  2048K
     5  4096K
     6  Other
    
    Enter your choice: 3
    
    You must now enter a few identification/description strings, namely an
    identifier, a vendor name, and a model name. Just pressing enter will fill
    in default names (possibly from a card definition).
    
    Your card definition is Diamond SpeedStar (Plus).
    
    The strings are free-form, spaces are allowed.
    Enter an identifier for your video card definition: ENTER
    You can simply press enter here if you have a generic card, or want to
    describe your card with one string.
    Enter the vendor name of your video card:  ENTER
    Enter the model (board) name of your video card:  ENTER
    
    Especially for accelerated servers, Ramdac, Dacspeed and ClockChip settings
    or special options may be required in the Device section.
    
    The RAMDAC setting only applies to the S3, AGX, W32 servers, and some
    drivers in the SVGA servers. Some RAMDAC's are auto-detected by the server.
    The detection of a RAMDAC is forced by using a Ramdac "identifier" line in
    the Device section. The identifiers are shown at the right of the following
    table of RAMDAC types:
    
      1  AT&T 20C490 (S3 and AGX servers, ARK driver)                att20c490
      2  AT&T 20C498/21C498/22C498 (S3, autodetected)                att20c498
      3  AT&T 20C409/20C499 (S3, autodetected)                       att20c409
      4  AT&T 20C505 (S3)                                            att20c505
      5  BrookTree BT481 (AGX)                                       bt481
      6  BrookTree BT482 (AGX)                                       bt482
      7  BrookTree BT485/9485 (S3)                                   bt485
      8  Sierra SC15025 (S3, AGX)                                    sc15025
      9  S3 GenDAC (86C708) (autodetected)                           s3gendac
     10  S3 SDAC (86C716) (autodetected)                             s3_sdac
     11  STG-1700 (S3, autodetected)                                 stg1700
     12  STG-1703 (S3, autodetected)                                 stg1703
    
    
    Enter a number to choose the corresponding RAMDAC.
    Press enter for the next page, q to quit without selection of a RAMDAC.
    
    
    q                                  We don't need this
    
    
    A Clockchip line in the Device section forces the detection of a
    programmable clock device. With a clockchip enabled, any required
    clock can be programmed without requiring probing of clocks or a
    Clocks line. Most cards don't have a programmable clock chip.
    Choose from the following list:
    
     1  Chrontel 8391                                               ch8391
     2  ICD2061A and compatibles (ICS9161A, DCS2824)                icd2061a
     3  ICS2595                                                     ics2595
     4  ICS5342 (similar to SDAC, but not completely compatible)    ics5342
     5  ICS5341                                                     ics5341
     6  S3 GenDAC (86C708) and ICS5300 (autodetected)               s3gendac
     7  S3 SDAC (86C716)                                            s3_sdac
     8  STG 1703 (autodetected)                                     stg1703
     9  Sierra SC11412                                              sc11412
    10  TI 3025 (autodetected)                                      ti3025
    11  TI 3026 (autodetected)                                      ti3026
    12  IBM RGB 51x/52x (autodetected)                              ibm_rgb5xx
    
    Just press enter if you don't want a Clockchip setting.
    What Clockchip setting do you want (1-12)? ENTER
    
    For most configurations, a Clocks line is useful since it prevents the slow
    and nasty sounding clock probing at server start-up. Probed clocks are
    displayed at server startup, along with other server and hardware
    configuration info. You can save this information in a file by running
    imprecise; some clocks may be slightly too high (varies per run).
    
    At this point I can run X -probeonly, and try to extract the clock information
    from the output. It is recommended that you do this yourself and add a clocks
    line (note that the list of clocks may be split over multiple Clocks lines) to
    your Device section afterwards. Be aware that a clocks line is not
    appropriate for drivers that have a fixed set of clocks and don't probe by
    default (e.g. Cirrus). Also, for the P9000 server you must simply specify
    clocks line that matches the modes you want to use.  For the S3 server with
    a programmable clock chip you need a 'ClockChip' line and no Clocks line.
    
    You must be root to be able to run X -probeonly now.
    
    Do you want me to run 'X -probeonly' now?

This last question is worth thinking about. You should run X -probeonly at some point, but it requires some extra work. We'll take the recommendation and try it later.

    Do you want me to run 'X -probeonly' now? n
    
    For each depth, a list of modes (resolutions) is defined. The default
    resolution that the server will start-up with will be the first listed
    mode that can be supported by the monitor and card.
    Currently it is set to:
    
    "640x480" "800x600" "1024x768" for 8bpp
    "640x480" "800x600" for 16bpp
    "640x480" for 24bpp
    "640x400" for 32bpp
    
    Note that 16, 24 and 32bpp are only supported on a few configurations.
    Modes that cannot be supported due to monitor or clock constraints will
    be automatically skipped by the server.
    
     1  Change the modes for 8pp (256 colors)
     2  Change the modes for 16bpp (32K/64K colors)
     3  Change the modes for 24bpp (24-bit color, packed pixel)
     4  Change the modes for 32bpp (24-bit color)
     5  The modes are OK, continue.
    
    Enter your choice: 5     accept the defaults
    
    You can have a virtual screen (desktop), which is screen area that is larger
    than the physical screen and which is panned by moving the mouse to the edge
    of the screen. If you don't want virtual desktop at a certain resolution,
    you cannot have modes listed that are larger. Each color depth can have a
    differently-sized virtual screen
    
    Please answer the following question with either 'y' or 'n'.
    Do you want a virtual screen that is larger than the physical screen? n

It is difficult to decide whether you want a virtual screen larger than the physical screen. I find it extremely disturbing, so I suggest you answer n. You might find it useful, especially if your highest resolution is small.

Now the configuration is complete, and sysinstall just need to write the configuration file:

    I am going to write the XF86Config file now.  Make sure
    you don't accidently overwrite a previously configured one.
    
    Shall I write it to /etc/XF86Config? y
    
    File has been written. Take a look at it before running 'startx'. Note that
    the XF86Config file must be in one of the directories searched by the server
    (e.g. /usr/X11R6/lib/X11) in order to be used. Within the server press
    ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl,
    alt and backspace simultaneously immediately exits the server (use if
    the monitor doesn't sync for a particular mode).
    
    For further configuration, refer to /usr/X11R6/lib/X11/doc/README.Config.

Once you have completed this configuration, you are ready to start X.

For questions about FreeBSD, e-mail <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.