我遇到了一系列视频错误,这些错误都可追溯到 Ubuntu 18.10 cosmic 中的内核升级。内核 4.18.0.11.12 在所有可以想象到的方面都造成了麻烦,我不太明白为什么它对任何人都有效。
如果您在各个阶段都遇到“死机黑屏”,我的建议是不要过多地摆弄视频或显示管理器的配置。相反,使用较旧的内核启动,看看问题是否消失。对于大多数用户来说,最难的部分是弄清楚如何让 Ubuntu 显示 grub 菜单来选择内核(他们把这个弄得很棘手,但有说明:https://wiki.ubuntu.com/RecoveryMode)。
问题的症状围绕
- 黑屏死机并显示拒绝 PKS 密钥的消息
- 无法启动显示管理器(gdm3 或 lightdm)
- 外部显示器无法识别(桌面程序或 xrandr)
- 从暂停状态恢复时出现黑屏死机。
这是配备 Nvidia 和 Intel 显卡的 Dell Precision 5510 笔记本电脑:
*-display
description: 3D controller
product: GM107GLM [Quadro M1000M]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
version: a2
width: 64 bits
clock: 33MHz
capabilities: bus_master cap_list rom
configuration: driver=nouveau latency=0
resources: irq:125 memory:dc000000-dcffffff
memory:b0000000-bfffffff memory:c0000000-c1ffffff ioport:e000
*-display
description: VGA compatible controller
product: HD Graphics 530
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 06
width: 64 bits
clock: 33MHz
capabilities: vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:126 memory:db000000-dbffffff
memory:70000000-7fffffff ioport:f000(size=64) memory:c0000-dffff
我没有意识到内核更新是我遇到的问题的核心,我追踪了很多症状,这些症状都指向使用 gdm3 或 lightdm 作为显示管理器,然后是 Nvidia 驱动程序,然后是模式设置,但最终我得出结论,这个特定的内核导致了我无法解决的问题。我又运行了 4.18.10
我看到的第一个症状是无法启动。在 grub 阶段之后,我遇到了黑屏冻结,并显示以下消息
PKCS#7 signature not signed with a trusted key
系统对 Alt-Ctl-F2 等键没有响应,无法进行 VT。本论坛的评论将矛头指向了 Nvidia 驱动程序。回想起来,这可能是 gdm3 缺陷,而不是 Nvidia(Ubuntu 18.04 启动时挂起在 PKCS#7 签名未使用受信任密钥签名的情况,Ubutnu 18.04 - 升级后 - 显示/PKCS#7 签名错误)我从来没有解决过这个问题。
我使用恢复登录来清除 Nvidia 驱动程序并移开 xorg.conf。我将使用英特尔驱动程序运行。
之后,当 gdm3 是显示管理器时,我进入黑屏,屏幕左上角只显示一个“_”。有人认为 gdm3 正在尝试启动 Wayland 会话。我尝试修复以禁用 Wayland(gdm3 无法在 ubuntu 18.04 中启动),没有帮助。这些帖子建议有一种方法可以使 gdm3 工作,但更多帖子建议改用 lightdm。
所以我将显示管理器改为 lightdm。但是,即使在那之后,我在 grub 之后仍然出现死机黑屏,我找到了关于在 grub 设置中设置 nomodeset 或对 nouveau 强制限制的建议。经过一番折腾之后,系统会进入登录窗口。但是,之后我发现了 2 个问题。视频在挂起后无法恢复(但我可以使用 SSH 登录),并且无法检测到外部显示器(可能是因为我采取了所有无模式设置步骤)。
我没有意识到模式设置可能会导致外部显示器被忽略,因此我重新安装了 nvidia 驱动程序(希望 PKCS 密钥问题能够自行解决)。这导致启动时出现死机黑屏,但 Alt-Ctl-F2 允许 VT,因此我可以查看 dmesg。
经过多次重启后,我最终决定尝试较旧的内核 4.18.0-10,之后 lightdm 就可以启动了。挂起功能可以正常工作。为了让外部显示器正常工作,我必须删除我放入 grub 配置中的所有 nomodesetting 内容(并重新运行 update-grub)。此外,在 nvidia 文件 /lib/modprobe.d/nvidia-kms.conf 中,必须将其放回原位
# This file was generated by nvidia-prime
# Set value to 0 to disable modesetting
options nvidia-drm modeset=1
并且必须执行 initramfs。
我找到了很多关于视频问题的网站和帖子,它们可能提供了有用的建议,但没有一个能帮助我解决内核 4.18.0.11.12 的问题。我花了几天时间寻找这些修复方法,但真希望我先测试一下旧内核。
我的建议是,如果内核更新后,您开始遇到黑屏或其他视频问题,请耐心一点,尝试以通常的方式排除这些问题。运行旧内核,看看它是否有效,如果有效,请使用它,并高兴地等待新内核的问题被专家解决。
我所学到的唯一有用的“视频修复”方法是从 /etc/environment 中删除 2 行。我不确定这些行是如何插入的,但它发生在以前的 Ubuntu 版本中(要么是通过 gnome-wobbly-windows 之类的软件包,要么是我在 2017 年手动修复屏幕撕裂)。/etc/environment 中关于 CLUTTER 的最后 2 行需要注释掉(或完全删除):
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
## CLUTTER_PAINT=disable-clipped-redraws:disable-culling
## CLUTTER_VBLANK=True
如果不进行该更改,则使用 nvidia 驱动程序的 Ubuntu Gnome 桌面中的视频会变得碎片化和不连贯。据我所知,这两行是由旧版 Ubuntu(可能是 17.10)中的一些特效包插入的,它们只在 Gnome 上给我带来了很多麻烦,但在 XFCE4 上没有。因为问题只出现在 Gnome 中,所以我知道这不是 Nvidia 的问题。(Ubuntu 18.04 上的图形问题-文本模糊+屏幕闪烁)
关于使用新内核进行故障排除:我愿意再试一次,但我希望有人能提供建议,看看尝试是否有用,以及最好的解决方法是什么。
答案1
我有一种方法可以修复 gdm“黑屏”问题。请参阅 Nvidia Linux 论坛上的帖子:https://devtalk.nvidia.com/default/topic/1044730/linux/x-displays-in-a-small-section-of-screen-something-in-my-grub-setup-wrong-
在我们了解根本问题之前,我做了许多更改。 gdm 包在某个时候创建了具有错误用户号的用户 gdm,并在 /home/gdm 中创建了用户的主文件夹。 为了解决这个问题,我不得不强制删除 gdm 包,然后从 /etc/passwd 和 /etc/group 中手动删除 gdm 用户。 然后重新安装后,我得到了一个新的 gdm 用户,其 uid 低于 1000,并且 /home/gdm 中没有新文件夹。 这种变化本身可能会解决问题。 如果您的用户 ID(在 /etc/passwd 中)大于 1000,则肯定会导致死机黑屏。
但是,我做了其他更改。使用最新的 Ubuntu 内核,我确信需要以下启动元素来防止从挂起状态恢复时出现死机黑屏:
这详细说明了我采取的步骤。我在 /etc/default/grub 文件中有一个块,如下所示:
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
## GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="nosplash"
GRUB_CMDLINE_LINUX="nouveau.blacklist=1 acpi_rev_override=1 acpi_osi=Linux nouveau.modeset=0 pcie_aspm=force drm.vblankoffdelay=1 scsi_mod.use_blk_mq=1 nouveau.runpm=0 mem_sleep_default=deep"
有一个内核错误导致必须这么做(根据 Nvidia 论坛)。
其次,在 /etc/default/ 中建议设置
[daemon]
WaylandEnable=false
这是为了鼓励 gdm 使用 X11 而不是 Wayland。但是,经过今天的测试,我发现无论我是否设置了该设置,gdm3 都会启动。
第三,我正在运行 nvidia-driver-410。我相信这也适用于 nvidia-driver-390 或 nvidia-driver-415。然而,在 gdm 修复成功后,我停止插入其他驱动程序。
nvidia 驱动程序是从 PPA 安装的:
$ cat graphics-drivers-ubuntu-ppa-cosmic.list
deb http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu cosmic main
# deb-src http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu cosmic main
编辑2018-12-07:我忘了提及这个额外的变化:
在 中/lib/modprobe/nvidia-kms.conf
,我关闭了 kms 模式设置:
$ cat /lib/modprobe.d/nvidia-kms.conf
# This file was generated by nvidia-prime
# Set value to 0 to disable modesetting
options nvidia-drm modeset=0
我相信这是解决笔记本电脑屏幕没有被 X11 显示器“填满”的问题的重要一步。