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

1. 要求

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

与其他驱动程序不同,uvesafb 使用名为 v86d 的用户空间辅助程序。v86d 用于在模拟和受控环境中运行 x86 视频 BIOS 代码。这允许 uvesafb 在 x86 以外的架构上运行。请查阅 v86d 文档以获取当前支持的架构列表。

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

请参阅 v86d 文档以获取详细的配置和安装说明。

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

2. 注意事项和限制

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

  • 缺少任何类型的加速。

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

  • 只有符合 VBE 3.0 标准的视频 BIOS 才能调整刷新率。 请注意,许多 nVidia 视频 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

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

<模式>

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

vbemode:x

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

nocrtc

设置视频模式时不使用 CRTC 时序。 仅当视频 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

视频 BIOS 支持的视频模式列表及其十六进制 VBE 模式编号。

vbe_version

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

5. 其他

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

Michal Januszewski <spock@gentoo.org>

上次更新时间:2017-10-10

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