通过用 framebuffer 驱动,让console模式看上去更舒服一些;
正文
用 framebuffer 驱动及配置,主要是能让text模式下找到更适合的观感。
在fedora8上,framebuffer默认是不开启的,需要在启动时开启。方法是修改lilo或者grub配置文件。
fedora8 默认的引导程序是grub,修改时需要修改 /etc/grub.conf 或者 /boot/grub/menu.lst ,其实这两个文件都是一样的,因为 grub.conf 是 menu.lst的链接。修改需要root权限。
下面是framebuffer console的参数,主要是分辨率,修改配置文件时需要使用。
# Colours 640x480 800x600 1024x768 1280x1024 1600x1200
# --------+---------------------------------------------
# 256 | 769 771 773 775 796
# 32,768 | 784 787 790 793 797
# 65,536 | 785 788 791 794 798
# 16.8M | 786 789 792 795 799
如果看不懂上面的这个,就看下面的这个,对照着看吧
# Normal VGA console
# vga = normal
# VESA framebuffer console @ 1024x768x64k
# vga=791
# VESA framebuffer console @ 1024x768x32k
# vga=790
# VESA framebuffer console @ 1024x768x256
# vga=773
# VESA framebuffer console @ 800x600x64k
# vga=788
# VESA framebuffer console @ 800x600x32k
# vga=787
# VESA framebuffer console @ 800x600x256
# vga=771
# VESA framebuffer console @ 640x480x64k
# vga=785
# VESA framebuffer console @ 640x480x32k
# vga=784
# VESA framebuffer console @ 640x480x256
# vga=769
更多的:
hwinfo --framebuffer | grep Mode
Model: "NVIDIA GW-P/N@PM898486GTQ14P:0"
Mode 0x0300: 640x400 (+640), 8 bits
Mode 0x0301: 640x480 (+640), 8 bits
Mode 0x0303: 800x600 (+800), 8 bits
Mode 0x0305: 1024x768 (+1024), 8 bits
Mode 0x0307: 1280x1024 (+1280), 8 bits
Mode 0x030e: 320x200 (+640), 16 bits
Mode 0x030f: 320x200 (+1280), 24 bits
Mode 0x0311: 640x480 (+1280), 16 bits
Mode 0x0312: 640x480 (+2560), 24 bits
Mode 0x0314: 800x600 (+1600), 16 bits
Mode 0x0315: 800x600 (+3200), 24 bits
Mode 0x0317: 1024x768 (+2048), 16 bits
Mode 0x0318: 1024x768 (+4096), 24 bits
Mode 0x031a: 1280x1024 (+2560), 16 bits
Mode 0x031b: 1280x1024 (+5120), 24 bits
Mode 0x0330: 320x200 (+320), 8 bits
Mode 0x0331: 320x400 (+320), 8 bits
Mode 0x0332: 320x400 (+640), 16 bits
Mode 0x0333: 320x400 (+1280), 24 bits
Mode 0x0334: 320x240 (+320), 8 bits
Mode 0x0335: 320x240 (+640), 16 bits
Mode 0x0336: 320x240 (+1280), 24 bits
Mode 0x033d: 640x400 (+1280), 16 bits
Mode 0x033e: 640x400 (+2560), 24 bits
Mode 0x0345: 1600x1200 (+1600), 8 bits
Mode 0x0346: 1600x1200 (+3200), 16 bits
Mode 0x0347: 1400x1050 (+1400), 8 bits
Mode 0x0348: 1400x1050 (+2800), 16 bits
Mode 0x0349: 1400x1050 (+5600), 24 bits
Mode 0x034a: 1600x1200 (+6400), 24 bits
Mode 0x0352: 2048x1536 (+8192), 24 bits
Mode 0x0360: 1280x800 (+1280), 8 bits
Mode 0x0361: 1280x800 (+5120), 24 bits
Mode 0x0362: 768x480 (+768), 8 bits
Mode 0x0364: 1440x900 (+1440), 8 bits
Mode 0x0365: 1440x900 (+5760), 24 bits
Mode 0x0368: 1680x1050 (+1680), 8 bits
Mode 0x0369: 1680x1050 (+6720), 24 bits
Mode 0x037c: 1920x1200 (+1920), 8 bits
Mode 0x037d: 1920x1200 (+7680), 24 bits
色彩 | 640x400 | 640x480 | 800x600 | 1024x768 | 1280x1024 | 1600x1200 |
4bits | ? | ? | 0x302 | ? | ? | ? |
8bits | 0x300 | 0x301 | 0x303 | 0x305 | 0x307 | 0x31C |
15bits | ? | 0x310 | 0x313 | 0x316 | 0x319 | 0x31D |
16bits | ? | 0x311 | 0x314 | 0x317 | 0x31A | 0x31E |
24bits | ? | 0x312 | 0x315 | 0x318 | 0x31B | 0x31F |
32bits | ? | ? | ? | ? | ? | ? |
[对于大多数Linux发行版,如果您是用系统自带的内核,内核是支持 framebuffer 驱动的。可以用直接用下面的方法来做]
1.对于grub系统引导管理器的配置方法;
如果您用 grub来引导,要修改 /etc/grub.conf 或者 /boot/grub/menu.lst 。
比如我没有修改过的grub.conf 是这样的:
说明一下:我的机器目前安装了2个操作系统,一个是xp 另一个是Fedora8
代码:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,7)
# kernel /vmlinuz-version ro root=/dev/sda10
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,7)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.23.1-42.fc8)
root (hd0,7)
kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.23.1-42.fc8.img
title WIN
rootnoverify (hd0,0)
chainloader +1
我们要参照上面的参数表,对照看着在您要改变的 Linux 的 console分辨率的那个 kernel 一行的后面加上 vga=xxx ,这里的 xxx,就是通过上面的参数表中查出来的。
比如我是 15寸的液晶显示器,我看看一下 1024x768,24bit是不是适合,所以我就在 kernel 那行的后面打一个空格后,加上了 vga=0x318(这里0x表示16进制,换算成10进制是3*16^2+16+8=792)。虽然我的显式器是高分屏,标准分辨率1400*1050,选择上面的参数完全可以。
另外,如果分辨率选正确,而颜色选的较小,例如16bit,控制台播放电影或者观看图片时会出现类似花屏的失真,主要因为颜色较少(色深不够)。
修改后的代码如下:
代码:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,7)
# kernel /vmlinuz-version ro root=/dev/sda10
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,7)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.23.1-42.fc8)
root (hd0,7)
kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet vga=0x0318
initrd /initrd-2.6.23.1-42.fc8.img
title WIN
rootnoverify (hd0,0)
chainloader +1
这样改过保存后,重启系统,进入相应的 Linux ,就知道是不是起作用了。比如发现 vga=0x0318对我来说有点不适合。可以再找上面的参数来改一下就行了。
以下部分本人并未实践,从网上抄来:
2.对于 lilo引导管理器的配置方法;
我们要改 /etc/lilo.conf这个文件;lilo的配置比较简单,因为vga=xxx是独立的一行。并且lilo.conf中有详细的配置参数,也就是我上面列出的那些,就是来自 lilo.conf的。想打开哪个参数,就把vga=xxx前面的#号去掉就行,当然不能同时打开多个。
注意的是:如果改了lilo.conf后,得执行 lilo -v
四、对于自编译内核的,需要注意以下几点。
1.在编内核时,要选中如下的选项;以加入 framebuffer 驱动的支持;
[*] VGA text console[*] Video mode selection support[*] Support for frame buffer devices (EXPERIMENTAL)[*] VESA VGA graphics console[*] Advanced low level driver options
<*> 8 bpp packed pixels support
<*> 16 bpp packed pixels support
<*> 24 bpp packed pixels support
<*> 32 bpp packed pixels support
<*> VGA characters/attributes support[*] Select compiled-in fonts[*] VGA 8x8 font[*] VGA 8x16 font
2,我们还要知道自己所用的显示卡,也有 framebuffer的驱动,所以也要一并选中,比如
<*> nVidia Framebuffer Support
<*> ATI Radeon display support
在查看内核选项是,用 shift键+?号的组合键,就能看到详细情况;
后记:我对 framebuffer原理不明白,以我的水平也根本懂不了;我写的东西可能在句法中不通或者说是一点也不对。我只能以我应用的来说明,仅此而已;一切都是为了应用;
请弟兄们补充和订正,谢谢~