问题:
不知道怎么回事(可能是自己在显示中间加入了一个二拖一的显示盒子的原因),某台Ubuntu Linux设备(192.168.0.13)的显示分辨率变成了1024*768,结果宽屏显示器上会有很大的一块黑,铺不满。
调节显示器,结果它一会儿往中间调,一会儿往最右边调,分辨率限制了肯定有一大块黑留着。
到系统的"Display"显示配置里面去,发现只有1024*768这样的4:3的分辨率,唯一的16:9的分辨率是848*480,这根本没法用啊。
我记得以前它是16:9的桌面啊(记不太清了,主要很少用它的桌面),但是现在这样用起来很难受,于是寻求解决方法。
解决问题
首先到系统的显示设置里,看有没有合适的分辨率,发现没有。
考虑是不是显卡驱动没有装?如果缺驱动,就用下面命令来安装。
查看和安装驱动
使用下面命令:
sudo ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
结果sudo ubuntu-drivers devices没有任何显示,看来是没有驱动需要安装了?反而另一台vmware虚拟机会有显示:
# 这是另一台设备的显示
sudo ubuntu-drivers devices
ERROR:root:aplay command not found
== /sys/devices/pci0000:00/0000:00:02.0 ==
modalias : pci:v000015ADd00000405sv000015ADsd00000405bc03sc00i00
vendor : VMware
model : SVGA II Adapter
manual_install: True
driver : open-vm-tools-desktop - distro free
对于这台机器,没有什么驱动可以安装的。
使用cvt和xrandr命令行工具设置
xrandr查看显卡显示输出信息
先用xrandr查询当前显卡输出端口和可用模式,执行命令
xrandr
显示
xrandr
Screen 0: minimum 320 x 200, current 1280 x 768, maximum 16384 x 16384
VGA-1 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
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected 1280x720+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1280x720_60.00 59.86*
DP-2 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
可以看到有如下5个显示输出口,现在接的是VGA-1这个接口。VGA-1这个接口分辨率除了800*480,其它三个都是4:3的,不匹配宽屏。这时候就要用cvt来生成自己需要的分辨率
使用cvt命令生成分辨率
比如生成1280 720
cvt 1280 720
输出
cvt 1280 720
# 1280x720 59.86 Hz (CVT 0.92M9) hsync: 44.77 kHz; pclk: 74.50 MHz
Modeline "1280x720_60.00" 74.50 1280 1344 1472 1664 720 723 728 748 -hsync +vsync
比如生成1440 900
cvt 1440 900
输出
cvt 1440 900
# 1440x900 59.89 Hz (CVT 1.30MA) hsync: 55.93 kHz; pclk: 106.50 MHz
Modeline "1440x900_60.00" 106.50 1440 1528 1672 1904 900 903 909 934 -hsync +vsync
这些输出的Modeline后面的部分,就是在xrandr添加配置需要的内容。
使用xrandr添加显示分辨率新模式并应用
添加1280x720_60.00 ,参数用前面cvt获得的Modeline后面的部分:
xrandr --newmode "1280x720_60.00" 74.50 1280 1344 1472 1664 720 723 728 748 -hsync +vsync
xrandr --addmode HDMI-1 1280x720_60.00
xrandr --output HDMI-1 --mode 1280x720_60.00
添加1440x900_60.00
后来发现显示器提示最佳分辨率是1440*900,所以最终执行的配置如下:
xrandr --newmode "1440x900_60.00" 106.50 1440 1528 1672 1904 900 903 909 934 -hsync +vsync
xrandr --addmode VGA-1 1440x900_60.00
xrandr --output VGA-1 --mode 1440x900_60.00
执行完这三条命令,就会发现显示器的分辨率已经调整完毕。在1440*900下显示舒服很多。
确认分辨率调节完毕
这时候再用xrandr看看显示配置,就能看到现在确实在1440x900_60.00 59.89* 分辨率:
xrandr
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 16384 x 16384
VGA-1 connected primary 1440x900+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
1440x900_60.00 59.89*
保存配置到文件/etc/X11/xorg.conf.d/99-custom-resolution.conf
将配置保存到文件/etc/X11/xorg.conf.d/99-custom-resolution.conf,直接执行下面命令,就会自动创建文件并写入配置。
echo "Section \"Monitor\"
Identifier \"VGA-1\"
Modeline \"1440x900_60.00\" 106.50 1440 1528 1672 1904 900 903 909 934 -hsync +vsync
Option \"PreferredMode\" \"1440x900_60.00\"
EndSection" | sudo tee -a /etc/X11/xorg.conf.d/99-custom-resolution.conf
这时再去系统的"Display"显示配置里面去,发现已经有了1440x900分辨率的选项。