如何在通过KVM连接的CentOS7中手动配置监视器?


9

我在Gnome 3上重新安装了CentOS7。

我需要将此计算机与KVM一起使用,但是由于某些原因,CentOS7无法通过我拥有的KVM来检测我的显示器,因此它默认为1024x768分辨率的“未知显示”(如果我直接连接显示器,则所有东西都可以检测并以更高的分辨率工作)到系统)。

如何手动配置事物,以便可以使用更大的分辨率?

我尝试monitors.xml以新的分辨率进行编辑,但是CentOS7在重新启动后拒绝了该更改,并说它无法检测到,并返回到1024x768。

Answers:


14

我在这里找到了解决方案的基础:https : //askubuntu.com/questions/186288/how-to-detect-and-configure-an-output-with-xrandr

在包括CentOS在内的现代Linux发行版中,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

第一个参数是新模式的名称-您实际上可以随意命名,只需在后续步骤中使用相同的名称即可。

第三步

告诉xrandr VGA1可以理解为1600x900的模式:

> xrandr --addmode VGA1 1600x900

第四步

告诉xrandr切换到新模式。

> xrandr --output VGA1 --mode 1600x900

注意:如果您输入有误,并且您的显示器实际上不了解新模式,则会出现黑屏!

如果确实出现黑屏,则可以通过盲目键入以下内容来恢复:

> xrandr --output VGA1 --mode 1024x768

解决该问题的另一种方法是通过SSH从另一台计算机连接,然后通过SSH而不是在控制台上执行此命令。

第5步

创建一个脚本来自动执行newmode,addmode和output命令,因为它们在重新引导期间不会保留。


1
这是当下-有关使用xrandr的信息的稀有瑰宝。先生,一千票赞成你。
保罗

1
也为我工作。在CentOS 7
穆罕默德·亚辛

2
好答案。但是现在,我可以在哪里放置命令,使其在启动时成为默认设置?
mivk

@SteliosAdamantidis是的。请注意应该解决该问题的第5步。
Kevin Keane

1

我的情况大致相同,上面的答案是如何解决此问题的更完整的解释之一,但是我不得不再上一层才能使我的32英寸三星显示器呈现2560x1440的分辨率。

gtf是上面用来获取时间的方法,该方法通常可以正常工作,但是我无法获得2560x1440的模式。我使用了带有-r开关的cvt程序(这是必需的,并且不适用于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"

1

我同意这几乎是解决方案。这使我的屏幕处于正确的分辨率。

$ 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

0

在花了几个宝贵的时间尝试上述和其他“解决方案”之后,我遇到了这个问题:

http://elrepo.org/tiki/kernel-ml


由于链接趋于陈旧和失效,因此仅链接的答案在这里并不被认为很有帮助。也许您可以在回答问题的同时详细说明实际解决问题的方法,同时指出在整个过程中对您有帮助的资源。这样,即使其他链接消失了,使用此站点的人也将直接看到答案。
埃里克·雷诺夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.