Linux(含嵌入式设备如泰山派)VNC 完整配置指南:含开机自启动(适配 Ubuntu/Debian 系)
完整配置步骤(含安装、基础配置、开机自启)
阶段 1:安装 VNC 服务器(tightvncserver)
适用于 Ubuntu、Debian 及泰山派等嵌入式 Linux(需确保网络正常):
# 1. 更新 apt 缓存(避免安装时找不到包)
sudo apt update -y# 2. 安装 tightvncserver(轻量、稳定,适配嵌入式设备)
sudo apt install tightvncserver -y# 3. 首次启动 VNC:生成配置文件 + 设置访问密码
vncserver
- 按提示输入两次 VNC 访问密码(建议 6-8 位,过长可能被截断);
- 可选 “是否设置 view-only 密码”(仅允许查看不允许操作):需则输入
y
并设置,无需则输入n
; - 首次启动后,系统会自动生成配置文件
~/.vnc/xstartup
(后续需修改此文件启用图形桌面)。
阶段 2:配置 VNC 图形桌面(修复 “仅显示命令行” 问题)
默认情况下,VNC 仅加载命令行界面,需修改 xstartup
脚本启用图形桌面(适配 Xfce/GNOME,泰山派常用 Xfce):
# 1. 先关闭当前 VNC 会话(避免配置文件被占用)
vncserver -kill :1 # ":1" 表示第一个 VNC 桌面(对应端口 5901)# 2. 编辑 xstartup 配置文件
nano ~/.vnc/xstartup# 3. 删除原有内容,粘贴以下配置(适配 Xfce 桌面,泰山派默认桌面)
#!/bin/sh
# 禁用 X 键盘映射,避免乱码
export XKL_XMODMAP_DISABLE=1
# 清除会话管理器和 DBUS 地址,防止图形桌面冲突
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
# 启动 Xfce 桌面(若为 GNOME 桌面,替换为 "gnome-session &")
startxfce4 &# 4. 赋予脚本执行权限(否则 VNC 无法加载图形桌面)
chmod +x ~/.vnc/xstartup# 5. 手动启动 VNC 验证配置:若弹出图形桌面则基础配置成功
vncserver
- 启动成功标志:终端显示
New 'X' desktop is 主机名:1
,且无报错。
阶段 3:核心配置 —— 开机自启动(systemd 服务)
这是实现 “重启后 VNC 自动运行” 的关键步骤,通过创建 systemd 服务文件注册 VNC 为系统服务:
步骤 1:创建 VNC 服务文件
# 1. 编辑 systemd 服务文件(文件名建议为 vncserver@.service,支持多桌面)
sudo nano /etc/systemd/system/vncserver@.service
步骤 2:粘贴服务配置(需替换 2 处关键信息)
[Unit]
# 服务描述(自定义,便于识别)
Description=VNC Server for %i
# 服务依赖:网络启动后再启动 VNC(避免网络未就绪导致失败)
After=syslog.target network.target[Service]
# 类型:forking(后台运行模式,VNC 需后台启动)
Type=forking
# 关键:替换为你的用户名(如 root、lckfb,通过 "whoami" 命令查看)
User=root
# PID 文件路径:记录 VNC 进程 ID,用于停止/重启服务(%H 为主机名,%i 为桌面号)
PIDFile=/home/%u/.vnc/%H%i.pid
# 启动前先停止旧会话(避免冲突)
ExecStartPre=-/usr/bin/vncserver -kill %i
# 启动命令:%i 为桌面号(如 :1),-geometry 设分辨率(适配嵌入式屏幕,可改)
ExecStart=/usr/bin/vncserver %i -geometry 1024x600 -depth 24
# 停止命令:关闭对应桌面的 VNC 会话
ExecStop=/usr/bin/vncserver -kill %i[Install]
# 开机自启的目标:多用户模式(嵌入式设备默认启动模式)
WantedBy=multi-user.target
- 必须修改的内容:
User=root
中的root
,若你用普通用户(如lckfb
),需改为User=lckfb
(否则 VNC 会因权限问题启动失败); - 可选调整:
-geometry 1024x600
为 VNC 桌面分辨率,可根据需求改为1280x720
(嵌入式设备建议不超过 1024x600,避免卡顿)。
步骤 3:启用并启动 VNC 服务
# 1. 重新加载 systemd 配置(让系统识别新创建的服务文件)
sudo systemctl daemon-reload# 2. 启用开机自启:针对桌面 1(对应端口 5901)
sudo systemctl enable vncserver@:1.service# 3. 立即启动 VNC 服务(无需重启,测试是否能正常运行)
sudo systemctl start vncserver@:1.service# 4. 查看服务状态:确保显示 "active (running)"
sudo systemctl status vncserver@:1.service
- 成功标志:终端输出中含
active (running)
,无failed
或exited
状态; - 若失败:执行
sudo journalctl -u vncserver@:1.service
查看日志,定位错误(常见原因:User
配置错误、xstartup
权限不足)。
阶段 4:验证开机自启(关键测试)
配置后需重启设备,确认 VNC 服务是否自动启动:
# 1. 重启设备(嵌入式设备需等待 1-2 分钟)
sudo reboot# 2. 重启后无需手动执行 vncserver,直接查看服务状态
sudo systemctl status vncserver@:1.service# 3. 进一步验证:查看 VNC 端口(5901)是否在监听(远程可连接的标志)
ss -tuln | grep 5901
- 若
ss -tuln
输出tcp LISTEN 0 5 *:5901 *:*
,说明 VNC 服务已自动启动,且端口开放。
三、远程连接 VNC(手机 / 电脑均可)
步骤 1:获取设备 IP
在 Linux 终端执行以下命令,获取设备的局域网 IP(如泰山派连接 WiFi 后的 IP):
# 查看 WiFi 接口(wlan0)的 IP(网线连接则看 eth0)
ip addr show wlan0 | grep "inet "
- 示例输出:
inet 192.168.167.72/24
,其中192.168.167.72
即为设备 IP。
步骤 2:用 VNC 客户端连接
- 电脑端:下载 RealVNC Viewer 或 TightVNC Viewer,输入
设备IP:1
(如192.168.167.72:1
),输入之前设置的 VNC 密码,即可连接; - 手机端:在应用商店搜索 “VNC Viewer”,按提示输入 IP 和密码,适合移动场景操作。
四、适配嵌入式设备(如泰山派)的注意事项
-
防火墙问题:泰山派等嵌入式 Linux 通常未预装
ufw
/firewalld
,默认无防火墙拦截,无需额外开放端口;若之前安装了ufw
且启动失败(如内核缺模块),可执行sudo systemctl stop ufw && sudo systemctl disable ufw
禁用,避免影响 VNC 连接。 -
系统目录权限:若执行
sudo
时提示 “uid is 0 but '/etc' is owned by 1000
”,需先修复权限(否则服务可能启动失败):sudo chown -R root:root /etc /lib /usr sudo chmod -R 755 /etc /lib /usr
-
主机名解析警告:若
sudo
提示 “unable to resolve host localhost.localdomain
”,编辑/etc/hosts
补充映射:sudo nano /etc/hosts # 添加以下内容(替换 "localhost.localdomain" 为你的主机名,通过 "hostname" 查看) 127.0.0.1 localhost localhost.localdomain ::1 localhost localhost.localdomain
五、常见问题排查
-
VNC 服务启动失败,日志显示 “xstartup 无执行权限”:执行
chmod +x ~/.vnc/xstartup
赋予权限,再重启服务:sudo systemctl restart vncserver@:1.service
。 -
重启后 VNC 服务未启动,状态为 “failed”:查看日志定位原因:
sudo journalctl -u vncserver@:1.service
,常见问题:User
配置错误(非当前用户名)、xstartup
中桌面命令错误(如 GNOME 用了startxfce4
)。 -
远程连接时提示 “连接被拒绝”:① 确认 VNC 服务已启动:
sudo systemctl status vncserver@:1.service
;② 确认设备 IP 正确(重启后 IP 可能变化,需重新查看);③ 嵌入式设备需与客户端在同一局域网(如同一 WiFi)。
六、总结
通过本文步骤,你将实现:
- 手动启动 VNC 服务并加载图形桌面;
- VNC 服务 “开机自动运行”,重启后无需手动操作;
- 远程设备(电脑 / 手机)可稳定连接 Linux 桌面。
核心关键是 systemd 服务配置—— 通过 /etc/systemd/system/vncserver@.service
文件,将 VNC 注册为系统服务,确保其随系统启动而自动运行,彻底解决 “重启后 VNC 失效” 的问题。