536 字
3 分钟
麒麟 Kylin V10 安装 VNC 服务踩坑记录
2026-03-12

记录麒麟 Kylin V10 上安装 TigerVNC以及踩坑。

先说和其他 Linux 发行版不一样的点#

在 Ubuntu/CentOS 的很多教程里,~/.vnc/xstartup 往往直接写 startxfce4gnome-session 就能用;但麒麟默认是 UKUI 桌面,如果不显式设置 UKUI 相关环境变量并启动 ukui-session,经常出现:

  1. 可以连上 VNC,但黑屏/灰屏。
  2. 只有鼠标,没有桌面面板。
  3. 服务显示 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. 常见问题排查#

  1. 连接后黑屏:优先检查 ~/.vnc/xstartup 是否为 UKUI 方案,以及是否执行了 chmod +x ~/.vnc/xstartup
  2. 服务起不来:检查服务文件中的 UserGroupWorkingDirectory 是否与实际用户一致。
  3. 端口不通:确认 5901 已放行,且服务器安全组/ACL 没有拦截。

排错时建议看日志:

journalctl -u vncserver@:1.service -e
cat ~/.vnc/*.log
麒麟 Kylin V10 安装 VNC 服务踩坑记录
https://blog.kimbleex.top/posts/2026-03-12-kylin-vnc/
作者
许骏亮
发布于
2026-03-12
许可协议
CC BY-NC-SA 4.0