升级至 20.04:显示分辨率错误,登录提示不可见

升级至 20.04:显示分辨率错误,登录提示不可见

我刚刚从 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 是不够的)似乎已修复启动时的显示问题。不确定这两者是否都有必要,或者是否有更“正确”的修复方法,但这有效。

相关内容