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 和 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 中默认刷新率和时序的视频模式。