FreeBSD vidcontrol 模式无法正常工作

FreeBSD vidcontrol 模式无法正常工作

我在旧的 Compaq Presario 3550 上运行 FreeBSD 11.4。我想利用完整的 1024x768 显示屏,但 vidcontrol 似乎无法正常工作。这是我到目前为止所做的:

  1. 更改/boot/loader.conf为包含kern.vty=sc,因为vidcontrol -i mode使用 vt 而不是 sc 时给出了空列表。
  2. 运行vidcontrol -i mode提供了许多不同的支持模式(可能大约 40 种)。
  3. 运行vidcontrol MODE_261(size 1024x768x8 P) 似乎会调整显示器大小以使用完整分辨率,并将提示放置在屏幕的左上角。然而,大约 4 或 5 行之后,显示屏的整个下部就变成了 RGB 线的网格。几分钟之内,系统崩溃了。
  4. 有几个地方建议将 vesa 模块加载到内核中,但运行时kldload vesa给出了消息kldload: can't load vesa: module already loaded or in kernal。虽然我可以尝试按照所述从源代码重建内核这里,我不确定它是否有任何好处,因为 vesa 模块已经安装了。

我真的很感激任何指点。谢谢!

编辑1:不,这不是X11。这都是在仅限控制台模式下进行的。

编辑 2: vidcontrol VGA_80x50vidcontrol 80x50vidcontrol MODE_30都给出错误“vidcontrol: 设置视频模式: 无效参数”。请注意,模式 30 为 80x50,字体为 8x8。运行vidcontrol VESA_132x50给出了相同的错误,尽管vidcontrol VESA_132x25确实调整了宽度,但一切都被打乱了,迫使我使用vidcontrol 80x25.

编辑3:运行vidcontrol VESA_800x600有效。这是可以接受的,但我仍然希望获得完整的显示分辨率。

答案1

不幸的是,您机器上的 VESA 无法正常工作。为了设置模式,vesa覆盖帧vga缓冲区驱动程序的内核模块将模式设置请求从vga帧缓冲区驱动程序自己的模式设置代码转移到固件的 VESA 模式设置代码。显然,这没有正确设置显示适配器硬件。

要么您的 VESA 固件完全有问题,要么vesa覆盖层未正确使用它。不管怎样,唯一的解决方案是费力的内核调试,如果你不想发疯,可以使用串行控制台。

相关内容