openeuler2403 安装ukui 后,如何 配置vncserver 才不黑屏?
openeuler2403 安装ukui 后,如何 配置vncserver 才不黑屏?
在 openEuler 2403 中给 UKUI 桌面环境配置 VNC 时,最常见的黑屏问题,几乎都是因为 `~/.vnc/xstartup` 这个配置文件没有正确启动 UKUI 会话。
### 核心步骤:正确配置 `xstartup` 文件
这个问题的根源在于,VNC 服务启动时默认运行的是一个极其精简的 `xstartup` 脚本,它并没有告诉系统要启动完整的 UKUI 桌面环境。我们需要手动修改这个文件,让它来唤醒 UKUI。
请按以下步骤操作:
1. **登录并进入个人目录**:请用你准备用来运行 VNC 服务的那个“普通用户”账号登录系统。
2. **备份并编辑 `xstartup`**:
```bash
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
```
备份好原文件后,我们用编辑器创建一个全新的 `xstartup` 文件,并写入正确的配置。
```bash
vi ~/.vnc/xstartup
```
请将下面的内容完整地复制进去:
```bash
#!/bin/sh
# 1. 清除冲突的环境变量
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
# 2. 设置 UKUI 所必需的环境变量
export XDG_RUNTIME_DIR=/tmp/runtime-$USER
export XDG_CURRENT_DESKTOP=UKUI
# 3. 启动 D-Bus 会话
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
eval $(dbus-launch --sh-syntax)
export DBUS_SESSION_BUS_ADDRESS
fi
# 4. 设置美观的灰蓝色背景
xsetroot -solid "#5A6E7A"
# 5. 启动 UKUI 桌面环境
exec ukui-session
```
> 对复制粘贴的内容稍作解释:
> - **第 1 部分**:清除可能导致问题的变量,让 UKUI 在干净的环境里启动。
> - **第 2 部分**:明确告诉系统,我们要启动的是 `UKUI` 桌面。
> - **第 3 部分**:启动 UKUI 依赖的 D-Bus 通信服务。
> - **第 4 部分**:设置桌面的背景色,方便判断 UKUI 是否已加载。等一切正常后,你就可以随意更换背景了。
> - **第 5 部分**:这是最核心的一步,`exec ukui-session` 命令会正式启动整个 UKUI 桌面环境。
3. **赋予文件可执行权限**:配置文件创建好了,系统还必须知道它可以运行。这一步至关重要,没有权限文件就无法执行。
```bash
chmod +x ~/.vnc/xstartup
```
### 启动与连接
修改好配置后,就可以启动或重启 VNC 服务了。
1. **停止当前会话**:如果 VNC 服务正在运行,需要先把它停下来。
```bash
vncserver -kill :1
```
2. **启动新会话**:
```bash
vncserver :1 -geometry 1920x1080 -depth 24
```
> **参数说明**:
> - `:1`:表示这是 VNC 服务的第一个桌面,它对应的端口号是 5901。
> - `-geometry 1920x1080`:设置远程桌面的分辨率,你可以按自己的需求修改。
> - `-depth 24`:设置颜色的深度为 24 位,以获得更好的显示效果。
3. **防火墙放行端口**:
```bash
sudo firewall-cmd --add-port=5901/tcp --permanent
sudo firewall-cmd --reload
```
4. **使用客户端连接**:现在,你可以用 VNC 客户端(比如 RealVNC 或 TigerVNC),连接到 `你的服务器IP地址:1`(比如 `192.168.1.100:1`)并输入密码,应该就能成功看到 UKUI 的桌面了。
### 可选:让 VNC 服务自动启动
如果你希望系统在开机后能自动启动 VNC 服务,可以用下面的方法。这里我们采用的是更现代也更安全的方式,通过 systemd 的 `--user` 模式来管理 VNC 会话。
1. **创建服务目录并建立服务文件**:
```bash
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/vncserver.service << 'EOF'
[Unit]
Description=TigerVNC server (user session)
[Service]
Type=forking
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24
ExecStop=/usr/bin/vncserver -kill :1
Restart=on-failure
User=%i
[Install]
WantedBy=default.target
EOF
```
2. **启用并启动服务**:
```bash
systemctl --user daemon-reload
systemctl --user enable vncserver.service
systemctl --user start vncserver.service
```
3. **设置用户服务开机自启**:
```bash
sudo loginctl enable-linger $USER
```
完成上述步骤后,VNC 服务就会在用户登录后自动启动了。
### 常见问题排查
- **黑屏/灰屏**:几乎都是 `~/.vnc/xstartup` 文件配置不正确或者没有执行权限导致的。请务必确保文件路径、内容、`exec ukui-session` 命令和文件权限都正确无误。
- **连接被拒绝**:通常是防火墙没有放行端口或 VNC 服务本身没启动。请检查 `5901` 端口是否开放和 VNC 服务的状态。
- **鼠标光标不显示或显示异常**:这可能是 UKUI 与 VNC 的兼容性问题,可以尝试在 `~/.vnc/xstartup` 中 `exec ukui-session` 这一行的上方添加 `export XCURSOR_THEME=DMZ-White`,强制指定一个鼠标主题。如果这个方法无效,可以多尝试几种不同的鼠标主题看看。
- **使用 `systemd` 用户服务启动 VNC 失败**:可以切换到 root 用户,或者用带有 `sudo` 的命令手动停止普通用户的 VNC 会话,然后重新以服务方式启动。
### 总结一下
解决在 openEuler 2403 上配置 UKUI + VNC 黑屏问题的关键在于两点:
1. 核心是正确配置 `~/.vnc/xstartup` 文件来启动完整的 UKUI 会话。
2. 为了长期稳定使用,设置一个 `systemd` 的用户服务来管理 VNC 是非常推荐的。
按照以上步骤操作,应该就能帮你解决 VNC 的黑屏问题了。如果配置中碰到任何具体报错,随时可以带上错误信息再来找我~
目录 返回
首页