
(*).    Framebuffers, X11 and DRI


(*).1.    The kernel framebuffer devices

Since 2.1.108 Linux supports framebuffer devices on x86 PCs (framebuffer
devices for other architectures long before that).  You can use the
framebuffer drivers from the official kernel by enabling the appropriate 
driver in the 'Console Drivers' | 'Framebuffer support' in the kernel
configuration menu. With a decent graphics card, you get a nice, crisp,
hi-resolution text-console with room for plenty more text than the default
VGA resolution offers. Make sure you read the apropriate documentation in
/usr/src/linux/Documentation/fb/ as well. To get a hi-resolution
console, you also need to edit /etc/lilo.conf in order to pass the correct
options to the framebuffer driver.

There are other excuses for running a framebuffer device, than the 
framebuffer console.

Sometimes, a graphics card is not directly supported by XFree86, but 
your card is VESA 2.0 compatible. In that case, you can build a kernel 
with framebuffer support for VESA 2.0 compatible cards, and run the 
Xserver with the framebuffer module loaded. (See below)


(*).2.    XServer (XFree86)

ROCK Linux comes with the XFree86 Xserver. (Currently 4.0.x)
One notable difference between XFree86 3.3.x and 4.0.x, is that 4.0.x
has just one Xserver, whereas 3.3.x had many. Instead of using one
particular Xserver supporting your particular (family of) graphics,
you load the apropriate modules for your hardware.

The XFree86 server can easily be configured with the xf86config script,
which is the way it has been done for a very long time with the XFree86
Xservers. With the release of 4.0.1, you also get the option of autoprobing
the graphics and get a suitable skeleton for the configuration file.
(/etc/X11/XF86Config)
To build the skeleton file, make sure X isn't running, and execute
XFree86 -configure       as root.
The configuration file gets written to /root/XF86Config.new.
You will most likely want to edit this file, before copying it into
/etc/X11/XF86Config

In particular, you may want to add additional modules in the
"Modules" section, like `v4l`, and you definitely want to add 
HorizSync and VertRefresh to the "Monitor" section.
The former is a range in kHz, the latter a range in Hz.
This is one of the very few places where it is possible to destroy
hardware by issuing the wrong keystrokes at the keyboard. Please check
your monitor vendor's documentation and do not exceed the ratings given
for your monitor.

Unless you want to play with oddball resolutions, the default (not listed)
modelines should be sufficient for most people. But you still want to
tell X what depth and resolutions you want to be able to use. My
Screen section looks like this:

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 16
        SubSection "Display"
                Depth     16
                Modes   "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth     24
        EndSubSection
EndSection



(*).3.    DRI

DRI is the Direct Rendering Infrastructure.  This is needed for hw-accellerated 
OpenGL. [FIXME: expand on this]
Also see http://dri.sourceforge.net/


(*).4.    Windowmanager

The default work-environment of ROCK Linux is the sawfish windowmanager in 
combination with GNOME. If you don't like sawfish/GNOME you can use the X11 
standard widowmanager 'twm' or build your favorite windowmanager (f.ex. IceWM)
from the sourcecode. To use 'twm' just set the
enviroment variable 'USE_TWM' to a non-zero value when starting X11 with 'xdm'
or 'startx'.  In the default twm configuration of ROCK Linux you can open an
xterm window with right-clicking the root window (i.e. the "desktop").

In order to use your favorite wm, build and install it, then create a file
in your home directory named .xinit.

The authors .xinit contains:
#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11/bin:
exec /usr/local/bin/icewm

Copy this file to .xsession, and the "right thing" happens no matter if you
start X with xdm or startx.



