linux 开启支持FrameBuffer--解决打开devfb0失败的问题

    技术2022-07-02  68

    FrameBuffer,可以译作“帧缓冲”,有时简称为fbdrv,基于fbdrv的console也被称之为fbcon。这是一种独立于硬件的抽象图形设备。FrameBuffer的优点在于其高度的可移植性、易使用性、稳定性。

    使用Linux内核的FrameBuffer驱动(vesafb),可以轻松支持到1024X768X32bpp以上的分辩率。而且目前可得到的绝大多数linux版本所发行的内核中,已经预编译了FrameBuffer支持,通常不需要重新编译内核就可以使用。所以FrameBuffer也是zhcon推荐使用的驱动方式。 进入FrameBuffer可以简单地在系统启动时向kernel传送vga=mode-number的参数来激活FrameBuffer设备,如: lilo:linux vga=305 将会启动1024x768x8bpp模式。

    色彩 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,可以修改/etc/lilo.conf,加入一下语句: vga=0x303 退出编辑,执行: lilo -v 重新启动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.

     

    如果是grup的启动程序可设置boot/grub/menu.lst文件.

     

    以上设置后可解决程序打开/dev/fb0失败的问题.


    最新回复(0)