Uvesafb
与其他帧缓冲驱动程序相比,uvesafb 需要一个用户空间虚拟化守护程序,称为 v86dAUR。在 x86 上模拟 x86 代码可能看起来很愚蠢,但如果有人想在其他架构(尤其是非 x86 架构)上使用帧缓冲代码,这很重要。它添加到内核 2.6.24 中,并且比标准 vesafb 具有更多功能,包括
- 延迟后正确的屏幕关闭和硬件挂起
- 支持自定义分辨率,如同在系统 BIOS 中一样。
它应该支持与 vesafb 一样多的硬件。
安装
安装 uvesafb-dkmsAUR 软件包。
配置
从 引导加载器 配置中删除任何与帧缓冲相关的 内核参数,以禁用旧的 vesafb 帧缓冲加载。以下命令应返回无结果
$ grep vga /proc/cmdline $ grep -ir vga /etc/modprobe.d/
如果您在某处有 vga=
选项,您将需要删除它。
mkinitcpio 钩子
将 v86d 钩子添加到 /etc/mkinitcpio.conf
中的 HOOKS。这允许 uvesafb 在启动时接管。
HOOKS=(base udev v86d ...)
定义分辨率
uvesafb 的设置在 /usr/lib/modprobe.d/uvesafb.conf
中定义。
关于 mode_option
的文档可以在 [1] 找到。
为了防止您的自定义设置在软件包更新时被覆盖,请将此文件复制到 /etc/modprobe.d/uvesafb.conf
# cp /usr/lib/modprobe.d/uvesafb.conf /etc/modprobe.d/uvesafb.conf
然后确保 /etc/mkinitcpio.conf
在 HOOKS
数组中包含 modconf
。
要使更改生效,重新生成 initramfs 并重启系统。
优化分辨率
可以通过以下命令生成可能的分辨率列表
$ cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes
然后,用户可以使用上面返回的任何条目修改 /usr/lib/modprobe.d/uvesafb.conf
。
检查当前分辨率
以下任一命令都可用于显示当前帧缓冲分辨率,作为检查设置是否生效的健全性检查
$ cat /sys/devices/virtual/graphics/fbcon/subsystem/fb0/virtual_size
$ cat /sys/class/graphics/fb0/virtual_size
内核模块参数
如果您编译自己的内核,那么您也可以将 uvesafb 编译到内核中,稍后运行 v86d。在这种情况下,选项可以作为 内核参数 以 video=uvesafb:options
格式传递。
故障排除
Uvesafb 无法保留内存
检查您是否忘记删除任何 vga=
内核参数 - 这会将 UVESA 帧缓冲替换为标准 VESA 帧缓冲。
尝试将 video=vesa:off vga=normal
添加到 内核命令行。