我有一个全新的桌面安装 CentOS7 和 Gnome 3。
我需要将这台机器与 KVM 一起使用,但由于某种原因 CentOS7 无法通过我拥有的 KVM 检测到我的显示器,因此它默认为 1024x768 分辨率的“未知显示”(如果我直接连接显示器,则一切都会以更高的分辨率检测和工作)到系统)。
如何手动配置才能使用更大的分辨率?
我尝试monitors.xml
使用新分辨率进行编辑,但重新启动后 CentOS7 拒绝了更改,称无法检测到,并返回到 1024x768。
答案1
我在这里找到了解决方案的基础:https://askubuntu.com/questions/186288/how-to-detect-and-configure-an-output-with-xrandr
在现代 Linux 发行版中,包括 CentOS,xrandr 库负责屏幕分辨率、旋转等操作。由于您的系统无法自动检测,因此您必须手动告诉它您的显示器能够支持的模式。
我在使用 KVM 时遇到了同样的问题,示例输出来自我的计算机:
步骤1:
找到您的端口的名称。这将类似于 VGA1、HDMI1 等。您也许可以从 /var/log/Xorg.0.log 找到它,或者您可以使用 xrandr 实用程序:
> xrandr
Screen 0: minimum 8 x 8, current 1024 x 768, maximum 32767 x 32767
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
VGA1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 60.00*
800x600 60.32 56.25
848x480 60.00
640x480 59.94
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
我的 KVM 连接到名为 VGA1 的 VGA 端口。由于 KVM 阻止自动检测,xrandr 只能看到 1024x768 分辨率。
第2步:
告诉 xrandr 有关新模式的信息。模式只是附加了视频显示参数的字符串。
步骤2.1
找到您需要的显示参数。我想要 1600x900 @ 60 Hz:
> gtf 1600 900 60 -x
# 1600x900 @ 60.00 Hz (GTF) hsync: 55.92 kHz; pclk: 119.00 MHz
Modeline "1600x900_60.00" 119.00 1600 1696 1864 2128 900 901 904 932 -HSync +Vsync
步骤2.2
使用 gtf 命令中的值通过 xrandr 创建新模式:
> xrandr --newmode "1600x900" 119.00 1600 1696 1864 2128 900 901 904 932 -HSync +Vsync
第一个参数是新模式的名称 - 您实际上可以将其命名为您喜欢的任何名称,只需在后续步骤中使用相同的名称即可。
步骤3
告诉 xrandr VGA1 理解称为 1600x900 的模式:
> xrandr --addmode VGA1 1600x900
步骤4
告诉 xrandr 切换到新模式。
> xrandr --output VGA1 --mode 1600x900
注意:如果您犯了一个错误,并且您的显示器实际上并不理解新模式,您将看到空白屏幕!
如果您确实出现黑屏,您可以通过盲目键入以下内容来恢复:
> xrandr --output VGA1 --mode 1024x768
另一种解决方法是通过 SSH 从另一台计算机进行连接,并通过 SSH 而不是在控制台上执行此命令。
步骤5
创建一个脚本来自动执行 newmode、addmode 和输出命令,因为它们在重新引导期间不会被保留。
答案2
我同意这几乎是解决方案。这使我的屏幕具有正确的分辨率。
$ cvt 1920 1080 60
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
然而,屏幕的左侧和右侧都有两个主要的黑色列。我猜想是某种过扫描。
所以我必须 grep 一些在启动过程中从 xorg.log 中获取的值。
$ grep 1080 /var/log/Xorg.0.log
[ 2316.000] (II) modeset(0): Modeline "1920x1080"x0.0 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync (67.5 kHz eP)
因此,在用值 Xorg.0.log 替换 cvt 值后,我得到了正确的屏幕布局。
$ xrandr --newmode "1920x1080_60.00" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
答案3
我遇到了大致相同的情况,上面的答案是如何解决此问题的更完整的解释之一,但我必须再上一层楼才能让我的 32 英寸三星以 2560x1440 渲染。
gtf 是上面用于获取计时的方法,该方法大部分有效,但它不会为我提供分辨率为 2560x1440 的模式。我使用了 cvt 程序,带有 -r 开关(这是必需的,并且不适合 crt,仅适用于无需消隐的设备)。
~% cvt -r 2560 1440 60
# 2560x1440 59.95 Hz (CVT 3.69M9-R) hsync: 88.79 kHz; pclk: 241.50 MHz
Modeline "2560x1440R" 241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
这种计时模式与 gtf 给出的上述信息类似,非常有效。我仍然希望能够将其“烘焙”到系统中X11
,但我编写了脚本来创建、添加,然后切换到该模式,因此效果很好。
我衰老的眼睛喜欢巨大的显示器。没有什么比过度...
(执行模式添加和切换的脚本如下)
#!/bin/bash
# Used to get timing: cvt -r 2560 1440 60
xrandr --newmode "2560x1440R" 241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
xrandr --addmode HDMI1 "25 60x1440R"
xrandr --output HDMI1 --mode "2560x1440R"
答案4
在花了几个宝贵的时间尝试上述和其他“解决方案”后,我遇到了这个: