uvesafb - VBE2+ 兼容显卡的通用驱动

1. 要求

uvesafb 应该适用于任何具有符合 VBE 2.0 标准的 Video BIOS 的显卡。

与其他驱动程序不同,uvesafb 使用一个名为 v86d 的用户空间辅助程序。 v86d 用于在模拟和受控环境中运行 x86 Video BIOS 代码。 这使得 uvesafb 可以在 x86 以外的架构上运行。 有关当前支持的架构列表,请查看 v86d 文档。

v86d 源代码可以从以下网站下载

有关详细的配置和安装说明,请参阅 v86d 文档。

请注意,为了使 uvesafb 正常工作,v86d 用户空间辅助程序必须始终可用。 如果您想在启动早期使用 uvesafb,您必须将 v86d 包含到 initramfs 映像中,并将其编译到内核中或用作 initrd。

2. 注意事项和限制

uvesafb 是一个_通用_驱动程序,它支持各种各样的显卡,但最终受到 Video BIOS 接口的限制。 最重要的限制是

  • 缺乏任何类型的加速。

  • 一套严格且有限的支持的视频模式。 通常,您的设置的本机或最合适的分辨率/刷新率将无法与 uvesafb 一起使用,这仅仅是因为 Video BIOS 不支持您想要使用的视频模式。 这对于宽屏面板来说尤其令人痛苦,因为本机视频模式没有 4:3 的宽高比,而这正是大多数 BIOS 限制的。

  • 仅当 Video BIOS 符合 VBE 3.0 时,才能调整刷新率。 请注意,许多 nVidia Video BIOS 声称符合 VBE 3.0,但它们只是忽略任何刷新率设置。

3. 配置

uvesafb 既可以编译为模块,也可以直接编译到内核中。 在这两种情况下,它都支持相同的配置选项集,这些选项在内核命令行上给出或作为模块参数给出,例如

video=uvesafb:1024x768-32,mtrr:3,ywrap (compiled into the kernel)

# modprobe uvesafb mode_option=1024x768-32 mtrr=3 scroll=ywrap  (module)

接受的选项

ypan

使用 VESA 保护模式接口启用显示平移。 可见屏幕只是视频内存的一个窗口,控制台滚动通过更改窗口的起始位置来完成。 此选项仅在 x86 上可用,并且是该架构上的默认选项。

ywrap

与 ypan 相同,但假设您的 gfx 板可以环绕视频内存(即,如果到达视频内存的末尾,则从顶部开始读取)。 比 ypan 快。 仅在 x86 上可用。

redraw

通过重绘屏幕的受影响部分进行滚动,这是非 x86 上的默认设置。

(如果您使用 uvesafb 作为模块,则以上三个选项用作 scroll 选项的参数,例如 scroll=ypan。)

vgapal

使用标准 VGA 寄存器进行调色板更改。

pmipal

使用保护模式接口进行调色板更改。 如果保护模式接口可用,则这是默认设置。 仅在 x86 上可用。

mtrr:n

为帧缓冲设置内存类型范围寄存器,其中 n

  • 0 - 禁用(相当于 nomtrr)

  • 3 - 写合并(默认)

除 0 和 3 以外的值将导致警告,并将被视为与 3 相同。

nomtrr

不要使用内存类型范围寄存器。

vremap:n

重新映射 'n' MiB 的视频 RAM。 如果为 0 或未指定,则根据视频模式重新映射内存。

vtotal:n

如果您的显卡的 Video BIOS 错误地确定了视频 RAM 的总量,请使用此选项覆盖 BIOS(以 MiB 为单位)。

<mode>

您要设置的模式,采用标准 modedb 格式。 有关详细说明,请参阅 modedb 默认视频模式支持。 当 uvesafb 编译为模块时,模式字符串应作为 'mode_option' 选项的值提供。

vbemode:x

强制使用 VBE 模式 x。 只有在 VBE 提供的支持模式列表中找到该模式时,才会设置该模式。 注意:模式编号 'x' 应以 VESA 模式编号表示法指定,而不是 Linux 内核表示法(例如 257 而不是 769)。 提示:如果您使用此选项是因为正常的 <mode> 参数对您不起作用,并且您使用 X 服务器,您可能需要设置 'nocrtc' 选项以确保在控制台 <-> X 切换后正确恢复视频模式。

nocrtc

设置视频模式时不要使用 CRTC 时序。 仅当 Video BIOS 符合 VBE 3.0 时,此选项才有效。 如果您在使用标准方式设置的模式时遇到问题,请使用它。 请注意,使用此选项意味着任何刷新率调整都将被忽略,并且刷新率将保持在您的 BIOS 默认值(60 Hz)。

noedid

不要尝试获取和使用 EDID 提供的模式。

noblank

禁用硬件消隐。

v86d:path

设置 v86d 可执行文件的路径。 此选项仅作为模块参数可用,而不作为 video= 字符串的一部分。 如果您需要使用它并且已将 uvesafb 构建到内核中,请使用 uvesafb.v86d="path"。

此外,还可以提供以下参数。 它们都会覆盖 EDID 提供的值和 BIOS 默认值。 请参阅您的显示器的规格,以获取 maxhf、maxvf 和 maxclk 的正确值。

maxhf:n

最大水平频率(以 kHz 为单位)。

maxvf:n

最大垂直频率(以 Hz 为单位)。

maxclk:n

最大像素时钟(以 MHz 为单位)。

4. sysfs 接口

uvesafb 提供了多个 sysfs 节点,用于可配置的参数和其他信息。

驱动程序属性

/sys/bus/platform/drivers/uvesafb
v86d

(默认值:/sbin/v86d)

v86d 可执行文件的路径。 如果守护进程的实例尚未运行,则 uvesafb 会启动 v86d。

设备属性

/sys/bus/platform/drivers/uvesafb/uvesafb.0
nocrtc

如果设置为 1,则使用默认刷新率 (60 Hz)。

oem_product_name, oem_product_rev, oem_string, oem_vendor

有关卡及其制造商的信息。

vbe_modes

Video BIOS 支持的视频模式列表,以及它们的 VBE 模式编号(十六进制)。

vbe_version

一个 BCD 值,指示已实现的 VBE 标准。

5. 杂项

如果您在 fb_var_screeninfo 中将 pixclock 设置为 0,Uvesafb 将使用 Video BIOS 中的默认刷新率和时序设置视频模式。

Michal Januszewski <spock@gentoo.org>

上次更新:2017-10-10

uvesafb 选项的文档大致基于 什么是 vesafb?