![升级至 20.04:显示分辨率错误,登录提示不可见](https://linux22.com/image/1017570/%E5%8D%87%E7%BA%A7%E8%87%B3%2020.04%EF%BC%9A%E6%98%BE%E7%A4%BA%E5%88%86%E8%BE%A8%E7%8E%87%E9%94%99%E8%AF%AF%EF%BC%8C%E7%99%BB%E5%BD%95%E6%8F%90%E7%A4%BA%E4%B8%8D%E5%8F%AF%E8%A7%81.png)
我刚刚从 Ubuntu 19.10 升级到 20.04,但在启动时显示的默认屏幕分辨率方面遇到了问题。登录屏幕完全空白(只有紫色的背景色),鼠标光标可以从屏幕左侧移出。也就是说,当我移动鼠标时,它会停在屏幕左侧边缘以外的每个边缘。它显然会继续移出屏幕,因为它需要向右移动几秒钟才能重新出现在屏幕上。
我可以切换到文本控制台,登录并验证 gdm3 是否正常运行。回到 vt1,我猜想登录提示可能也在屏幕外。我盲目地按下回车键选择通常列出的第一个用户(我),输入我的密码,然后就可以像往常一样登录了。然而,一旦我的 Enlightenment 会话启动,一些窗口就会以明显错误的分辨率显示。Conky 和 emacs 窗口比平时小,文本也更小。术语和我在其中输入的 Chrome 窗口看起来正常。
怀疑是分辨率问题,我开始查找... nvidia-settings 显示 X 服务器显示配置为“CRT-0 (VGA-0)”,分辨率为 1024x768,但这个分辨率不应该出现在这里,卡在布局的左上角。显示配置中的另一个选项是“PRIME Display”,它告诉我它不能由 nvidia-settings 控制,而是使用外部 RandR 工具。
xrandr 显示:
$ xrandr --listactivemonitors
Monitors: 2
0: +*VGA-0 1024/271x768/203+0+0 VGA-0
1: +LVDS-1-1 1600/382x900/215+0+0 LVDS-1-1
那里应该只有我的 1600x900 笔记本电脑屏幕。在 Xorg.0.log 文件(vt1 上的 gdm3 的 xsession)中,我发现:
[ 74.370] (II) NVIDIA(0): Creating default Display subsection in Screen section
"nvidia" for depth/fbbpp 24/32
[ 74.370] (==) NVIDIA(0): Depth 24, (==) framebuffer bpp 32
[ 74.370] (==) NVIDIA(0): RGB weight 888
[ 74.370] (==) NVIDIA(0): Default visual is TrueColor
[ 74.370] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
[ 74.370] (II) Applying OutputClass "nvidia" options to /dev/dri/card1
[ 74.370] (II) Applying OutputClass "Nvidia Prime" options to /dev/dri/card1
[ 74.371] (**) NVIDIA(0): Option "ConstrainCursor" "off"
[ 74.371] (**) NVIDIA(0): Option "AllowEmptyInitialConfiguration" "on"
[ 74.371] (**) NVIDIA(0): Option "IgnoreDisplayDevices" "CRT"
[ 74.371] (**) NVIDIA(0): Enabling 2D acceleration
[ 74.466] (--) NVIDIA(0): Valid display device(s) on GPU-0 at PCI:1:0:0
[ 74.466] (--) NVIDIA(0): CRT-0 (boot)
[ 74.469] (II) NVIDIA(0): NVIDIA GPU GeForce GT 630M (GF108) at PCI:1:0:0 (GPU-0)
[ 74.469] (--) NVIDIA(0): Memory: 1048576 kBytes
[ 74.469] (--) NVIDIA(0): VideoBIOS: 70.08.a8.00.4f
[ 74.469] (II) NVIDIA(0): Detected PCI Express Link width: 16X
[ 74.471] (--) NVIDIA(GPU-0): CRT-0: connected
[ 74.471] (--) NVIDIA(GPU-0): CRT-0: 400.0 MHz maximum pixel clock
[ 74.471] (--) NVIDIA(GPU-0):
[ 74.481] (==) NVIDIA(0):
[ 74.481] (==) NVIDIA(0): No modes were requested; the default mode "nvidia-auto-select"
[ 74.481] (==) NVIDIA(0): will be used as the requested mode.
[ 74.481] (==) NVIDIA(0):
[ 74.481] (II) NVIDIA(0): Validated MetaModes:
[ 74.481] (II) NVIDIA(0): "CRT-0:nvidia-auto-select"
[ 74.481] (II) NVIDIA(0): Virtual screen size determined to be 1024 x 768
[ 74.497] (WW) NVIDIA(0): CRT-0 does not have an EDID, or its EDID does not contain a
[ 74.497] (WW) NVIDIA(0): maximum image size; cannot compute DPI from CRT-0's EDID.
[ 74.497] (==) NVIDIA(0): DPI set to (75, 75); computed from built-in default
我发现我的 /etc/X11/xorg.conf 文件丢失了,于是复制了一份备份,上面那Option "IgnoreDisplayDevices" "CRT"
行就是从那里来的。之前没有这个文件,但添加它并重新启动也没用。另外,OutputClass "Nvidia Prime"
似乎已由一个新文件 /usr/share/X11/xorg.conf.d/11-nvidia-prime.conf 添加:
# DO NOT EDIT. AUTOMATICALLY GENERATED BY gpu-manager
Section "OutputClass"
Identifier "Nvidia Prime"
MatchDriver "nvidia-drm"
Driver "nvidia"
Option "AllowEmptyInitialConfiguration"
Option "IgnoreDisplayDevices" "CRT"
Option "PrimaryGPU" "Yes"
ModulePath "/x86_64-linux-gnu/nvidia/xorg"
EndSection
ModulePath 不存在。我添加了 Options"IgnoreDisplayDevices" "CRT"
和"PrimaryGPU" "Yes"
,从现有的 10-nvidia.conf 文件中复制,但这仍然没有效果。
我是否应该手动将 Display 部分添加到 xorg.conf?它里面应该有什么?我目前无法以任何其他用户身份登录 X 会话,或选择其他会话(ubuntu、gnome 等)
答案1
经过进一步研究后,在这里回答我自己的问题,以防其他人遇到类似的问题......
xrandr --output LVDS-1-1 --primary --dpi 96
为登录后的显示问题提供了临时修复。它显然默认为 75 dpi。不过,注销后这个问题并没有持续下去。
根据这个
https://download.nvidia.com/XFree86/Linux-x86_64/396.51/README/xconfigoptions.html
该"IgnoreDisplayDevices" "CRT"
选项属于 xorg.conf 文件的 Screen 或 Device 部分。此操作以及 和Option "UseDisplayDevice" "DFP"
随后的重新启动(仅重新启动 gdm3 是不够的)似乎已修复启动时的显示问题。不确定这两者是否都有必要,或者是否有更“正确”的修复方法,但这有效。