Answers:
我在这里找到了解决方案的基础:https : //askubuntu.com/questions/186288/how-to-detect-and-configure-an-output-with-xrandr
在包括CentOS在内的现代Linux发行版中,xrandr库负责诸如屏幕分辨率,旋转等工作。由于您的系统无法自动检测,因此您必须手动告知其显示器的功能。
我在KVM上遇到了同样的问题,示例输出来自我的计算机:
查找您的端口名称。这将是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分辨率。
告诉xrandr新模式。模式只是带有视频显示参数的字符串。
查找所需的显示参数。我想要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
使用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而不是在控制台上执行此命令。
创建一个脚本来自动执行newmode,addmode和output命令,因为它们在重新引导期间不会保留。
我的情况大致相同,上面的答案是如何解决此问题的更完整的解释之一,但是我不得不再上一层才能使我的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"
我同意这几乎是解决方案。这使我的屏幕处于正确的分辨率。
$ 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
在花了几个宝贵的时间尝试上述和其他“解决方案”之后,我遇到了这个问题: