In 1989, Thomas Roell a german student complete the X-Window porting on an Intel 386 (i386). In those days the product was completely free, but available for i386 systems likes SCO and UNIX Interactive.
The porting was so excelent that I personally use it on my Gateway2000 i386 DX in 1992, with only 4 MB of RAM! (I use the twm also called Tab-Window manager. I also try to use MOTIF 1.0 that works with 4MB of RAM but was too slow).
After some discussions in 1991 between Thomas Roell and the team, he moves to Colorado and founded X Inside, today Xi Graphics Inc. To know more about XFree86 and Thomas Roell story, you can check: LJ Interviews Thomas Roell
XFree86 team was created after the Thomas Roell development. While X.org, is a copyright organization that belong to OpenGroup, XFree offers X servers at no cost, for the most important operating systems.
The XFree86 modules
The XFree86 project today, touchs version 4.0.2 (Jan 2001) supporting monitors like Silicon Graphics Flat with number nine Revolution IV, and runs also on the new Mac OS X beta, the new OS from Apple Inc.
XFree86 is organized in modules. The new version includes the following modules:
1. Xinstall.sh
The installer script
2. extract
The utility for extracting tarballs
3. Xbin.tgz
X clients/utilities and run-time libraries
4. Xlib.tgz
Some data files required at run-time
5. Xman.tgz
Manual pages
6. Xdoc.tgz
XFree86 documentation
7. Xfnts.tgz
Base set of fonts
8. Xfenc.tgz
Base set of font encoding data
9. Xetc.tgz
Run-time configuration files
10. Xvar.tgz
Run-time data
11. Xxserv.tgz
XFree86 X server
12. Xmod.tgz
XFree86 X server modules
This is the original work developed by the XFree86 team, then each distribution team re-organize these source and binaries to respect the appropriate family card.
The complete RELEASE Notes are included in this training course.
For example RedHat 7.0 offers:
In this way, XFree86 create the support for the graphic cards.
ReHat offers for its first release the "Xconfigurator" that automatically detect the card and ask for the appropriate monitor and graphical resolution setting. On XFree, the configuration file is "XF86Config" (on RedHat is located in "/etc/X11/")
This file is organized in section ... Monitor section ... keyboard section ... Pointer section ...
Section "Monitor"
Identifier "My Monitor"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 31.5-35.5
VertRefresh 50-70
Modeline "640x480" 25.175
640 664 760 800 480 491 493
525
Modeline "640x480" 28.3
640 664 760 800 480 491 493
525
ModeLine "800x600" 36
800 824 896 1024 600 601 603
625
EndSection
Section "Keyboard"
Protocol "Standard"
AutoRepeat 0 0
LeftAlt
Meta
RightAlt
Meta
ScrollLock Compose
RightCtl
Control
XkbDisable
EndSection
Section "Pointer"
Protocol "PS/2"
Device "/dev/mouse"
ZAxisMapping 4 5
EndSection
and screen section for each "display"
Section "Screen"
Driver "svga"
Device "svga"
Monitor "My Monitor"
Subsection "Display"
Depth
16
Modes
"800x600" "640x480"
ViewPort
0 0
EndSubsection
EndSection
Other important "section" is the monitor section:
Section "Monitor"
Identifier "ADI ProVista 14"
VendorName "Unknown"
ModelName "Unknown"
# HorizSync is in kHz unless units are specified.
# HorizSync may be a comma separated list of discrete values,
or a
# comma separated list of ranges of values.
# NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR
MONITOR'S
# USER MANUAL FOR THE CORRECT NUMBERS.
HorizSync 30.6-48.0
# VertRefresh is in Hz unless units are specified.
# VertRefresh may be a comma separated list of discrete values,
or a
# comma separated list of ranges of values.
# NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR
MONITOR'S
# USER MANUAL FOR THE CORRECT NUMBERS.
VertRefresh 50.0-100.0
# Modes can be specified in two formats. A compact one-line
format, or
# a multi-line format.
# These two are equivalent
# ModeLine "1024x768i" 45 1024 1048 1208 1264 768 776 784 817 Interlace
# Mode "1024x768i"
# DotClock
45
# HTimings
1024 1048 1208 1264
# VTimings
768 776 784 817
# Flags
"Interlace"
# EndMode
# This is a set of standard mode timings. Modes that are out
of monitor spec
# are automatically deleted by the server (provided the HorizSync
and
# VertRefresh lines are correct), so there's no immediate need
to
# delete mode timings (unless particular mode timings don't
work on your
# monitor). With these modes, the best standard mode that your
monitor
# and video card can support for a given resolution is automatically
# used.
# 640x400 @ 70 Hz, 31.5 kHz hsync
Modeline "640x400" 25.175 640
664 760 800 400 409 411 450
# 640x480 @ 60 Hz, 31.5 kHz hsync
Modeline "640x480" 25.175 640
664 760 800 480 491 493 525
# 800x600 @ 56 Hz, 35.15 kHz hsync
ModeLine "800x600" 36
800 824 896 1024 600 601 603
625
# 1024x768 @ 87 Hz interlaced, 35.5 kHz hsync
Modeline "1024x768" 44.9 1024 1048 1208
1264 768 776 784 817 Interlace
# 640x400 @ 85 Hz, 37.86 kHz hsync
Modeline "640x400" 31.5
640 672 736 832 400 401 404
445 -HSync +VSync
# 640x480 @ 72 Hz, 36.5 kHz hsync
Modeline "640x480" 31.5
640 680 720 864 480 488 491
521
# 640x480 @ 75 Hz, 37.50 kHz hsync
ModeLine "640x480" 31.5
640 656 720 840 480 481 484
500 -HSync -VSync
# 800x600 @ 60 Hz, 37.8 kHz hsync
Modeline "800x600" 40
800 840 968 1056 600 601 605
628 +hsync +vsync
# 640x480 @ 85 Hz, 43.27 kHz hsync
Modeline "640x480" 36
640 696 752 832 480 481 484
509 -HSync -VSync
# 1152x864 @ 89 Hz interlaced, 44 kHz hsync
ModeLine "1152x864" 65 1152
1168 1384 1480 864 865 875 985 Interlace
# 800x600 @ 72 Hz, 48.0 kHz hsync
Modeline "800x600" 50
800 856 976 1040 600 637 643
666 +hsync +vsync
# 1024x768 @ 60 Hz, 48.4 kHz hsync
Modeline "1024x768" 65 1024
1032 1176 1344 768 771 777 806 -hsync -vsync
# 640x480 @ 100 Hz, 53.01 kHz hsync
Modeline "640x480" 45.8
640 672 768 864 480 488 494
530 -HSync -VSync
# 1152x864 @ 60 Hz, 53.5 kHz hsync
Modeline "1152x864" 89.9 1152 1216 1472
1680 864 868 876 892 -HSync -VSync
# 800x600 @ 85 Hz, 55.84 kHz hsync
Modeline "800x600" 60.75 800
864 928 1088 600 616 621 657 -HSync
-VSync
# 1024x768 @ 70 Hz, 56.5 kHz hsync
Modeline "1024x768" 75 1024
1048 1184 1328 768 771 777 806 -hsync -vsync
# 1280x1024 @ 87 Hz interlaced, 51 kHz hsync
Modeline "1280x1024" 80 1280 1296
1512 1568 1024 1025 1037 1165 Interlace
# 800x600 @ 100 Hz, 64.02 kHz hsync
Modeline "800x600" 69.65 800
864 928 1088 600 604 610 640 -HSync
-VSync
# 1024x768 @ 76 Hz, 62.5 kHz hsync
Modeline "1024x768" 85 1024
1032 1152 1360 768 784 787 823
# 1152x864 @ 70 Hz, 62.4 kHz hsync
Modeline "1152x864" 92 1152
1208 1368 1474 864 865 875 895
# 1280x1024 @ 61 Hz, 64.2 kHz hsync
Modeline "1280x1024" 110 1280 1328 1512
1712 1024 1025 1028 1054
# 1024x768 @ 85 Hz, 70.24 kHz hsync
Modeline "1024x768" 98.9 1024 1056 1216 1408
768 782 788 822 -HSync -VSync
# 1152x864 @ 78 Hz, 70.8 kHz hsync
Modeline "1152x864" 110 1152 1240 1324
1552 864 864 876 908
# 1280x1024 @ 70 Hz, 74.59 kHz hsync
Modeline "1280x1024" 126.5 1280 1312 1472 1696 1024
1032 1040 1068 -HSync -VSync
# 1600x1200 @ 60Hz, 75.00 kHz hsync
Modeline "1600x1200" 162 1600 1664 1856 2160
1200 1201 1204 1250 +HSync +VSync
# 1152x864 @ 84 Hz, 76.0 kHz hsync
Modeline "1152x864" 135 1152 1464
1592 1776 864 864 876 908
# 1280x1024 @ 74 Hz, 78.85 kHz hsync
Modeline "1280x1024" 135 1280 1312 1456
1712 1024 1027 1030 1064
# 1024x768 @ 100Hz, 80.21 kHz hsync
Modeline "1024x768" 115.5 1024 1056 1248 1440
768 771 781 802 -HSync -VSync
# 1280x1024 @ 76 Hz, 81.13 kHz hsync
Modeline "1280x1024" 135 1280 1312 1416
1664 1024 1027 1030 1064
# 1600x1200 @ 70 Hz, 87.50 kHz hsync
Modeline "1600x1200" 189 1600 1664 1856
2160 1200 1201 1204 1250 -HSync -VSync
# 1152x864 @ 100 Hz, 89.62 kHz hsync
Modeline "1152x864" 137.65 1152 1184 1312 1536
864 866 885 902 -HSync -VSync
# 1280x1024 @ 85 Hz, 91.15 kHz hsync
Modeline "1280x1024" 157.5 1280 1344 1504 1728
1024 1025 1028 1072 +HSync +VSync
# 1600x1200 @ 75 Hz, 93.75 kHz hsync
Modeline "1600x1200" 202.5 1600 1664 1856 2160
1200 1201 1204 1250 +HSync +VSync
# 1600x1200 @ 85 Hz, 105.77 kHz hsync
Modeline "1600x1200" 220 1600 1616 1808
2080 1200 1204 1207 1244 +HSync +VSync
# 1280x1024 @ 100 Hz, 107.16 kHz hsync
Modeline "1280x1024" 181.75 1280 1312 1440 1696
1024 1031 1046 1072 -HSync -VSync
# 1800x1440 @ 64Hz, 96.15 kHz hsync
ModeLine "1800X1440" 230 1800 1896 2088
2392 1440 1441 1444 1490 +HSync +VSync
# 1800x1440 @ 70Hz, 104.52 kHz hsync
ModeLine "1800X1440" 250 1800 1896 2088
2392 1440 1441 1444 1490 +HSync +VSync
# 512x384 @ 78 Hz, 31.50 kHz hsync
Modeline "512x384" 20.160 512 528
592 640 384 385 388 404 -HSync -VSync
# 512x384 @ 85 Hz, 34.38 kHz hsync
Modeline "512x384" 22
512 528 592 640 384 385 388
404 -HSync -VSync
# Low-res Doublescan modes
# If your chipset does not support doublescan, you get a 'squashed'
# resolution like 320x400.
# 320x200 @ 70 Hz, 31.5 kHz hsync, 8:5 aspect ratio
Modeline "320x200" 12.588 320
336 384 400 200 204 205 225 Doublescan
# 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio
Modeline "320x240" 12.588 320
336 384 400 240 245 246 262 Doublescan
# 320x240 @ 72 Hz, 36.5 kHz hsync
Modeline "320x240" 15.750 320
336 384 400 240 244 246 262 Doublescan
# 400x300 @ 56 Hz, 35.2 kHz hsync, 4:3 aspect ratio
ModeLine "400x300" 18
400 416 448 512 300 301 302
312 Doublescan
# 400x300 @ 60 Hz, 37.8 kHz hsync
Modeline "400x300" 20
400 416 480 528 300 301 303
314 Doublescan
# 400x300 @ 72 Hz, 48.0 kHz hsync
Modeline "400x300" 25
400 424 488 520 300 319 322
333 Doublescan
# 480x300 @ 56 Hz, 35.2 kHz hsync, 8:5 aspect ratio
ModeLine "480x300" 21.656 480
496 536 616 300 301 302 312 Doublescan
# 480x300 @ 60 Hz, 37.8 kHz hsync
Modeline "480x300" 23.890 480
496 576 632 300 301 303 314 Doublescan
# 480x300 @ 63 Hz, 39.6 kHz hsync
Modeline "480x300" 25
480 496 576 632 300 301 303
314 Doublescan
# 480x300 @ 72 Hz, 48.0 kHz hsync
Modeline "480x300" 29.952 480
504 584 624 300 319 322 333 Doublescan
EndSection
Is possible to visualize X in two monitors, one monitor for each card at a different resolution, in this case will be necessary a separate screen section for each monitor.
The FrameBuffer device
A framebuffer device is an abstraction for the graphic hardware. Therefore you can run a graphical interface without to know anything about the low-level interface. This is the great advantage. The only disvantage is that this interface is not accelerated. For this reason different graphical installation programs tests and includes both modes.
The FrameBuffer is a device, like floppy or hard disk device.
The device are located in the same place:
[root@ftosx1 /root]# cd /dev/fb
fb fb0 fb1 fb2 fb3 fb4
fb5 fb6 fb7
[root@ftosx1 /root]# cd /dev/fb
You need to run a kernel that support this device. To activate it, you need to compile the kernel including the support for the VESA VGA graphics console, for example (for the kernel 2.2.17).

Now, you can reboot and check if the kernel are using the frame buffer device (fb)
[root@ftosx1 root]# cat /proc/fb
0 VESA VGA
Boot messages are:
Feb 17 14:49:20 ftosx1 kernel: vesafb: framebuffer at 0xe4000000,
mapped to 0xc4800000, size 32768k
Feb 17 14:49:20 ftosx1 kernel: vesafb: mode is 1024x768x16,
linelength=2048, pages=20
Feb 17 14:49:20 ftosx1 kernel: vesafb: protected mode interface
info at c000:7be0
Feb 17 14:49:20 ftosx1 kernel: vesafb: scrolling: redraw
Feb 17 14:49:20 ftosx1 kernel: vesafb: directcolor: size=0:5:6:5,
shift=0:11:5:0
Feb 17 14:49:20 ftosx1 kernel: Console: switching to colour
frame buffer device 128x48
Feb 17 14:49:20 ftosx1 kernel: fb0: VESA VGA frame buffer device
Now, to choose the resolution you must add a "vga" entry in the LILO, that will load the device at boot time.
For example adding "vga=791", in the specific LILO section: (See the file below)
[root@ftosx1 /root]# more /etc/lilo.conf
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
#vga=ask
# vga = 1 -> 80x50
vga=normal
timeout=50
lba32
default=linux_root
message=/boot/message
image=/boot/vmlinuz-2.2.14-5.0
label=linux_orig
read-only
root=/dev/hda2
image=/vmlinuz
label=linux_root
read-only
root=/dev/hda2
image=/vmlinuz-2.4.1
label=linux_2.4.1
read-only
root=/dev/hda2
image=/boot/vmlinuz-2.2.17
label=linux_2.2.17
vga=791
read-only
root=/dev/hda2
You will obtain a resolution on 1024x768 ... on the console. At you will see a "penguin logo" at boot time in the corner left corner.
If you apply the changes and reboot, if you run the command, "fbset", you will see the resolution
root@ftosx1 /root]# fbset
mode "1024x768-76"
# D: 78.653 MHz, H: 59.949 kHz, V: 75.694
Hz
geometry 1024 768 1024 768 16
timings 12714 128 32 16 4 128 4
rgba 5/11,6/5,5/0,0/0
endmode
A complete table for VESA resolution cards and the relative "vga" entry are listed here:
Colours 640x400 640x480 800x600 1024x768 1152x864
1280x1024 1600x1200
--------+--------------------------------------------------------------
4 bits | ?
? 0x302 ?
? ?
?
8 bits | 0x300 0x301 0x303
0x305 0x161 0x307
0x31C
15 bits | ? 0x310
0x313 0x316 0x162
0x319 0x31D
16 bits | ? 0x311
0x314 0x317 0x163
0x31A 0x31E
24 bits | ? 0x312
0x315 0x318 ?
0x31B 0x31F
32 bits | ?
? ?
? 0x164 ?
Documentation for the Frame buffer may be obtained from the:
Xi Graphics Inc is the company founded by Thomas Roell in Colorado in 1992 that follows the original "i386" porting maded by its founder. From its first developments the product offers a premium perfromance on Intel based systems.
To understand the Accelerated X Window Server (AX), we can list the
configuration file, Xaccel.ini for a Silicon
Graphics Flat Panel:
| //
// 3D Accelerated-X (tm) Display Server // created on Sat Sep 23 12:22:29 2000 // [FONTPATH]
[RGBPATH]
[KEYBOARD]
[MOUSE]
[SCREEN]
[RESOLUTIONS]
|
The previous configuration file was generated on the 3D-Accelerated
product. However, Xi Graphics support this monitor with the Number 9 -
Revolution IV graphic card, from 1999. XFree support this monitor only
from Dec 2000.
On Windows 2000(c), is possible to visualize this monitor from 640x400 up to 1600x1024, including 800x600 and other intermediate resolutions. XFree supports two published resolutions: 800x600 and 1600x1024 at different color depths (bpp - bit per palette) |
The simplicity in this configuration file is clear and immediate. While XF86Config, have a rudimentary section for each hardware component, AX have a section listing only a short number of lines. To change the resolution on AX, you can simply, edit the file and modify from 1600x1024 to 800x600 (if applicable). On XFree you need to change the mode lines and the server
Fast Training Linux Course includes an updated DEMO version for AX and LX (Laptop version) in the ExternalContribs directory.
However, Linux software developers like VM Ware Inc test its applications
on XFree. The latest Xi Graphics version, AX 6.0 solves also this problem.
To run the X Window System, "X", it is necessary to run a program called "xinit" or its shell "startx".
To customize this file you need to copy it to your home directory and apply your changes. The file name must be ".xinitrc".
Copy this file to the "root" directory, in other words do the command "cp /etc/X11/xinit/xinitrc /root/.xinitrc".
This file is similar to the following:
#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22
11:41:34 rws Exp $
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f $userresources ]; then
xrdb -merge $userresources
fi
if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi
# start some nice programs
twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login
We advise you to modify the lines as follows:
# start some nice programs
xclock -geometry 50x50-1+1 &
#xearth -markerfile xearthMarkers &
#xterm -geometry 80x20+494-0 &
xterm -geometry 80x40+0+0 -name login
&
exec fvwm > /dev/console 2>&1
#exec mwm > /dev/console 2>&1
#exec twm > /dev/console 2>&1
#exec afterstep > /dev/console 2>&1
Why these changes? We advise you to apply these
changes because without them you cannot exit from the "Root Menu" by pressing
the "Exit" botton. (The "Root Menu" appears when you press the left mouse
button in
the background).
As you can read in this file, there are X clients like "xterm", "xclock" and all the Window Managers that we want to use.
The comments start with a "#".
In this file we can include all the applications that we want to run at X-Window start-up.
When you apply your changes to the file "/root/.xinitrc"
or "/home/mary/.xinitrc", you only need to run "startx" to enter the X
environment!
In Linux "xdm" is the graphical login. The "xdm" resources belong to the dir "/etc/X11/xdm/", the xdm applications belong to the dir "/usr/bin/X11/".

Once installed, xdm lets you log into the system from a graphical login. After you enter you can run and start up your favorite X applications.
To activate "xdm" you need to: