开启linux(redhat、ubuntu) FrameBuffer

本文详细介绍如何在Linux系统中通过LILO或GRUB引导装载器启用FrameBuffer,包括修改配置文件、设置显示模式等步骤,并提供适用于RedHat及Ubuntu的具体操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下在f9试验过,ubuntu9.04方法稍有不同(见后)                                                              

我在framebuffer开启后成功打开fb设备,移植了一个简单GUI进行点、线、面、园测试没有问题  


Linux -Lilo 模式启动

确保您的 Linux 内核包含了 FrameBuffer 支持,并包含了 VESA FrameBuffer驱动程序。RedHat Linux 6.x 及以上的发行版自带的内核中已经包含了该驱动程序。如果使用自己编译的内核,请检查您的内核配置。如果使用 LILO 引导装载器,则需要修改 /etc/lilo.conf 文件,在您所使用的内核选项段中,添加如下一行(使用 GRUB 的用户请转到第 6 步):vga=0x0317

这样,Linux 内核在启动时将把显示模式设置为 1024x768x16bpp 模式。如果您的显示器无法达到这种显示分辨率,可考虑设置 vga=0x0314,它对应 800x600x16bpp显示模式。修改后的 /etc/lilo.conf 文件类似:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux
image=/boot/vmlinuz-2.4.2
vga=0x0317 ; 这一行设置显示模式.
label=linux
read-only
root=/dev/hda6
other=/dev/hda1
label=dos

运行 lilo 命令,使所作的修改生效,并重新启动系统:
# lilo
# reboot
如果一切正常,将在 Linux 内核的引导过程中看到屏幕左上角出现可爱的 Linux 吉祥物——企鹅,或者 RedHat Linux 的蓝天白云产品徽标,并发现系统的显示模式发生了变化。

Linux -Grub 模式启动

如果读者使用的是 Red Hat 7.x 或者更高版本,并且在安装 Red Hat 时使用了 GRUB
而不是 LILO 作为引导装载器,则设置 FrameBuffer 的方法会有一些不同:

第一,要激活 VESA FrameBuffer 驱动程序,需要修改 /boot/grub/menu.lst 文件,并在kernel 打头的一行添加 vga=0x0317。您也可以复制已有的引导选项并修改复制之后的选项,例如:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/hda1
# initrd /boot/initrd-version.img
#boot=/dev/hda

default=0
timeout=10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-3, FrameBuffer)
root (hd0,0)
kernel /boot/vmlinuz-2.4.18-3 ro root=/dev/hda1 vga=0x0317
initrd /boot/initrd-2.4.18-3.img
title Red Hat Linux (2.4.18-3)
root (hd0,0)
kernel /boot/vmlinuz-2.4.18-3 ro root=/dev/hda1
initrd /boot/initrd-2.4.18-3.img

其中Red Hat Linux (2.4.18-3, FrameBuffer) 就是设置了 VESA FrameBuffer 的引导选项。

第二,修改了 /boot/grub/menu.lst 文件之后,重新启动系统即可,而无需执行类似 lilo 那样的命令。

 

VGA参数表

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

 

另Ubuntu开启

在Ubuntu中似乎不能直接在/boot/grub/menu.lst的内核参数中直接加入vga=xxx来开启Ubuntu FrameBuffer。需要做一些额外的工作。

1.  编辑 /etc/initramfs-tools/modules,在其中加入:

fbcon
vesafb
vga16fb

2. 编辑 /etc/modprobe.d/blacklist-Ubuntu FrameBuffer,注释掉以下两行:

blacklist vesafb
blacklist vga16fb

3. 修改 grub 的 menu.lst ,在内核一行结尾加入fb分辨率参数:

vga=0x317
这样控制台即为 1024x768,16位。

4. 刷新并重新启动

sudo update-initramfs -u

5. 安装并设置 zhcon

sudo apt-get install zhcon
可以在 /etc/bash.bashrc 里加入
alias zhcon='zhcon --utf8 --drv=fb'

现在 Ubuntu FrameBuffer 出来啦,打开 mplayer 享受以下控制台下看电影的乐趣吧。
Mplayer 在控制台下看视频要指定输出视频设备为 fbdev,由于设备普通用户无法直接访问,所以我这里只能 sudo 了。

<think>嗯,用户遇到了一个错误信息:“slient+qt:Failed to load one of xlib's shared libraries\nNo backends configured.”。首先,我需要确定用户的问题可能出在哪里。这个错误看起来和Qt应用程序在Linux环境下运行时缺少Xlib的共享库有关。可能用户的环境变量有问题,或者缺少必要的依赖库。 首先,我应该检查错误信息中的关键词。比如“xlib's shared libraries”说明X Window System相关的库可能没有正确安装或加载。Xlib是X11的客户端库,很多图形应用程序依赖它。而“No backends configured”可能意味着Qt无法找到可用的显示后端,比如X11或Wayland。 接下来,用户可能是在运行某个基于Qt的应用程序时遇到这个问题,特别是如果他们在使用无头环境或者没有正确配置显示服务器的情况下。比如在服务器上没有安装X11相关的库,或者DISPLAY环境变量没有设置正确。 然后,我需要考虑解决方案。首先,用户可能需要安装X11的开发库,比如在基于Debian的系统安装libx11-dev,或者在Red Hat系统安装libX11-devel。另外,可能需要安装Qt的X11平台插件,通常是qt5-qtx11extras或类似的包。同时,检查环境变量,确保DISPLAY变量正确设置,或者设置QT_QPA_PLATFORM环境变量为xcb,如果X11不可用的话。 还有,用户可能没有安装完整的Qt库,或者应用程序在部署时没有正确打包所需的平台插件。这时候需要检查Qt的安装路径,确保plugins/platforms目录下存在libqxcb.so这样的文件,并且应用程序能够找到这个目录。可能需要设置QT_PLUGIN_PATH环境变量指向正确的插件路径。 此外,如果用户是在无头服务器上运行,可能需要安装xvfb(X Virtual Framebuffer)来模拟显示环境,这样Qt应用程序可以在没有物理显示的情况下运行。 最后,需要建议用户根据他们的具体情况逐步排查,比如先安装必要的库,检查环境变量,验证Qt的安装情况,或者使用调试工具如strace来跟踪库加载的情况。</think>遇到 `slient+qt:Failed to load one of xlib's shared libraries\nNo backends configured.` 错误时,通常与 **Linux 环境下 Qt 应用程序的图形依赖库缺失或配置错误**有关。以下是逐步排查和解决方案: --- ### 1. **确认 X11 基础依赖** Qt 的图形界面(尤其是 X11 后端)依赖 X Window System 的基础库: - **安装缺失的库**: ```bash # Debian/Ubuntu sudo apt-get install libx11-dev libxcb-xinerama0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xkb1 # RedHat/CentOS sudo yum install libX11-devel libxcb libxcb-devel ``` --- ### 2. **检查 Qt 的 X11 插件** Qt 需要 `xcb` 或 `x11` 平台插件才能与 X Server 通信: - **安装 Qt 的 X11 扩展**: ```bash # Debian/Ubuntu sudo apt-get install qt5-qtx11extras # RedHat/CentOS sudo yum install qt5-qtbase-x11 ``` - **验证插件路径**: 确保 Qt 的 `platforms` 插件目录(如 `/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/`)包含 `libqxcb.so`。 --- ### 3. **配置环境变量** 若依赖库已安装但未正确加载: - **强制使用 `xcb` 后端**: ```bash export QT_QPA_PLATFORM=xcb ``` - **指定插件路径**(如果自定义安装 Qt): ```bash export QT_PLUGIN_PATH=/path/to/qt/plugins ``` --- ### 4. **调试库加载问题** 使用 `ldd` 检查二进制文件的依赖关系: ```bash ldd /path/to/your/qt-app | grep "not found" ``` 若输出显示 `libX11.so.6` 等库缺失,重新安装对应包。 --- ### 5. **无头环境特殊处理** 如果运行在无图形界面的服务器(如 Docker/SSH): - **安装虚拟显示服务**(如 `Xvfb`): ```bash sudo apt-get install xvfb Xvfb :99 -screen 0 1024x768x24 & export DISPLAY=:99 ``` - **或直接使用 `offscreen` 模式**: ```bash export QT_QPA_PLATFORM=offscreen ``` --- ### 6. **验证 Qt 安装** 检查 Qt 是否完整支持 X11: ```bash qmake -query QT_CONFIG ``` 输出应包含 `xcb x11`。 --- ### 总结 1. 安装 X11 和 Qt 的依赖库 2. 确保插件路径正确 3. 通过环境变量指定后端 4. 无头环境需虚拟显示或使用 `offscreen` 模式 若问题仍存,提供具体系统版本和 Qt 版本可进一步分析!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值