我最近在类似的系统上安装了两次 Ubuntu 18.04。唯一的区别是,一个运行 GTX 1070,另一个运行 GTX 1080。
问题
安装 Nvidia 驱动程序(二进制 390.59)后,每次重启后都会创建一个重复的 xorg 会话。一个在我的用户帐户(1000)上运行,另一个在用户帐户(120,猜测是服务帐户)上运行。
root 1038 0.0 0.1 249052 46432 tty1 Sl+ 09:09 0:01 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/120/gdm/Xauthority -background none -noreset -keeptty -verbose 3
root 2157 0.4 0.2 358056 77424 tty2 Sl+ 09:11 0:13 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
Nvidia-smi 还显示 GPU 上运行两个 xorg 会话
| 0 1038 G /usr/lib/xorg/Xorg 18MiB |
| 0 1100 G /usr/bin/gnome-shell 49MiB |
| 0 2157 G /usr/lib/xorg/Xorg 173MiB |
| 0 2298 G /usr/bin/gnome-shell 116MiB
除了这个额外的进程之外,一切都正常运行。它似乎没有干扰任何事情,但我想弄清楚为什么会发生这种情况。在同样的两个系统上,我运行了 Ubuntu 16.04 和 CentOS,并没有注意到这个重复的 xorg 进程。如果有人有任何信息可以给我指明正确的方向,那就太好了。
答案1
感谢这个问题“为什么我的 GDM 与我的桌面环境的 TTY 不同?“我找到了两个 xorg 会话的原因。Gnome 桌面管理器使用两个 xorg 会话,一个用作欢迎程序(登录),另一个用作用户会话。过去,一个 xorg 会话是用 root 创建的,后来转变为用户会话。然而,出于未来的开发计划,决定将这些会话分开。
在这里阅读更多相关信息:
https://bugzilla.gnome.org/show_bug.cgi?id=747339
让我进一步解释一下我们为什么这样做。
以前,我们以 root 身份启动一个 X 服务器,然后当您登录时,我们会将其“变形”为会话 X 服务器。如果您要快速切换用户,我们会根据需要启动第二个 X 服务器。
出于安全原因和 Wayland 移植原因,我们现在在用户会话中启动 X 服务器和 Wayland 服务器,而不是以 root 身份启动一个。
我们这样做的方法是启动两个 X 服务器,一个用于 gdm 欢迎会话,另一个用于会话用户。
在我们切换到用户会话之后,完全可以拆除欢迎程序,这只需要多一点代码,但不幸的是,我们不可能将欢迎程序会话和用户会话都放在 VT1 上,因为我们必须首先启动用户会话,然后拆除欢迎程序会话,并且当同一个 VT 上同时有两个 X 服务器时,我们不能处于那个中间状态。
我刚刚忘记了保留两个 gnome-shell 实例的资源问题。我会和 Ray 聊聊,看看我们是否想拆除欢迎会话,然后根据需要启动它以进行用户切换/注销,以节省资源。