Linux X-Window显卡配置通用解决方法

作 者: 阿宁 (2001-05-10 10:03:09)许多新显卡一时得不到;XFree86的支持,配置;XWindow一直是个难题 。但;Linux;2.2.x的;frame;buffer设备可通过;VESA;VBE;2.0标准利用显卡的;Super;VGA特性,然后配合;XFree86的;frame;buffer;Server(XF86_FBDev);就可让你的;XWindow用高分辨率和高/真彩 。现在市面上绝大部分新出的显卡都支持VESA;2.0标准 。在你的显卡得不到支持之前,这不失为一个好的解决方法 。;

具体实现涉及四方面:;
1.一个支持;VESA;frame;buffer的内核;;
2.建立;frame;buffer设备;;
3.配置;lilo;的启动选项,使内核启动时能切换到指定的显示模式;;
4.XFree86的;frame;buffer;Server(XF86_FBDev),以及在;XF86Config中为其配置一个Screen 。;

所需文件:;
Linux;2.2.x;kernel;source;(2.2.x内核原代码,如果要自行编译内核);;
XFree86;Framebuffer;Server:;XF86_FBDev;(Turbo;Linux中文版,RedHat6.0;CD,ftp.xfree86.org;等地方都能找到);;
gcc;等编译工具 。;

编译一个支持;VESA;frame;buffer的内核;

如果有现成的支持;VESA;frame;buffer的内核可跳过这一步 。如;Madrake;6.0中就带有支持;frame;buffer的内核 。;

配置内核编译选项;

在/usr/src/linux中键入make;xconfig(XWindow下),或make;menuconfig(命令行下) 。;

与;frame;buffer;device有关的选项有(其余编译选项请参考其它资料):;

Code;maturity;level;opetions
y;Prompt;for;development;and/or;incomplete;codes/drivers
Console;drivers
y;Video;mode;selection;support
...
y;Support;for;frame;buffer;devices
...
y;VESA;VGA;graphics;console
...
y;Advance;low;level;driver;options
...;
y;8;bpp;packed;pixels;support;
y;16;bpp;packed;pixels;support
y;24;bpp;packed;pixels;support;

编译安装内核:;

以;root身份登录,键入以下命令:;

#;cd;/usr/src/linux
#;make;bzImage
#;make;modules
#;make;modules_install;

把编译好的内核拷到 /boot目录,文件名可自定,如 ;

#;cp;/usr/src/linux/arch/i386/boot/bzImage;/boot/vmlinuz-2.2.5-fb;

建立;frame;buffer设备;

frame;buffer设备的;major为;29,minor;为;0(fb0),32(fb1).;.;.;224(fb7) 。;

创建fb设备;

#;mknod;/dev/fb0;c;29;0;
....;

配置;lilo;的启动选项;

添加lilo启动配置;

下面是典型的lilo.conf文件(位于/etc目录);

boot;=;/dev/hda2
timeout;=;500
prompt
read-only
image;=;/boot/vmlinuz-2.2.x
label;=;linux
root;=;/dev/hda2
other;=;/dev/hda1
label;=;dos;

添加一新配置需添加;image,label,root及配合VESA;frame;buffer的;vga等四项:;

boot;=;/dev/hda2
timeout;=;500
prompt
read-only
image;=;/boot/vmlinuz-2.2.x
label;=;linux
root;=;/dev/hda2
image;=;/boot/vmlinuz-2.2.5-fb;(新编译的内核)
label;=;linuxfb;(启动标号,可自定)
root;=;/dev/hda2;(着一句具体会有不同,照你自己的lilo.conf)
vga;=;0x314;(显示模式,参照下表)
other;=;/dev/hda1
label;=;dos;

Linux_kernel_mode_number;=;VESA_mode_number; ;0x200
640x480;800x600;1024x768;1280x1024;
256;0x301;0x303;0x305;0x307;
32k;0x310;0x313;0x316;0x319;
64k;0x311;0x314;0x317;0x31A;
16M;0x312;0x315;0x318;0x31B;

更新启动程序;

运行lilo;

重启,出现;lilo:;时键入linuxfb;(或自定的标号) 。;

这时如果linux切换成图形模式,并有一小企鹅logo出现,那就大功告成一半 。;

配置frame;buffer;Server;

为;frame;buffer;Server配置Screen;

参照;XF86Config;(位于/etc/X11、/usr/X11R6/lib)中;vga16的配置 。;

例如:;

Section;"Screen"
Driver;"vga16"
Device;"My;Video;Card"
Monitor;"MAG;XJ500T"
Subsection;"Display"
Modes;"640x480";"800x600"

推荐阅读