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),无 failedexited 状态;
  • 若失败:执行 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 ViewerTightVNC Viewer,输入 设备IP:1(如 192.168.167.72:1),输入之前设置的 VNC 密码,即可连接;
  • 手机端:在应用商店搜索 "VNC Viewer",按提示输入 IP 和密码,适合移动场景操作。

四、适配嵌入式设备(如泰山派)的注意事项

  1. 防火墙问题 :泰山派等嵌入式 Linux 通常未预装 ufw/firewalld,默认无防火墙拦截,无需额外开放端口;若之前安装了 ufw 且启动失败(如内核缺模块),可执行 sudo systemctl stop ufw && sudo systemctl disable ufw 禁用,避免影响 VNC 连接。

  2. 系统目录权限 :若执行 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
  3. 主机名解析警告 :若 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

五、常见问题排查

  1. VNC 服务启动失败,日志显示 "xstartup 无执行权限" :执行 chmod +x ~/.vnc/xstartup 赋予权限,再重启服务:sudo systemctl restart vncserver@:1.service

  2. 重启后 VNC 服务未启动,状态为 "failed" :查看日志定位原因:sudo journalctl -u vncserver@:1.service,常见问题:User 配置错误(非当前用户名)、xstartup 中桌面命令错误(如 GNOME 用了 startxfce4)。

  3. 远程连接时提示 "连接被拒绝" :① 确认 VNC 服务已启动:sudo systemctl status vncserver@:1.service;② 确认设备 IP 正确(重启后 IP 可能变化,需重新查看);③ 嵌入式设备需与客户端在同一局域网(如同一 WiFi)。

六、总结

通过本文步骤,你将实现:

  1. 手动启动 VNC 服务并加载图形桌面;
  2. VNC 服务 "开机自动运行",重启后无需手动操作;
  3. 远程设备(电脑 / 手机)可稳定连接 Linux 桌面。

核心关键是 systemd 服务配置 ------ 通过 /etc/systemd/system/vncserver@.service 文件,将 VNC 注册为系统服务,确保其随系统启动而自动运行,彻底解决 "重启后 VNC 失效" 的问题。

相关推荐
ServBay13 分钟前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户962377954483 小时前
CTF 伪协议
php
BingoGo2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack5 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理6 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php