![当我重新启动 Ubuntu 22.04 VirtualBox 时,我必须再次设置屏幕分辨率。如何让分辨率保持不变?](https://linux22.com/image/948908/%E5%BD%93%E6%88%91%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%20Ubuntu%2022.04%20VirtualBox%20%E6%97%B6%EF%BC%8C%E6%88%91%E5%BF%85%E9%A1%BB%E5%86%8D%E6%AC%A1%E8%AE%BE%E7%BD%AE%E5%B1%8F%E5%B9%95%E5%88%86%E8%BE%A8%E7%8E%87%E3%80%82%E5%A6%82%E4%BD%95%E8%AE%A9%E5%88%86%E8%BE%A8%E7%8E%87%E4%BF%9D%E6%8C%81%E4%B8%8D%E5%8F%98%EF%BC%9F.png)
我在 VirtualBox 系统上安装了带有 Gnome 的新 Ubuntu 22.04 服务器,每次重启时屏幕尺寸都会重置为 800x600(无论是在登录屏幕还是登录后)。
我将屏幕分辨率改为 1920x1600,效果很好。我可以连续几天使用该系统,没有任何问题。
但下次重启时,更大的分辨率就会丢失。它将被重置回 800x600。
难道我做错了什么?
注 1:我可以看到存在~/.config/monitors.xml
并且定义正确:
<monitors version="2">
<configuration>
<logicalmonitor>
<x>0</x>
<y>0</y>
<scale>2</scale>
<primary>yes</primary>
<monitor>
<monitorspec>
<connector>Virtual-1</connector>
<vendor>unknown</vendor>
<product>unknown</product>
<serial>unknown</serial>
</monitorspec>
<mode>
<width>1920</width>
<height>1200</height>
<rate>59.884601593017578</rate>
</mode>
</monitor>
</logicalmonitor>
</configuration>
</monitors>
注 2:如一些地方,我可以将monitors.xml
文件复制到,/var/lib/gdm3/.config/.
并且登录屏幕可以正常工作。但是一旦登录,该分辨率就会再次丢失。
sudo cp ~/.config/monitors.xml /var/lib/gdm3/.config/.
注 3:我有其他版本的 Ubuntu(18.04、20.04),具有类似的设置,并且分辨率保持得很好。
注4:我有一个“监视器”。
更新:
当我运行时xrandr --verbose
,我会看到如下模式:
1920x1440 (0x53b) 233.500MHz -HSync +VSync *current +preferred
h: width 1920 start 2064 end 2264 total 2608 skew 0 clock 89.53KHz
v: height 1440 start 1443 end 1447 total 1493 clock 59.97Hz
我把它转换成如下脚本:
xrandr --newmode "1920x1440_59.97" 233.50 1920 2064 2264 2608 1440 1443 1447 1493 -hsync +vsync
xrandr --addmode XWAYLAND0 1920x1440_59.97
xrandr --output XWAYLAND0 --mode 1920x1440_59.97
但是第一个和最后一个xrandr
会产生错误:
$ sh xrandr1.sh
X Error of failed request: BadName (named color or font does not exist)
Major opcode of failed request: 139 (RANDR)
Minor opcode of failed request: 16 (RRCreateMode)
Serial number of failed request: 20
Current serial number in output stream: 20
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 139 (RANDR)
Minor opcode of failed request: 7 (RRSetScreenSize)
Serial number of failed request: 22
Current serial number in output stream: 23
现在我看到有些人遇到了问题XWAYLAND0
。也许这就是我遇到的问题...
/var/log/syslog 文件中找到一些日志:
Sep 15 23:31:47 ubuntu22 colord[2535]: failed to get edid data: EDID length is too small
Sep 15 23:31:47 ubuntu22 dbus-daemon[1214]: [system] Successfully activated service 'org.freedesktop.ColorManager'
Sep 15 23:31:47 ubuntu22 systemd[1]: Started Manage, Install and Generate Color Profiles.
Sep 15 23:31:47 ubuntu22 xbrlapi.desktop[2550]: openConnection: connect: No such file or directory
Sep 15 23:31:47 ubuntu22 xbrlapi.desktop[2550]: cannot connect to braille devices daemon brltty at :0
Sep 15 23:31:47 ubuntu22 /usr/libexec/gdm-wayland-session[2196]: dbus-daemon[2196]: [session uid=130 pid=2196] Successfully activated service 'org.gnome.ScreenSaver'
Sep 15 23:31:48 ubuntu22 gsd-color[2356]: failed to get edid: unable to get EDID for output
Sep 15 23:31:48 ubuntu22 gsd-color[2356]: unable to get EDID for xrandr-Virtual-1: unable to get EDID for output
Sep 17 01:10:40 ubuntu22 gnome-shell[2665]: XWAYLAND: mode 1024x600 is not available
Sep 17 01:16:20 ubuntu22 gnome-shell[2665]: message repeated 2 times: [ XWAYLAND: mode 1024x600 is not available]
最后一条似乎表明系统默认需要一个名为 Virtual-1 的显示器。不幸的是,我的显示器似乎被命名为 XWAYLAND0。
在这方面,我还发现了这些:
Sep 16 02:36:12 ubuntu22 gnome-shell[2303]: Registering session with GDM
Sep 16 02:36:12 ubuntu22 gnome-shell[1764]: Connection to xwayland lost
Sep 16 02:36:12 ubuntu22 gnome-session[1742]: gnome-session-binary[1742]: WARNING: Lost name on bus: org.gnome.SessionManager
Sep 16 02:36:12 ubuntu22 gnome-session-binary[1742]: WARNING: Lost name on bus: org.gnome.SessionManager
对于那个,我可以找到一个启动板上有错误。
我试图关闭 Wayland,但没有帮助......
[daemon]
# Uncomment the line below to force the login screen to use Xorg
WaylandEnable=false
...重启后屏幕仍然显示错误的分辨率。不过,该xrandr
命令现在有效。如果您想让它与 Wayland 配合使用,您可以使用gnome-randr.py脚本。请注意,我在更改后重新启动了WaylandEnable=false
(我想这是不言而喻的)。
答案1
在“不优雅但有效”的修复类别中 -
我也遇到过这种情况,我的虚拟机是上网本的克隆版,屏幕尺寸很奇怪。我无法让虚拟机保留屏幕尺寸设置。所以我写了一个脚本来调整屏幕大小,并将该脚本添加到启动项中。
就我而言,脚本是
xrandr --newmode "1024x600_60.00" 49.00 1024 1072 1168 1312 600 603 613 624 -hsync +vsync
xrandr --addmode Virtual1 1024x600_60.00
xrandr --output Virtual1 --mode 1024x600_60.00
您的价值观可能会有所不同。