我在旧的 Compaq Presario 3550 上运行 FreeBSD 11.4。我想利用完整的 1024x768 显示屏,但 vidcontrol 似乎无法正常工作。这是我到目前为止所做的:
- 更改
/boot/loader.conf
为包含kern.vty=sc
,因为vidcontrol -i mode
使用 vt 而不是 sc 时给出了空列表。 - 运行
vidcontrol -i mode
提供了许多不同的支持模式(可能大约 40 种)。 - 运行
vidcontrol MODE_261
(size1024x768x8 P
) 似乎会调整显示器大小以使用完整分辨率,并将提示放置在屏幕的左上角。然而,大约 4 或 5 行之后,显示屏的整个下部就变成了 RGB 线的网格。几分钟之内,系统崩溃了。 - 有几个地方建议将 vesa 模块加载到内核中,但运行时
kldload vesa
给出了消息kldload: can't load vesa: module already loaded or in kernal
。虽然我可以尝试按照所述从源代码重建内核这里,我不确定它是否有任何好处,因为 vesa 模块已经安装了。
我真的很感激任何指点。谢谢!
编辑1:不,这不是X11。这都是在仅限控制台模式下进行的。
编辑 2: vidcontrol VGA_80x50
、vidcontrol 80x50
和vidcontrol 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
覆盖层未正确使用它。不管怎样,唯一的解决方案是费力的内核调试,如果你不想发疯,可以使用串行控制台。