Redhat 6.0 and Framebuffer devices HOWTO

Redhat 6.0 and Framebuffer devices

It used to be the case that if you wanted to run X, you needed to buy a video card that had been shipping for 6-12 months. This period was needed in order for XFree86 to "catch up" and support it.

With Linux kernel 2.2 and the VESA framebuffer device, that requirement is gone. Now you can select any video card that is VESA 2.0 compliant. You will be able to run the card as a framebuffer device while you are waiting for a native X server to be developed for it. The performance of the card won't be great, but it will allow you to use X without having to buy last years video card.

There are many documents and HOWTO's available on the internet that talk about what you need in order to get the framebuffer device going. For example: The Framebuffer HOWTO .

The good news is that with Redhat 6.0, you don't need to do much. Redhat 6.0 comes with all the kernel options turned on that you need. The only thing Redhat forgot to do was to give you the option to select the device during installation. Bad Redhat!

This document describes the quick way to get a framebuffer device running on Redhat 6.0. It was tested with an ATI Rage Fury (128 bit, 32MB).

Step 1: adjust /etc/lilo.conf

The first step is to adjust your /etc/lilo.conf file. I ended up having three aliases for booting linux:

Here is what my /etc/lilo.conf file looks like. Make yours look similar (but, of course, use the appropriate boot and root values for your hard disk).

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.5-15
        label=linux
        root=/dev/hda4
        initrd=/boot/initrd-2.2.5-15.img
        VGA=0x317
        read-only
image=/boot/vmlinuz-2.2.5-15
        label=askmode
        root=/dev/hda4
        initrd=/boot/initrd-2.2.5-15.img
        VGA=ASK
        read-only
image=/boot/vmlinuz-2.2.5-15
        label=charmode
        root=/dev/hda4
        initrd=/boot/initrd-2.2.5-15.img
        read-only
other=/dev/hda1
        label=win
        table=/dev/hda
Now that you've got your /etc/lilo.conf ready, run lilo:
	# lilo

This converts and saves the lilo.conf file to a place on the disk where the boot program can find it. You have to do this to make your /etc/lilo.conf configuration take effect on the next boot.

Step 2: Reboot and test VESA support

Now reboot your computer:
	# init 6
At the boot prompt, select askmode:
	boot: askmode
At the VGA prompt, enter a VESA mode number from this table. I suggest trying 0x317 (1024x768x16) first, since that is generally considered the minimum usable X configuration:
Colors    640x400 640x480 800x600 1024x768 1280x1024 1600x1200
--------+-----------------------------------------------------
 4 bits |    ?       ?     0x302      ?        ?         ?
 8 bits |  0x300   0x301   0x303    0x305    0x307     0x31C
15 bits |    ?     0x310   0x313    0x316    0x319     0x31D
16 bits |    ?     0x311   0x314    0x317    0x31A     0x31E
24 bits |    ?     0x312   0x315    0x318    0x31B     0x31F
32 bits |    ?       ?       ?        ?        ?         ?

If everything went OK, you should see the screen flicker, a penguin will appear at the top of the screen, and your machine should boot normally. Proceed to step 3.

If everything did not go OK, you can try another mode. Or, you can give up, boot into charmode, and run off to the store to buy a different video card.

Step 3: Configure X

Congratulations, you are now in console mode running with a framebuffer device. The next step is to configure /etc/X11/XF86Config.

Start with an /etc/X11/XF86Config file that is correct for your monitor and mouse by running Xconfigurator. Don't worry about the video card selection when you do this, and avoid letting Xconfigurator try to probe or test your board. All you want is a skeleton file that you can edit.

Get rid of all of the "Device" and "Screen" sections at the bottom of the file, and replace them with something like this:

Section "Device"
    Identifier  "FURY"
    VendorName  "ATI"
    BoardName   "fury"
    VideoRam    32768
EndSection

Section "Screen"
    Driver      "FBDev"
    Device      "FURY"
    Monitor     "Sony CPD-15SX1"
    Subsection "Display"
        Depth       16
        Modes       "default"
    EndSubsection
EndSection

Note that that strings used for Identifier and Device are arbitrary, but must match.

Note that the strings VendorName and BoardName are aribtrary.

Note that the Depth should match the framebuffer depth you are using.

Note that the Monitor string should be the name of a Monitor in your config file (put there when you ran Xconfigurator).

Step 4: Link X server

Now link the framebuffer X server to be your default X server:

	# cd /etc/X11
	# rm -f X
	# ln -s ../../usr/X11R6/bin/XF86_FBDev X

Step 5: Start X

You should be all set. Start the X server:

	$ startx

Step 6: Try other modes

Now that you have X running, you can reboot into askmode and try other modes, such as 1280x1024, etc. When you have found the mode that suits you best, make that the default mode value when booting linux in your /etc/lilo.conf file. Don't forget to run lilo!

Step 7: Periodically check for X server

The framebuffer device is just a bandaid. You should check http://www.xfree86.org periodically to see if a new X server is available with native support for your video card. You'll want to use a native X server to get the best performance from your video card.


Rick Richardson, 05/03/99
rick@dgii.com