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.
Welcome to the second installment of the series. In this installment, you will configure your X server, choose a Window Manager (WM,) and learn a few things about how the X system works. Don’t worry, it’s not as hard as you’ve heard, and can even be a great deal of fun, so LET’S GET GRAPHICAL!
In this installment, I will cover the following topics:
- A brief introduction to the X windowing system
- Supported Hardware
- Unsupported Hardware
- Gathering Information about your hardware
- Safety concerns and precautions
- Starting the configuration program
- Configuration of the mouse under X
- Configuration of your video card
- Configuration of your monitor
- Testing your configuration
- Customization tips and tricks
- Troubleshooting your configuration
- Resources for further information
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.
A brief introduction to the X windowing system
This document will cover the configuration of the X windowing system, XFree86 version 3.3.2-2. This is the version that ships with both RedHat 5.1 and Slackware 3.5. If you are using a different version of XFree86, your mileage may vary, although many of the steps will remain the same.
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.
(The following information is excerpted from the Xfree86 3.3.2 documentation.) This documentation can be found in /var/X11R6/lib/docs/README.
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 1600×1200 (with 1MB of video memory). For other chipsets the display size is limited to approximately 800×600.
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 be 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:
Slackware 3.5: Standard VGA, 640×480 @ 60Hz Super VGA, 800×600 @ 56Hz 8514 Compatible, 1024×768 @ 87 Hz interlaced (no 800×600) Super VGA, 1024×768 @ 87 Hz interlaced, 800×600 @ 56 Hz Extended Super VGA, 800×600 @ 60 Hz, 640×480 @ 72Hz Non-Interlaced SVGA 1024×768 @ 60 Hz, 800×600 @ 72 Hz High Frequency SVGA, 1024×768 @ 70 Hz Multi-Frequency that can do 1280×1024 @ 60 Hz Multi-Frequency that can do 1280×1024 @ 74 Hz
Multi-Frequency that can do 1280×1024 @ 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 AOC-15 Apollo 1280×1024 @ 68Hz Apollo 1280×1024 @ 70Hz Axion CL-1566 CTX-1561 Chuntex CTX CPS-1560/LR Compudyne KD-1500N CrystalScan 1572FS DEC PCXBV-KA/KB Dell VS17 EIZO FlexScan 9080i, T660 ELSA GDM-17E40 ESCOM MONO-LCD-screen Gateway 2000 CrystalScan 1776LE Generic Monitor Generic Multisync HP 1280×1024 @ 72Hz Highscreen LE 1024 Hitachi SuperScan 20S Hyundai DeluxScan 14S, 15B, 15G, 15G+, 15 Pro, 17MB/17MS, 17B, 17B+, 17 Pro, hcm-421E IBM 8507 IDEK Vision Master Impression 7 Plus 7728D Lite-On CM1414E MAG DJ717, DX1495, DX1595, DX1795, Impression 17, MX15F MegaImage 17 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 Relisys RE1564 Sampo alphascan-17 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- 120VS, CPD-220VS Sony Multiscan 100sf, 100sx, 200sf, 200sx, 15sf, 15sfII, 17se, 17seII TARGA TM 1710 D Tatung CM14UHE, CM14UHR, CMUHS TAXAN 875 Unisys-19 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 MouseSystems MMSeries Logitech MouseMan MMHitTab GlidePoint Intellimouse ThinkingMouse BusMouse PS/2 Auto IMPS/2 ThinkingMousePS/2 MouseManPS/2 GlidePointPS/2 NetMousePS/2
If X does not directly support your video card and/or monitor, all may not be lost. Try choosing one of the « generic » cards and monitors that most closely resembles your hardware. The SVGA server is a good place to start if you have an unsupported card. Another possible option is the VGA16 server. Almost any card will run (at reduced performance) with one of these two servers.
Another possible option is to consider purchasing a « commercial » X server. Two possible choices are: MetroX http://www.metrolink.com/
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.
Gathering Information about your hardware
It is imperative that you know as much as you can about your video card and monitor. (You did keep those manuals and documentation didn’t you?)
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 and start it manually.
On a RedHat machine, from the command prompt, simply type setup
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.
Safety concerns and precautions
Although the X windowing system offers infinite flexibility and configurability, it is very picky about what hardware it will and will not run on.
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.
Starting the configuration program
Before you can actually use X, you must generate a configuration file that tells X about your video card, monitor, mouse, and some default preference information required to initialize the X environment and get it up and running. All of the following configuration steps will need to be done as root initially, then if necessary, you can create your own unique X configuration for each of your respective users.
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.
Configuration of the mouse under X
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.
Configuration of your video card
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.
Configuration of your monitor
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 640×480 @ 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
Testing your configuration
At the command prompt, simply type startx. If all went well, you should shortly be on your way. If for any reason X fails to start up, go back and run your configuration program again, double-checking that you have all the proper settings.
Customization tips and tricks
By default, both Slackware and RedHat install the FVWN95 Window Manager, a Windows 95 look-alike. This is probably a good start for users transitioning from a Windows based environment, as it will be the most familiar to you.
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:
- X allows the use of something called a virtual desktop, which is simply a fancy way of saying you can have a virtual desktop resolution that is larger than the actual resolution you have set your monitor to. As an example, say you have your card resolution to 1024×768 @ 32 bit color. X allows you to set your virtual desktop to 1280×1024, which some people love, and some people hate. If you want to disable this behavior, locate your XF86Config file, scroll down to the Screen sections, and look for a line similar to the following: Virtual 1280 1024. To disable the virtual screen, change this entry to the default screen resolution you have chosen, 1024 768 in this example. Similarly, to enable it, simply change to the next higher resolution, 1280 1024 in this example.
- FVWN95, as well as the other popular Window Managers, offer a variety of configuration options. Experiment with them until you find the one you like best.
- Finally, depending on your distribution, you may or may not have other Window Managers available to you. Experiment with the different ones available on your system until you find the one you like best. My personal favorite is Afterstep, but you may find you can’t live without one of the others. Choose the one you like best. Under FVWM95 on a Slackware box, choose Exit Fvwm95 from the Start menu, then choose the Window Manager you want to use from the drop down box accessed by moving your mouse to the right edge of the menu option, highlighting the arrow (>) that resides there. On a RedHat box, from the Start menu, choose Preferences/WM Style to change to a different Window Manager.
Stupid X Tricks:
- To start an X session, simply type startx at the command prompt.
- If you have configured your X server for more than one screen resolution, say 640×480, 800×600, and 1024×768, and you want to switch between the different resolutions, simply depress Cntrl+Alt+(either the plus (+) sign, or the minus (-) sign to switch to a higher or lower resolution, respectively. Why would you want to do this? I often do a great deal of Web Design on my machine, and being able to quickly see what a given page will look like at different resolutions is quite handy.
- To terminate an X session, you can either exit the session using the appropriate menu selection for your respective Window Manager, or you may depress Cntrl+Alt+Backspace.
- You may also set up your personal user accounts (you’re not always working as root are you?) by setting up an .xinitrc file in your home directory, if needed. Usually, this is only necessary on a Slackware box. On a RedHat box, I believe this is taken care of for you. Check the documentation.
Troubleshooting your configuration
Basically, there are only a few things that can go wrong with your X installation. Either the X server will refuse to start at all, the X server will start but you get a blank screen, or the X server will start, but for one reason or another, the screen will be improperly sized, flickering, or unreadable.
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.
Resources for further information
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