遇到的问题
我有一台安装了manjaro的mini主机,大部分情况都没连显示器,作为一台服务器,少部分情况会连接显示器(一般发生在网络被玩崩了后)。
由于在不连接显示器的情况下,我偶尔也想用一用它的桌面,所以我安装了tigervnc。
遇到了的问题:启动vncserver :1
后,客户端虽然可以连上vnc,但会卡在锁屏loading界面,然后过一会就黑屏了。后面尝试断开重连vnc也是黑屏。
导致问题的原因
我想到可能是session的问题,所以尝试把sddm
关了(systemctl stop sddm
),果然vncserver就可以正常使用。所以此时,我的解决方案是:
sudo systemctl stop sddm
vncserver :1
但是我又发现了一个问题:如果把sddm
关掉,wifi就会断开。(就算连接网线,之前还是遇到了如果关掉sddm
,再重启路由器,主机不会自动连上路由器)。
找到解决方案
查到了这个youtube视频才找到原因:因为sddm
已经用当前用户登录了session,所以再尝试用vncserver
创建一个新的session显然是不行的。所以我们有以下三种方案:
- 方案一: 创建一个新的用户,例如
vncuser
,专门用于vnc登录。 - 方案二:关闭
sddm
自动登录,让vncserver
开机自启,替代sddm
登录。 - 方案三:使用诸如
x0vncserver
的替代品,直接转发当前session。
选择方案
方案一的问题是文件权限,如果我们用另一个用户登录,那么用它进行操作的话,会影响到文件权限。
方案三我目前还没有尝试成功,貌似要转发session的话,必须要先连上显示器,输入密码登录该session。
所以我这里选择了方案二。
只需要两步操作:
- 关闭自动登录(注意:只能在连接显示器的情况下进行这步操作,在vnc远程桌面里操作不成功):关闭自动登录
vncserver
开机自启:
sudo systemctl enable vncserver:1
完成以上操作后,无需连接显示器,重启主机,就可以用ip:5901
连接vnc啦。用sudo systemctl status sddm
查看sddm
的状态,可以发现sddm
依然在运行,只不过它没有用默认账户登录。
Tips
如果遇到网络挂了的情况(无法用vnc远程登录),连接显示器和键盘鼠标然后开机,你会发现和之前vnc的问题一样,卡在了锁屏loading界面,解决办法是:
Alt + F2
进入tty2。- 使用账号密码登录。
sudo systemctl stop vncserver:1
Alt + F1
回到tty1。
就可以正常进入到桌面了!