Ubuntu 20.04:安装 nvidia 驱动程序后启动时光标闪烁

ubu*_*bie 6 boot nvidia graphics drivers 20.04

我刚刚安装了 NVIDIA 专有驱动程序(来自附加驱动程序的 nvidia-driver-460)。重新启动后,我看到黑屏,光标闪烁。几秒钟后,我使用 Ctl + Alt + F2 移动到 tty,并且没有给我时间登录,图形界面就启动了。

我重新启动了几次,这种行为似乎仍在继续:它会给我一个黑屏,光标闪烁,直到我移动到另一个 tty,然后 X 启动并要求我正常登录。

有没有什么办法解决这一问题?

PJ *_*ngh 6

我正在使用 nvidia-driver-460 版本 460.39-0ubuntu0.20.04.1。

GDM 屏幕仅在键入Ctrl+ Alt+后键入+ +F2后才会出现。CtrlAltF1

请发表评论并告诉我以下内容是否可以解决您的问题?另外,请在 Launchpad 中将自己标记为受Bug #1811023影响,以便解决此问题。


解决方案

下面的内容似乎已经解决了我的问题,并且现在显示 GDM 屏幕,而无需诉诸上述“技巧”。

  1. 编辑文件/lib/udev/rules.d/61-gdm.rules

    sudo nano /lib/udev/rules.d/61-gdm.rules
    
    Run Code Online (Sandbox Code Playgroud)

    原始文件如下所示:

    # disable Wayland on Hi1710 chipsets
    ATTR{vendor}=="0x19e5", ATTR{device}=="0x1711", RUN+="/usr/lib/gdm3/gdm-disable-wayland"
    # disable Wayland when using the proprietary nvidia driver
    DRIVER=="nvidia", RUN+="/usr/lib/gdm3/gdm-disable-wayland"
    
    Run Code Online (Sandbox Code Playgroud)

    注释所有行,如图所示:

    # disable Wayland on Hi1710 chipsets
    # ATTR{vendor}=="0x19e5", ATTR{device}=="0x1711", RUN+="/usr/lib/gdm3/gdm-disable-wayland"
    # disable Wayland when using the proprietary nvidia driver
    # DRIVER=="nvidia", RUN+="/usr/lib/gdm3/gdm-disable-wayland"
    
    Run Code Online (Sandbox Code Playgroud)

    键入Ctrl+X退出,然后键入Y,然后Enter保存文件。

  2. 确保 GDM 中未禁用Wayland 。

    sudo nano /etc/gdm3/custom.conf
    
    Run Code Online (Sandbox Code Playgroud)

    注释“WaylandEnable”行(如果尚未注释),如下所示:

    # WaylandEnable=false
    
    Run Code Online (Sandbox Code Playgroud)

    输入Ctrl+X退出。如果您进行了更改,请键入Y,然后Enter保存文件。

  3. 最后,重新启动。


解释

/lib/udev/rules.d/61-gdm.rules文件旨在防止 GDM 在安装 NVIDIA 专有驱动程序时显示 Wayland 会话选项,因为 NVIDIA 不支持 Wayland。

然而,在 Ubuntu 20.04 中,似乎还有另一个冗余机制或规则也阻止 GDM 显示 Wayland 会话选项。我怀疑这一点,因为即使进行上述更改后,GDM 中仍然不显示 Wayland 会话选项。(设置WaylandEnable=true无效/etc/gdm3/custom.conf)。

因此,我有一种预感,有两个相互冲突的规则,禁用其中一个规则(即/lib/udev/rules.d/61-gdm.rules)似乎可以消除冲突。

这是进行上述更改之前的journalctl启动日志。您可以看到加载“fb”模块时出错。

/usr/lib/gdm3/gdm-x-session[964]: (II) Loading sub module "fb"
/usr/lib/gdm3/gdm-x-session[964]: (II) LoadModule: "fb"
/usr/lib/gdm3/gdm-x-session[964]: (II) Loading /usr/lib/xorg/modules/libfb.so
/usr/lib/gdm3/gdm-x-session[964]: (II) Module fb: vendor="X.Org Foundation"
/usr/lib/gdm3/gdm-x-session[964]:         compiled for 1.20.9, module version = 1.0.0
/usr/lib/gdm3/gdm-x-session[964]:         ABI class: X.Org ANSI C Emulation, version 0.4
/usr/lib/gdm3/gdm-x-session[964]: Xorg: ../../../../dix/privates.c:384: dixRegisterPrivateKey: Assertion `!global_keys[type].created' failed.
/usr/lib/gdm3/gdm-x-session[964]: (EE)
/usr/lib/gdm3/gdm-x-session[964]: (EE) Backtrace:
Run Code Online (Sandbox Code Playgroud)

这是进行上述更改后的journalctl启动日志。可以看到“fb”模块加载成功。

/usr/lib/gdm3/gdm-x-session[1357]: (II) Loading sub module "fb"
/usr/lib/gdm3/gdm-x-session[1357]: (II) LoadModule: "fb"
/usr/lib/gdm3/gdm-x-session[1357]: (II) Loading /usr/lib/xorg/modules/libfb.so
/usr/lib/gdm3/gdm-x-session[1357]: (II) Module fb: vendor="X.Org Foundation"
/usr/lib/gdm3/gdm-x-session[1357]:         compiled for 1.20.9, module version = 1.0.0
/usr/lib/gdm3/gdm-x-session[1357]:         ABI class: X.Org ANSI C Emulation, version 0.4
/usr/lib/gdm3/gdm-x-session[1357]: (II) Loading sub module "wfb"
Run Code Online (Sandbox Code Playgroud)