Uvesafb

出自 ArchWiki
(重定向自 Framebuffer

本条目或章节需要语言、wiki 语法或风格改进。参见 Help:Style 以获取参考。

原因: 许多 Help:Style 问题(在 Talk:Uvesafb 中讨论)

本条目或章节需要扩充。

原因: 既然这是 framebuffer 的重定向页面,它应该提及什么是 framebuffer,它的作用,我们为什么关心它等等。(在 Talk:Uvesafb 中讨论)

与其他 framebuffer 驱动程序相比,uvesafb 需要一个用户空间虚拟化守护进程,称为 v86dAUR。在一个 x86 架构上模拟 x86 代码可能看起来很愚蠢,但如果想要在其他架构(特别是非 x86 架构)上使用 framebuffer 代码,这非常重要。它在内核 2.6.24 中添加,并且比标准的 vesafb 具有更多功能,包括

  1. 延迟后正确的屏幕关闭和硬件挂起
  2. 支持系统 BIOS 中的自定义分辨率。

它应该支持与 vesafb 一样多的硬件。

安装

安装 uvesafb-dkmsAUR 软件包。

配置

引导加载器配置中删除任何与 framebuffer 相关的内核参数,以禁用旧的 vesafb framebuffer 的加载。以下命令应返回无结果

$ 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.confHOOKS 数组中包含 modconf

要使更改生效,重新生成 initramfs 并重启系统。

优化分辨率

可以通过以下命令生成可能的分辨率列表

$ cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes

然后用户可以使用上面返回的任何条目修改 /usr/lib/modprobe.d/uvesafb.conf

检查当前分辨率

可以使用以下任一命令来显示当前 framebuffer 分辨率,作为检查设置是否生效的健全性检查

$ 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 framebuffer 覆盖为标准的 VESA framebuffer。

尝试将 video=vesa:off vga=normal 添加到内核命令行

参见