我用qemu虚拟了一个SuSE10.2。/boot/grub/menu.lst文件中有这么一行:
kernel /boot/vmlinuz-2.6.18.2-34-default root=/dev/hda2 vga=0x317 resume=/dev/hda1 splash=silent showopts
其中的vga=0x317(十进制是791)就是告诉BIOS开启framebuffer(/dev/fb0),使用图形模式。这样做有两个好处,一个是可以得到一个分辨率更大的彩色终端,另外一个是可以在启动时将logo打印上去(文本模式是肯定不行的,除非像BSD那样用字符画个logo)。BIOS只能在实模式下使用,因此如果不加vga内核选项,等Linux启动后进入了保护模式,就不可能再使用framebuffer了。
其实装好系统后,vga=0x314,但是这样只相当于800*600的分辨率,要变成1024*768的分辨率,将0x314改为0x317。真实情况下其实是分辨率太大,console的字体太小,看不清,这样我们就可以根据下面的表格调小分辨率。至于为什么,请参考文档/usr/src/linux/Documentation/fb/vesafb.txt
| 640x480 800x600 1024x768 1280x1024
----+-------------------------------------
256 | 0x301 0x303 0x305 0x307
32k | 0x310 0x313 0x316 0x319
64k | 0x311 0x314 0x317 0x31A
16M | 0x312 0x315 0x318 0x31B