| « Chrome OS Before Its Time | Dreaming Of Universal Audio Stacks » |
Never Fear; fbdev Is Here!
So I was trying to install the Fedora 12 Alpha KDE Live CD. Silly me. I knew this would be a terrifying effort in futility from the beginning, but I just had to do it.
Turns out the Nvidia GeForce GTX 280 in my desktop is one of several chips that are completely broken with the Nouveau drivers. The Nouveau drivers are an open source effort to bring Open Source, full 2d/3d/KMS support to Nvidia chipsets. Fedora 12 had the foresight to make them enabled _by default_ -- which, if you ask me, is a little bit crazy. But oh well. Fedora does a lot of silly things that break 99% of the configurations out there ![]()
My next problem is that neither nv nor vesa provided a suitable environment either! So not only was I out of luck with nouveau, but I was out of luck with drivers that are supposed to work with "any" graphics card. Very puzzling.
I tried various things: with and without KMS; trying to install the Nvidia proprietary drivers and so forth.
I almost got the nvidia proprietary drivers to work, except that the version of kernel-devel available from the package manager (as it's not on the live cd) is a different version than the live cd kernel. It seems all traces of the alpha RPMs are gone. Bah!
Then I stumbled upon a convenient epiphany: all the new KMS-enabled drivers (of which Nouveau is one) have fairly robust support for the old console framebuffer subsystem, usually mapped into the filesystem as /dev/fb0.
So if the 2d nouveau drivers were giving me hell, I may as well try doing something that uses the good ol' framebuffer -- right?
Right! And conveniently builtin to the live CD is something called `fbdev', which is the name of an Xorg 2d driver module that interacts with a framebuffer interface such as the aforementioned /dev/fb0.
The result is a working X server that lets you run the graphical liveinst program. I needed the graphical one (as opposed to the text based one) because only the Xorg-driven graphical one supports custom partitioning, and I had an existing /home partition that I carry around with me that I did not want to delete with the inflexible options of the text-only installer (Anaconda). If anyone who works on Anaconda is reading this: you could have saved me a lot of time by keeping the feature set of the text and graphical modes of the program in sync.
Now don't worry, I don't just tease and run; I'm going to tell you how to enable fbdev on any distro that provides it. fbdev is suitable for general purpose 2d applications in Xorg, but I am almost positive that it provides no 3d acceleration of any kind.
1. Edit the kernel command line in grub or isolinux, and make the following changes:
(a) Add the option "single"
(b) Delete the options "rhgb" and "quiet" if they are present
2. At the root shell:
dbus-daemon --fork --system
service haldaemon start
3. Edit /etc/X11/xorg.conf using your favorite console editor (vi, emacs, nano, etc):
Code:
Section "ServerLayout" | |
Identifier "L" | |
Screen 0 "S" 0 0 | |
EndSection | |
| |
Section "Device" | |
Identifier "D" | |
Driver "fbdev" | |
EndSection | |
| |
Section "Screen" | |
Identifier "S" | |
Device "D" | |
EndSection |
4. Run startx & at the console.
5. Come back to the console from the X server using a VT switch (CTRL+ALT+F1)...
6. Run your favorite window manager. kwin on Fedora 12 Alpha doesn't want to start for me; try mini-wm & or metacity --replace &. I ended up bringing up networking then installing twm, since I was using the KDE live CD which lacked metacity.
7. Run the live installer program. On Fedora 12 Alpha this is just the liveinst program.
This should enable anyone to install e.g. Fedora 12 Alpha, where there are known problems in the graphics stack on the Live CD that prevent normal installation. I'm also willing to bet that folks who hack on the graphics stack a lot appreciate fbdev.
Note: for those of you who don't yet have any kernel modesetting support for your hardware, you may still be able to find a driver ending in `fb' (e.g. neofb, nvidiafb, radeonfb, etc.) that provides the coveted /dev/fb0 interface. It should also switch your terminal to graphics mode (i.e. smaller text and a nicer font) when you load the module. Once you've got a terminal in graphics mode, even if you're not using kernel modesetting, you now have the ability to use fbdev to get an X server, as a last resort.
Feedback awaiting moderation
This post has 1 feedback awaiting moderation...