我有一个 Debian 12 VM,当我远程启动它时,用户会话是 TTY,我可以让它在控制台端启动 X11 会话吗?
尝试A
- KDE 已安装
- 我选择了plasma-x11作为我的默认会话管理器
- 我已将默认显示管理器更改为 sddm
loginctl
SESSION UID USER SEAT TTY
3 1000 user1 pts/0
1 sessions listed.
loginctl show-session 3 -p Type
Type=tty
update-alternatives --config x-session-manager
There are 3 choices for the alternative x-session-manager (providing /usr/bin/x-session-manager).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/startxfce4 50 auto mode
* 1 /usr/bin/startplasma-x11 40 manual mode
2 /usr/bin/startxfce4 50 manual mode
3 /usr/bin/xfce4-session 40 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
cat /etc/X11/default-display-manager
/usr/sbin/sddm
ls /usr/share/xsessions
lightdm-xsession.desktop plasma.desktop xfce.desktop
但我的用户一直登录到 TTY 会话。我该如何解决?
尝试B
- 我尝试启动 display-manager.service
systemctl start display-manager.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
Authentication is required to start 'lightdm.service'.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ====
loginctl show-session 22 -p Type
Type=tty
但它启动了 lightdm 而不是 sddm,即使我将 x-session-manager 设置为 /usr/bin/startplasma-x11,并且会话仍然是 type=tty。
尝试C
- 我已经手动启动了sddm
- 我尝试过startx、startplasma-x11和startkde,但没有成功。
systemctl start sddm.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
Authentication is required to start 'sddm.service'.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ====
startx
/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server
^Cxinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: unexpected signal 2
Couldn't get a file descriptor referring to the console.
startkde
zsh: command not found: startkde
startplasma-x11
$DISPLAY is not set or cannot connect to the X server.
结果,为 sddm 用户启动了 x11 会话,而不是将我的用户会话更改为 X11。
loginctl
SESSION UID USER SEAT TTY
22 1000 user1 pts/0
24 111 sddm seat0
2 sessions listed.
当我有常规 X11 会话时,这是我的用户的会话,而不是显示管理器用户的会话。
尝试D
- 我尝试过使用root权限启动startX并将其分离,所以它不会阻塞终端。
doas startx &
[2] 2446
[2] + suspended (tty output) doas startx
但它不起作用。
答案1
当sddm
以 user 身份运行会话时sddm
,通常意味着它正在显示 GUI 登录屏幕。当您使用它登录时,用户将切换到实际登录的帐户。
但是X11服务器正在启动虚拟机控制台,而不是在基于伪 TTY 的远程会话中。
如果您想要远程 X11 会话,您将需要:
- 正在运行的 X11 显示服务器在您的本地工作站上,适合其操作系统
- SSH 会话启用 X11 转发
xauth
远程主机/VM 上可用的命令和 X11 客户端库。
具体来说,你根本不需要远程 X11 服务器对于基于 X11 的远程会话:它不必运行,甚至不必安装。如果使用 VNC 或 RDP,情况就会有所不同。
当满足所有这些先决条件时,您应该自动获得一个DISPLAY
环境设置为的终端会话localhost:10
(显示数量可能不同,但会是 10 或更大)。XAUTHORITY
如果您的发行版中有必要,还可以设置环境变量。那时,你应该能够运行
startplasma-x11 &
启动 KDE 会话。