如何在文本模式下输出正确的分辨率/频率?

如何在文本模式下输出正确的分辨率/频率?

[ 全面披露:我首先问了这个问题在 Arch Linux 论坛上,没有得到答案]

我有一台通常无头运行的服务器。它根本不运行 X — — 只运行 CLI。

这台服务器以前有一个笨重的 CRT,每当我需要排除故障时,我都会插上它。这台服务器工作正常,但 CRT(虽然很小)的重量与一辆中型轿车相当。最近我买了一块二手小型 LCD 面板来替换它。

问题是,当我插入 LCD 并打开它时,它显示“显示器不支持当前输入时序。请将输入时序更改为 1280x1024 @ 60Hz”。

如果我重启服务器(我通常每年重启一次,所以这不是最佳解决方案),显示器就会正常工作……直到我拔掉电源插头。然后当我重新插上电源插头并打开它时,我又会收到相同的消息,直到我重启。

(使用 DVI 可能会解决这个问题,但服务器没有 DVI 端口)

如何让服务器输出 60Hz 视频,使其在拔插周期内继续工作?无需重启的答案将获得加分!

答案1

您必须使用帧缓冲区。
只需编辑/etc/grub.conf并添加vga=794到以 kernel 开头的行末尾即可。

vga=79315 位 1280x1024@60
vga=79416 位 1280x1024@60
vga=79524 位 1280x1024@60

根据显示器的使用年限,您可能需要尝试其他代码。
抱歉,您必须重新启动才能使其正常工作,然后一切就绪了。

答案2

我以令人吃惊的能力自己解决了这个问题!

我这样做了:

  • 在 /etc/default/grub 中
    • 设置 GRUB_CMDLINE_LINUX_DEFAULT="nomodeset"
    • 添加行 GRUB_TERMINAL=console
    • 添加行 GRUB_GFXPAYLOAD_LINUX=text
    • 删除 GRUB_GFXMODE 行
  • 重新运行 grub-mkconfig -o /boot/grub/grub.cfg

缺点是,在分辨率不太好的情况下,我得到的是大块文本,而不是在合理的分辨率下得到的漂亮的帧缓冲文本。优点是,它能正常工作,与上述任何一种方法都不同。

答案3

您是否尝试过使用fbset? 使用这个来设置正确的帧缓冲模式应该可以工作。

自从他们切换到 systemd 后,我就很少使用 Arch 了,但是过去它运行良好。

答案4

你可以尝试

 sudo udevadm trigger

来自 Arch udevadm 手册页:

udevadm 触发器 [选项]

从内核请求设备事件。主要用于在系统冷插拔时重放事件。

相关内容