Copyright ® 1998 by Ron Jenkins. This work is provided on an "as is" basis. The author provides no warranty whatsoever, either express or implied, regarding the work, including warranties with respect to its merchantability or fitness for any particular purpose.
The author welcomes corrections and suggestions. He can be reached by electronic mail at firstname.lastname@example.org.
In this installment, I will cover the following topics:
While the steps needed to configure the X system are fairly standardized, due to some differences and peculiarities between the Slackware 3.5 and RedHat 5.1 versions of Linux, where necessary, I will distinguish between the steps to be taken to accomplish a given task on each distribution.
Unlike Windows based systems, the X windowing system is composed primarily of two separate and distinct components, the X Server, and the Window Manager.
The X Server is the interface between the hardware and the Window Manager. This is somewhat analogous, although not entirely, to the "video driver" in Windows. In addition to servicing hardware requests, it also performs several other important functions, such as managing all X connections to the machine, both local and remote.
One of the advantages of a Unix or Linux system is the fact that it was built from the ground up to be a multi-user system.
This gives a Unix or Linux system the ability to service, or "host" many users, both locally through the use of TTY connections or virtual terminals, or remotely through socket based communication using a variety of protocols.
For an overview of the concept of remote X sessions, see my article in the September Issue of the Linux Gazette.
It is important to note that the aforementioned X Server, as well as most of the functions it performs, occur in the background, and are functionally transparent to the end user. In short, it's a busy little beaver!
The second component of the X windowing system is the Window Manager. This is the element of the X system that comprises the portion of the Graphical User Interface that you interact with. The Window Manager is responsible for the look and feel of your desktop; as well the front-end interface to the commands and programs you run.
There are many Window Managers available for Linux, and each person will have their favorite. It will be up to you to decide which one best fits your needs and preferences.
Since both distributions default to FVWM95, I will confine myself to this Window Manager for the purposes of this introductory document. For further information on some of the many other Window Managers available, consult the resources section.
At this time, XFree86 3.3.2 supports the following chipsets:
ARK1000PV, ARK1000VL, ARK2000PV, ARK2000MT
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)
ALG2101, ALG2228, ALG2301, ALG2302, ALG2308, ALG2401
Chips & Technologies
65520, 65530, 65540, 65545, 65520, 65530, 65540, 65545, 65546, 65548, 65550, 65554, 65555, 68554, 64200, 64300
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(*)
Digital Equipment Corporation
8514/A (and true clones), XGA-2
AGX-014, AGX-015, AGX-016
MGA2064W (Millennium), MGA1064SG (Mystique and Mystique 220), MGA2164W (Millennium II PCI and AGP)
77C22(*), 77C22E(*), 77C22E+(*)
I128 (series I and II), Revolution 3D (T2R)
NV1, STG2000, RIVA128
OTI067, OTI077, OTI087
86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C864, 86C964, 86C732, 86C764, 86C765, 86C767, 86C775, 86C785, 86C868, 86C968, 86C325, 86C357, 86C375, 86C375, 86C385, 86C988, 86CM65, 86C260
86C201, 86C202, 86C205
ET3000, ET4000AX, ET4000/W32, ET4000/W32i, ET4000/W32p, ET6000, ET6100
TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000, TVGA9000i, TVGA9100B, TVGA9200CXR, Cyber9320(*), TVGA9400CXi, TVGA9420, TGUI9420DGi, TGUI9430DGi, TGUI9440AGi, TGUI9660XGi, TGUI9680, Pro- Vidia 9682, ProVidia 9685(*), Cyber 9382, Cyber 9385, Cyber 9388, 3DImage975(PCI), 3DImage985(AGP), Cyber 9397, Cyber 9520
Video 7/Headland Technologies
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.
Refer to the chipset-specific README files (currently for TGA, Matrox, Mach32, Mach64, NVidia, Oak, P9000, S3 (except ViRGE), S3 ViRGE, SiS, Video7, Western Digital, Tseng (W32), Tseng (all), AGX/XGA, ARK, ATI (SVGA server), Chips and Technologies, Cirrus, Trident) for more information about using those chipsets.
The monochrome server also supports generic VGA cards, using 64k of video mem- ory 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.
Notes: The Diamond SpeedStar 24 (and possibly some SpeedStar+) boards are NOT supported, even though they use the ET4000.
The Weitek 9100 and 9130 chipsets are not supported (these are used on the Dia- mond Viper Pro and Viper SE boards). Most other Diamond boards will work with this release of XFree86. Diamond is actively supporting The XFree86 Project, Inc.
3DLabs GLINT, Permedia and Permedia 2 support could unfortunately not
included in XFree86 3.3.2 since there are open issues regarding the
documentation and whether or not they were provided to us under NDA.
(End excerpt from Xfree86 documentation.)
Hypothetically, any monitor you have the documentation for, that is capable of at least VGA or SVGA resolution, SHOULD be compatible. However, the following monitors are explicitly supported:
Standard VGA, 640x480 @ 60Hz Super VGA, 800x600 @ 56Hz
8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72Hz
Non-Interlaced SVGA 1024x768 @ 60 Hz, 800x600 @ 72 Hz
High Frequency SVGA, 1024x768 @ 70 Hz
Multi-Frequency that can do 1280x1024 @ 60 Hz
Multi-Frequency that can do 1280x1024 @ 74 Hz
Multi-Frequency that can do 1280x1024 @ 76 Hz
NOTE: There is also an option to explicitly specify the Horizontal and Vertical Sync rates for your monitor if you have them available.
Red Hat 5.1:
Custom Mode (see above description for information about standard modes, as well as suggestions for
acquiring information for your monitor if the documentation is not available.
Acer Acerview 11D, 33D/33DL, 34T/34TL
Apollo 1280x1024 @ 68Hz
Apollo 1280x1024 @ 70Hz
Chuntex CTX CPS-1560/LR
EIZO FlexScan 9080i, T660
Gateway 2000 CrystalScan 1776LE
HP 1280x1024 @ 72Hz
Highscreen LE 1024
Hitachi SuperScan 20S
Hyundai DeluxScan 14S, 15B, 15G, 15G+, 15 Pro, 17MB/17MS, 17B, 17B+, 17 Pro, hcm-421E
IDEK Vision Master
Impression 7 Plus 7728D
MAG DJ717, DX1495, DX1595, DX1795, Impression 17, MX15F
NEC MultiSync 2V, 3D, 3V, 3FGe, 3FGx, 4D, 4FG, 4FGe, 5FG, 5FGe, 5FGp, 6FG, 6FGp,
A500, A700, C400, C500, E500, E700, E1100, M500, M700, P750, P1150, XE15, XE17,
XE21, XP15, XP17, XP21, XV14, XV15, XV17, XV15+, XV17+
Nanao F340i-W, F550i, F550i-W
Nokia 445X, 447B
Optiquest Q41, Q51, Q53, Q71, Q100, V641, V655, V773, V775, V95, V115, V115T
Philips 7BM749, 1764DC
Princeton Graphics Systems Ultra 17
Quantex TE1564M Super View 1280
Samsung SyncMaster 15GLe, 15GLi, 15M, 17GLi, 17GLsi, 3, 3Ne, 500b/500Mb, 500s/500Ms,
500p/500Mp, 700b/700Mb, 700p/700Mp, 700s/700Ms
Samtron SC-428PS/PSL, SC-428PT/PTL, 5E/5ME, 5B/5MB, SC-528TXL, SC-528UXL, SC-
MDL, 7E/7ME/7B/7MB, SC-728FXL, SC-726GXL
Sony CPD-1430, CPD-15SX, CPD-100SF, CPD-200SF, CPD-300SF, CPD-100VS, CPD-
Sony Multiscan 100sf, 100sx, 200sf, 200sx, 15sf, 15sfII, 17se, 17seII
TARGA TM 1710 D
Tatung CM14UHE, CM14UHR, CMUHS
ViewSonic 15ES, 15GA, 15GS, 17, 17PS, 17GA, 5e, 6, 7, E641, E655, EA771, G653, G771, G773,
GT770, GT775, P775, PT770, PT775, P810, P815, PT813, VP140
Mice (listed in order of appearance in the selection list, horizontally, from left to right.)
Microsoft Standard mouse
Another possible option is to consider purchasing a "commercial" X server.
Two possible choices are:
These commercial servers often support a wider range of cards and monitors, due to the willingness of the developer of the X server software to abide by Non Disclosure Agreements required by some card manufacturers. In plain English, some card manufacturers refuse to work with the open source community. Something to consider the next time you get ready to purchase a video card.
Likewise, the generic VGA or SVGA monitors will usually at least get you up and running. However, as I have mentioned previously, DO NOT EXCEED THE CAPABILTIES OF YOUR CARD OR MONITOR! Otherwise, you may initiate what is called in the electronics world "a smoke test." This is a bad thing, and makes your house smell, as well as setting off your smoke detector.
If you do not have the documentation available, check the various docs in the /var/X11R6/lib/docs area, or search the Internet. Another possible option is to go directly to the manufacturer's website if available, and acquire the specifications there. A final option on some monitors, the synch rates is sometimes listed on the back along with the model number and other information.
Make sure, if at all possible, that your card and monitor are on the supported hardware list. This will save you a lot of grief and give you the best chance of success, as well as enabling you to take full advantage of the accelerated features of your video card.
At a bare minimum, you should have the following information available: Manufacturer, make and model of your video card: e.g. Matrox Millenium Amount of RAM resident on the video card: e.g. 8MB
Manufacturer, make and model of your monitor: e.g. Viewsonic 15E Horizontal synch rate of your monitor: e.g. 31.5-82.0 Vertical synch rate of your monitor: e.g. 40-100
A special note on mice: If at all possible, try to get a three-button mouse. X uses the middle button for some special functions. While it is possible to configure a two-button mouse to behave as a three-button mouse using an emulator that requires you to depress both buttons simultaneously to emulate the middle button, this feature is flaky at best on many mice and sometimes hard to master.
Note for PS/2 mice users: It has been reported that some users experience problems with the behavior of a PS/2 mouse under X. This is almost always due to the fact that the general-purpose mouse (gpm) program is being loaded at boot time, and for some reason, freaks out X.
Some have suggested adding a variety of switches or other parameters to the start up file that are purported to correct this problem. However, I have had limited success with these methods. Sometimes they will correct the problem, other times they will not.
What does work all the time is to comment out the start up of gpm at boot time.
On a Slackware machine, cd to /etc/rc.d/rc.local and place a pound sign (#) in front of the lines that look similar to the following:
# echo starting gpm # gpm /dev/mouse
Should you find the need to use gpm while in text mode, simply type gpm <return> and start it manually.
On a RedHat machine, from the command prompt, simply type setup <return>
You will be presented with a dialog box prompting you to select a configuration
tool. Select ntsysv then
tab to the run button and press return.
Scroll down the dialog box until you see an entry for gpm. Highlight this entry and depress the spacebar to remove the asterix (*), then exit.
Just as Unix or Linux will not run on marginal hardware that may work with Windows, it may or may not run on marginal or clone-type video cards and monitors.
While it is possible to "hand tune" X to work with just about any video card and monitor, to do so is NOT RECOMMENDED. Diddling around with your clock settings, choosing a card or monitor "similar" to your equipment, or just picking horizontal and vertical synch rates at random can damage or destroy your video card or monitor. DON'T DO IT!
The optimal configuration, and the only one I can recommend, is to make sure your video card and monitor are explicitly listed and supported by X before trying to configure and run it. While I do offer some suggestions for people with unsupported hardware, there is no guarantee these suggestions will work, nor do I offer any assurance that they won't damage your equipment. Proceed at your own risk.
The method and program used to accomplish this task will depend on which flavor of Linux you are using.
NOTE: The instructions listed below assume you are using Xfree86 3.3.2-2. If you are using one of the commercial X servers, such as MetroX or XInside, your configuration methods may be different. Please consult the documentation that comes with your commercial product.
The X configuration program for Slackware 3.5 is called XF86Setup. To start the program, at the command prompt, simply type:
You will be presented with a dialog box prompting you to switch to graphics mode. Select OK.
After a moment, you will enter the XF86Setup screen. Along the top of the screen will be a series of buttons to configure the various components of the X windowing system. They will appear in a horizontal row in the following order:
Mouse Keyboard Card Monitor Modeselection Other
The X configuration program for RedHat Linux is called Xconfigurator. To start the program, at the command prompt, simply type:
Press return to get past the welcome screen, then skip to the video card section.
This should already have been taken care of during installation. If you have something other than a three-button mouse, be sure to select the Emulate3Buttons option for maximum functionality under X.
The next option, Keyboard, should be already configured properly. Under normal circumstances, no adjustments should be required here.
This should already have been taken care of for you during installation. If not, break out of the Xconfigurator and run mouseconfig, then start over.
Select the card option from the menu at the top of your screen. Scroll down and select the appropriate video card for your system.
If necessary, you may also need to select the Detailed setup button to configure Chipset, RamDac, ClockChip, Device options, and the amount of video RAM on your card. Usually these options will be probed automatically. I only mention this so you can "tweak" the card if you are feeling brave.
The setup program will now autoprobe for your type and model of video card. On the plus side, this can simplify things, IF it properly identifies your card. On the minus side, if it does not, it does not offer you an alternative to manually choose the card. If your card is not properly identified, see the unsupported card section for some general suggestions on some things to try.
If you have the documentation available, you may enter the Horizontal and Vertical Synch rates manually in the input boxes, or alternately, you may choose one of the preset configurations in the scroll box.
It is almost always safe to choose either the Standard VGA or Super VGA option to start, then work up to the specific settings and color resolution you desire (subject to the limitations of your hardware.)
Lastly, select the Modeselection option, and choose your desired screen resolution and color depth. To begin with, less is better. Start with 640x480 @ 8bpp to start, then work your way up.
When you are finished with your configuration, select done from the bottom of the screen, and the setup program will attempt to start X with the configuration you have selected. If all goes well, you will be prompted to write the configuration to your XF86Config file and exit. If you have any problems, you will be prompted to try again until you have your configuration setup properly.
At the Monitor Setup dialog screen, scroll down and choose the appropriate monitor. If your monitor is not listed, choose generic or custom. If you choose custom, have your vertical sync rate and amount of video RAM handy, you will need them.
You will be presented with a dialog box that contains the same monitor choices listed in the Slackware section. After choosing a monitor, you will be prompted to select your vertical sync rate. Finally, you will be asked to specify the amount of video RAM present on your card.
After exiting the Xconfigurator program, you are ready to test your new configuration
Since X is infinitely configurable, and also stunningly cryptic at times, an in depth discussion of all the configuration options available under X is beyond the scope of this document. However, what follows are a few things you may be interested in.
A few words about the X desktop:
Stupid X Tricks:
If the X server refuses to start at all, pay close attention to the error messages that appear while the server errors out. Most frequently, this is an improperly configured monitor or card that causes the server to die. Check your configuration.
If the X server starts, but the screen exhibits an improper size, or excessive flickering, you probably need to adjust your horizontal or vertical sync rates.
If the screen appears to be unreadable, due to excessive lines or smearing of the pixels, check your card and monitor configurations.
Simply put, most problems can be traced back to an improper configuration of the card, the monitor, or both. This is why I strongly recommend making sure your hardware be explicitly supported, or using one of the "generic" configurations to start with.
Beyond this, check the documentation for specific card set problems, specific monitor problems, and other general troubleshooting procedures.
Another possible option is to troll the newsgroups for a similar problem, or post a brief description of the trouble you are having, and hopefully, someone with a similar problem they have solved before will get back to you.
If all else fails, drop me e-mail and I'll be glad to try to help.
I had originally planned to include the configuration of your basic networking setup into this installment as well, but as you can see, this is a real porker as it is. So look for the networking stuff in part three.
Linux Installation Primer #1, September 1998