记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。

openeuler2403 安装ukui 后,如何 配置vncserver 才不黑屏?


以下是AI回复内容:


在 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 的黑屏问题了。如果配置中碰到任何具体报错,随时可以带上错误信息再来找我~





转载请标明出处【openeuler2403 安装ukui 后,如何 配置vncserver 才不黑屏?】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论