红联Linux门户
Linux帮助

显示驱动:FrameBuffer,libggi,vga三种图形驱动

发布时间:2006-10-25 16:45:10来源:红联作者:febspeolal
显示驱动:framebuffer (最快), VGA (慢), libggi (慢).

FrameBuffer,可以译作“帧缓冲”,有时简称为fbdrv,基于fbdrv的console也被称之为fbcon。这是一种独立于硬件的抽象图形设备。 FrameBuffer的优点在于其高度的可移植性、易使用性、稳定性。使用Linux内核的FrameBuffer驱动(vesafb),可以轻松支持到1024X768X32bpp以上的分辩率。而且目前可得到的绝大多数linux版本所发行的内核中,已经预编译了FrameBuffer支持,通常不需要重新编译内核就可以使用。所以FrameBuffer也是zhcon推荐使用的驱动方式。

进入FrameBuffer可以简单地在系统启动时向kernel传送vga=mode-number的参数来激活FrameBuffer设备,如:
[code]lilo:linux vga=305[/code]
将会启动1024x768x8bpp模式。

[table=98%][tr][td][align=center]色彩[/align][/td][td][align=center]640x400[/align][/td][td][align=center]640x480[/align][/td][td][align=center]800x600[/align][/td][td][align=center]1024x768[/align][/td][td][align=center]1280x1024[/align][/td][td][align=center]1600x1200[/align][/td][/tr][tr][td][align=center]4bits[/align][/td][td][align=center]?[/align][/td][td][align=center]?[/align][/td][td][align=center]0x302[/align][/td][td][align=center]?[/align][/td][td][align=center]?[/align][/td][td][align=center]?[/align][/td][/tr][tr][td][align=center]8bits[/align][/td][td][align=center]0x300[/align][/td][td][align=center]0x301[/align][/td][td][align=center]0x303[/align][/td][td][align=center]0x305[/align][/td][td][align=center]0x307[/align][/td][td][align=center]0x31C[/align][/td][/tr][tr][td][align=center]15bits[/align][/td][td][align=center]?[/align][/td][td][align=center]0x310[/align][/td][td][align=center]0x313[/align][/td][td][align=center]0x316[/align][/td][td][align=center]0x319[/align][/td][td][align=center]0x31D[/align][/td][/tr][tr][td][align=center]16bits[/align][/td][td][align=center]?[/align][/td][td][align=center]0x311[/align][/td][td][align=center]0x314[/align][/td][td][align=center]0x317[/align][/td][td][align=center]0x31A[/align][/td][td][align=center]0x31E[/align][/td][/tr][tr][td][align=center]24bits[/align][/td][td][align=center]?[/align][/td][td][align=center]0x312[/align][/td][td][align=center]0x315[/align][/td][td][align=center][s0x318[/align][/td][td][align=center]0x31B[/align][/td][td][align=center]0x31F[/align][/td][/tr][tr][td][align=center]32bits[/align][/td][td][align=center]?[/align][/td][td][align=center]?[/align][/td][td][align=center]?[/align][/td][td][align=center]?[/align][/td][td][align=center]?[/align][/td][td][align=center]?[/align][/td][/tr][/table]
要使linux缺省进入FrameBuffer,可以修改/etc/lilo.conf,加入一下语句:
[code]vga=0x303[/code]

退出编辑,执行:
[code]lilo -v[/code]

重新启动linux,可以使其进入800x600的256色模式。

libggi,libggi是一个跨平台的绘图库。在Linux上,libggi是通过调用FrameBuffer或svgalib来完成图形操作的,可能速度速度比较慢。但在某些不支持FrameBuffer或是vga的系统上使用libggi仍然是一种不错的选择。
要使用libggi,需要设置GGI_DISPLAY环境变量,例如:
在.bash_profile中加入export GGI_DISPLAY=display-fbdev:-noinput
将使用libggi提供的接口来完成图形输出(使用FrameBuffer)。更详细的信息请参阅libggi的文档。

vga,如果您的内核并没有编译进对FrameBuffer的支持,那么可以使用内建的vga驱动来使显目工作在640x480x16色的模式下。因为vga驱动是直接对显卡上的寄存器操作,所以这种方式的移植性很差,速度也比较慢。


系统启动时会按以下顺序来选择图形驱动:libggi(如果设置了环境变量GGI_DISPLAY),framebuffer,vga.
文章评论

共有 1 条评论

  1. sbso 于 2010-10-04 13:35:08发表:

    顶一个,楼主讲的不错。