536 字
3 分钟
麒麟 Kylin V10 安装 VNC 服务踩坑记录
记录麒麟 Kylin V10 上安装 TigerVNC以及踩坑。
先说和其他 Linux 发行版不一样的点
在 Ubuntu/CentOS 的很多教程里,~/.vnc/xstartup 往往直接写 startxfce4 或 gnome-session 就能用;但麒麟默认是 UKUI 桌面,如果不显式设置 UKUI 相关环境变量并启动 ukui-session,经常出现:
- 可以连上 VNC,但黑屏/灰屏。
- 只有鼠标,没有桌面面板。
- 服务显示
active,实际会话不可用。
所以核心是:重点处理 xstartup 的 UKUI 会话启动逻辑。
1. 安装 TigerVNC
sudo apt update
sudo apt install -y tigervnc-standalone-server tigervnc-common
初始化 VNC 密码:
vncpasswd
连续输入两次密码;提示 Verify-only password 时选 n。
2. 放行防火墙端口
VNC :1 默认对应 5901 端口。
如果系统用 ufw:
sudo ufw allow 5901/tcp
如果系统用 firewalld:
sudo firewall-cmd --permanent --add-port=5901/tcp
sudo firewall-cmd --reload
3. 先生成 VNC 用户配置
先启动一次再关闭,生成 ~/.vnc 目录和基础文件:
vncserver :1
vncserver -kill :1
4. 配置麒麟 UKUI 会话(关键)
编辑 ~/.vnc/xstartup:
nano ~/.vnc/xstartup
写入以下内容:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
# 麒麟 UKUI 在 VNC 下通常需要显式声明桌面会话变量
export XDG_CURRENT_DESKTOP=UKUI
export XDG_SESSION_DESKTOP=UKUI
export XDG_SESSION_TYPE=x11
# 优先启动 ukui-session,避免黑屏或只有鼠标
if [ -x /usr/bin/ukui-session ]; then
exec /usr/bin/ukui-session
elif [ -x /usr/bin/gnome-session ]; then
exec /usr/bin/gnome-session --session=ukui
else
ukui-wm &
exec ukui-panel
fi
加执行权限:
chmod +x ~/.vnc/xstartup
5. 注册 systemd 服务并开机自启
创建服务文件(把 test 改成你的实际用户名):
sudo nano /etc/systemd/system/vncserver@:1.service
内容如下:
[Unit]
Description=Remote desktop service (VNC)
After=network.target syslog.target
[Service]
Type=forking
User=test
Group=test
WorkingDirectory=/home/test
# 清理残留,防止启动失败
ExecStartPre=-/usr/bin/vncserver -kill %i > /dev/null 2>&1
# :1 => 5901,可按需调整分辨率
ExecStart=/usr/bin/vncserver %i -geometry 1920x1080 -localhost no
ExecStop=/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target
加载并启动:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@:1.service
sudo systemctl start vncserver@:1.service
sudo systemctl status vncserver@:1.service
看到 active (running) 表示服务正常。
6. 常见问题排查
- 连接后黑屏:优先检查
~/.vnc/xstartup是否为 UKUI 方案,以及是否执行了chmod +x ~/.vnc/xstartup。 - 服务起不来:检查服务文件中的
User、Group、WorkingDirectory是否与实际用户一致。 - 端口不通:确认
5901已放行,且服务器安全组/ACL 没有拦截。
排错时建议看日志:
journalctl -u vncserver@:1.service -e
cat ~/.vnc/*.log
麒麟 Kylin V10 安装 VNC 服务踩坑记录
https://blog.kimbleex.top/posts/2026-03-12-kylin-vnc/