Uvesafb

出自 ArchWiki

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

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

本条目或章节需要扩充。

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

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

  1. 延迟后正确的屏幕关闭和硬件挂起
  2. 支持自定义分辨率,如同在系统 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.confHOOKS 数组中包含 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 添加到 内核命令行

参见