切換到第二個 X 會話會殺死第一個
我在這裡遇到了一個奇怪的問題。我有一個具有以下(匯總)配置的 Linux 機器:
- 戴爾靈越 i5
- 英偉達 GP108M
- GNU/Linux Debian“測試”
- xorg 伺服器 2:1.20.0-3
根據我的說法,
Xorg.0.log
我正在執行的驅動程序是“nouveau”:[ 30442.522] (II) LoadModule: "nouveau" <SNIP> [ 30442.777] (--) NOUVEAU(G0): Chipset: "NVIDIA NV138"
我的迎賓員是 LightDM,我的 DM 是 Xfce。我嘗試
user2
使用以下過程開始第二個會話:
- 切換到 VT-1 (
Ctrl
+Alt
+F1
)- 登錄
user2
- 跑
startx -- :1
沒有迎賓員。
user2
的 Xfce 會話正在執行。我可以驗證兩個會話都在執行htop
。但是,當我切換回 VT-7 (
Ctrl
++Alt
)時F7
,我看到user1
的會話已終止。VT-7 回到迎賓員身邊。來自日誌的資訊
每當我在 VT 之間切換時,在
syslog
. 然而,這並不意味著任何 X 會話都已被終止。例如,我
user1
在 VT-7 上開始我的 Xfce 會話。然後我切換到 VT-1 並返回到 VT-7。以下(匯總)錯誤在 上出現兩次syslog
:kernel: ------------[ cut here ]------------ kernel: nouveau 0000:01:00.0: timeout kernel: WARNING: CPU: 0 PID: 1783 at /build/linux-0buYvw/linux-4.17.8/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/base.c:86 nvkm_pmu_reset+0x14c/0x160 [nouveau] ---[ cut 4 lines ]--- kernel: Hardware name: Dell Inc. Inspiron 7472/0WFX2M, BIOS 1.1.3 01/25/2018 kernel: RIP: 0010:nvkm_pmu_reset+0x14c/0x160 [nouveau] ---[ cut 9 lines ]--- kernel: Call Trace: kernel: nvkm_pmu_init+0x16/0x40 [nouveau] kernel: nvkm_subdev_init+0xb2/0x1f0 [nouveau] kernel: nvkm_device_init+0x132/0x270 [nouveau] kernel: nvkm_udevice_init+0x41/0x60 [nouveau] kernel: nvkm_object_init+0x3d/0x180 [nouveau] kernel: nvkm_object_init+0xa0/0x180 [nouveau] kernel: nvkm_object_init+0xa0/0x180 [nouveau] kernel: ? pci_restore_standard_config+0x40/0x40 kernel: nouveau_do_resume+0x28/0x140 [nouveau] kernel: nouveau_pmops_runtime_resume+0x88/0x150 [nouveau] kernel: pci_pm_runtime_resume+0x78/0xb0 kernel: __rpm_callback+0xc7/0x200 kernel: ? pci_restore_standard_config+0x40/0x40 kernel: rpm_callback+0x1f/0x70 kernel: ? pci_restore_standard_config+0x40/0x40 kernel: rpm_resume+0x4c4/0x790 kernel: ? do_wp_page+0x154/0x500 kernel: __pm_runtime_resume+0x47/0x70 kernel: nouveau_drm_ioctl+0x35/0xc0 [nouveau] kernel: do_vfs_ioctl+0xa4/0x630 kernel: ? handle_mm_fault+0xdc/0x210 kernel: ksys_ioctl+0x70/0x80 kernel: __x64_sys_ioctl+0x16/0x20 kernel: do_syscall_64+0x55/0x110 kernel: entry_SYSCALL_64_after_hwframe+0x44/0xa9 ----[ cut 8 lines ]--- kernel: ---[ end trace 81b347516b37c927 ]---
現在我切換到 VT-1,登錄
user2
並執行startx -- :0
. 儘管如此,還沒有會話被殺死,我可以用htop
.但是,如果我現在從 VT-1 上的 X 會話切換到 VT-7 上的另一個 X 會話,則會出現在
syslog
pulseaudio[3372]: XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0" pulseaudio[3372]: after 17 requests (17 known processed) with 0 events remaining. xfce4-notifyd[3565]: xfce4-notifyd: Fatal IO error 11 (Resource temporarily unavailable) on X server :0. at-spi-bus-launcher[1368]: XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0" at-spi-bus-launcher[1368]: after 443 requests (443 known processed) with 0 events remaining. systemd[1308]: xfce4-notifyd.service: Main process exited, code=exited, status=1/FAILURE systemd[1308]: xfce4-notifyd.service: Failed with result 'exit-code'. systemd[1308]: pulseaudio.service: Main process exited, code=exited, status=1/FAILURE systemd[1308]: pulseaudio.service: Failed with result 'exit-code'. systemd[1308]: pulseaudio.service: Service RestartSec=100ms expired, scheduling restart. systemd[1308]: pulseaudio.service: Scheduled restart job, restart counter is at 3. systemd[1308]: Stopped Sound Service. systemd[1308]: Starting Sound Service... rtkit-daemon[1552]: Successfully made thread 3898 of process 3898 (n/a) owned by '1000' high priority at nice level -11. rtkit-daemon[1552]: Supervising 4 threads of 2 processes of 2 users. pulseaudio[3898]: W: [pulseaudio] pid.c: Stale PID file, overwriting. avahi-daemon[644]: Withdrawing address record for ---[ IPv6 redacted ]--- on enp2s0. lightdm[3907]: Error getting user list from org.freedesktop.Accounts: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Accounts was not provided by any .service files
VT-7 回到迎賓員身邊。X 伺服器已重新啟動 (?)。
關於
Xorg.0.log
,當我從 VT-1 切換到 VT-7 並且會話被終止時,會附加以下行。[ 15945.806] (II) event7 - Power Button: device removed [ 15945.832] (II) event10 - Video Bus: device removed [ 15945.848] (II) event11 - Video Bus: device removed [ 15945.877] (II) event5 - Power Button: device removed [ 15945.908] (II) event6 - Sleep Button: device removed [ 15945.933] (II) event1 - Microsoft Wired Keyboard 600: device removed [ 15945.953] (II) event20 - PixArt Microsoft USB Optical Mouse: device removed [ 15945.972] (II) event12 - Integrated Webcam: Integrated W: device removed [ 15945.988] (II) event8 - DELL0828:00 06CB:7E7E Touchpad: device removed [ 15946.021] (II) event3 - Intel HID events: device removed [ 15946.044] (II) event9 - Dell WMI hotkeys: device removed [ 15946.068] (II) event0 - AT Translated Set 2 keyboard: device removed [ 15946.084] (II) event21 - PS/2 Generic Mouse: device removed [ 15946.101] (II) event2 - Microsoft Wired Keyboard 600: device removed [ 15946.116] (II) AIGLX: Suspending AIGLX clients for VT switch [ 15946.117] (II) NOUVEAU(G0): NVLeaveVT is called.
您在模組中遇到了核心崩潰
nouveau
,這將搞砸 DRM 模組,當它遇到壞狀態時,這反過來又會搞砸連接到該模組的 X 伺服器。升級到最新的核心和匹配的
nouveau
模組。如果您仍然遇到同樣的崩潰,請向開發人員送出錯誤報告nouveau
。確保包括完整的dmesg
和Xorg.*.log
。
問題在於 LightDM 不支持由
startx
.Startx
是如何執行多個會話的舊方法,但某些現代系統不必支持。有一種支持的方式如何使用 LightDM 在另一個 VT 上登錄另一個使用者:使用者只需要打開一個終端視窗並執行以下命令:dm-tool switch-to-greeter
在此命令之後,VT-7 上的前一個 Xsession 被鎖定,並在 VT-8 上打開一個新的 Xsession,因此另一個使用者可以登錄。使用 CTRL-ALT-F7 和 CTRL-ALT-F8 在會話之間切換照常工作(此切換不會鎖定前一個 Xsession)。有關所有執行座位的資訊提供此命令:
dm-tool list-seats
如果有必要執行另一個 Xserver(除了已經執行的),您可以嘗試遵循徹底的答案https://askubuntu.com/a/519164/981550(來自問題https://askubuntu.com/questions/518454 /what-does-startx-command-do)建議使用
Xnest
(圖形伺服器內的伺服器)。