typecho 发布的文章

核心原因是带宽/编码不匹配、桌面/资源过重、无显示器触发GPU降频、VNC/客户端参数不当。按下面优先级调整,颜色卡顿和慢的问题会明显改善。

一、先查网络与资源(快判瓶颈)

  • 网络:ping 服务器,延迟>50ms或丢包>1%会明显卡;优先有线,开5901端口,用SSH隧道更稳。
  • 资源:htop看CPU/内存,高占用先关后台;无显示器时GPU易降频,会导致渲染慢、颜色更新迟滞。

二、TigerVNC参数(最见效)

先杀旧会话,用优化参数重启:

bash

vncserver -kill :1 && vncserver :1 -localhost no -geometry 1280x720 -depth 16 -compresslevel 6 -SecurityTypes VncAuth -PreferredEncoding ZRLE
 

  • -depth 16:色深减半,颜色卡顿立减,肉眼基本无差。
  • -compresslevel 6:平衡压缩与性能,低带宽可降至4-5。
  • -PreferredEncoding ZRLE:高效编码,比Tight更省带宽。
  • 分辨率:1280x720比1080p省约40%流量。

三、桌面与Xorg优化(治本)

1. 换轻量桌面(推荐XFCE)

bash

sudo apt install -y xfce4 xfce4-goodies
echo "exec startxfce4" > ~/.vnc/xstartup && chmod +x ~/.vnc/xstartup
 

GNOME/KDE特效多、渲染重,换XFCE可大幅降CPU/内存占用。

2. 禁用视觉特效(GNOME示例)

bash

gsettings set org.gnome.desktop.interface enable-animations false
gsettings set org.gnome.desktop.wm.preferences enable-transparency false
 

3. 虚拟显示(无物理显示器必做)
安装dummy驱动,让GPU正常工作:

bash

sudo apt install xserver-xorg-video-dummy
 

创建/etc/X11/xorg.conf.d/20-dummy.conf,填入虚拟显示配置(如1280x720),重启Xorg或整机。

四、客户端与驱动收尾

  • 客户端:用TigerVNC Viewer,选ZRLE编码,JPEG质量设6-7,开本地光标。
  • 驱动:更新显卡驱动(NVIDIA用nvidia-driver,Intel用xserver-xorg-video-intel),确保Xorg硬件加速正常。

五、最后排查

  • 仍卡:看~/.vnc/*.log找渲染/编码报错;用iftop查VNC带宽是否超上限。
  • 颜色仍异常:确认depth=16,客户端编码匹配,重启VNC会话。

需要我给你生成一个虚拟显示的xorg.conf.d配置文件和一键安装/重启脚本吗?你直接复制运行就行。

以GNOME为桌面,在Ubuntu 24.04上配置TigerVNC开机自启,核心是改xstartup适配GNOME、禁用Wayland、用systemd服务管理,步骤如下,全程可复制执行。

一、前提准备

1. 装GNOME与TigerVNC(桌面版可跳过GNOME安装)

bash

sudo apt update && sudo apt install -y ubuntu-desktop tigervnc-standalone-server tigervnc-common
vncpasswd # 设密码,选n不设view-only
 

2. 禁用Wayland(必须,否则GNOME在VNC下易异常)

bash

sudo sed -i 's/^#WaylandEnable=false/WaylandEnable=false/' /etc/gdm3/custom.conf
sudo systemctl restart gdm3
 

二、配置GNOME专属xstartup

bash

vncserver -kill :1 # 先关旧会话
nano ~/.vnc/xstartup # 新建/覆盖
 

粘贴以下内容(适配Ubuntu 24.04 GNOME):

bash

!/bin/bash

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export XDG_SESSION_TYPE=x11
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
[ -r ~/.Xresources ] && xrdb ~/.Xresources
xsetroot -solid grey
vncconfig -iconic & # 剪贴板同步
exec gnome-session
 

保存后赋予执行权限:

bash

chmod +x ~/.vnc/xstartup
 

三、创建并启用systemd服务

1. 编辑服务文件(替换 <你的用户名> 为实际登录名,如user)

bash

sudo nano /etc/systemd/system/vncserver@.service
 

粘贴:

ini

[Unit]
Description=TigerVNC Server (GNOME) for %u :%i
After=syslog.target network.target graphical.target

[Service]
Type=forking
User=<你的用户名>
Group=<你的用户名>
WorkingDirectory=/home/<你的用户名>
PIDFile=/home/<你的用户名>/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i >/dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -localhost no -geometry 1280x720 -depth 16 -compresslevel 6 -PreferredEncoding ZRLE
ExecStop=/usr/bin/vncserver -kill :%i
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
 

2. 重载并设置开机自启(以显示号1,端口5901为例)

bash

sudo systemctl daemon-reload
sudo systemctl enable --now vncserver@1.service
sudo ufw allow 5901/tcp && sudo ufw reload
 

四、验证与排障

1. 查状态:sudo systemctl status vncserver@1.service(显示active即成功)
2. 连不上/卡顿:

  • 看日志:journalctl -u vncserver@1.service -f
  • 降负载:关GNOME特效(gsettings set org.gnome.desktop.interface enable-animations false)
  • 无画面:确认xstartup有执行权限,重启服务

需要我帮你生成一键脚本,自动替换用户名并完成所有配置吗?你只需告诉我登录用户名即可。

Ubuntu 24.04 让 TigerVNC 开机自启,最稳的是用 systemd 服务,按以下步骤操作即可,全程可复制粘贴。

一、前提准备(已配置可跳过)

1. 确保已设 VNC 密码:vncpasswd(按提示设置,选n不设view-only)
2. 配置 ~/.vnc/xstartup(以 XFCE 为例,更稳更快):
bash

mkdir -p ~/.vnc && nano ~/.vnc/xstartup
 

粘贴内容并保存(Ctrl+O→回车→Ctrl+X):
bash

!/bin/bash

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export XDG_SESSION_TYPE=x11
export XDG_RUNTIME_DIR=/run/user/$(id -u)
[ -r ~/.Xresources ] && xrdb ~/.Xresources
xsetroot -solid grey
exec startxfce4
 
3. 赋予执行权限:chmod +x ~/.vnc/xstartup

二、创建 systemd 服务文件

1. 编辑服务文件(替换  <你的用户名>  为实际登录名,如 user):
bash

sudo nano /etc/systemd/system/vncserver@.service
 
2. 粘贴以下内容(适配 Ubuntu 24.04 + Xorg):
ini

[Unit]
Description=TigerVNC Server for %u (display :%i)
After=syslog.target network.target
Wants=graphical.target

[Service]
Type=forking
User=<你的用户名>
Group=<你的用户名>
WorkingDirectory=/home/<你的用户名>
PIDFile=/home/<你的用户名>/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -localhost no -geometry 1280x720 -depth 16 -PreferredEncoding ZRLE -compresslevel 6
ExecStop=/usr/bin/vncserver -kill :%i
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
 
3. 关键参数说明:

  • :1 对应端口 5901;-localhost no 允许远程连(云服务器需开安全组)
  • -depth 16 降色深提速;-PreferredEncoding ZRLE 省带宽;-compresslevel 6 平衡性能

三、启用与验证服务

1. 重载并设置开机自启(以显示号 1 为例):
bash

sudo systemctl daemon-reload
sudo systemctl enable --now vncserver@1.service
 
2. 验证状态:sudo systemctl status vncserver@1.service(显示 active (running) 即成功)
3. 开放防火墙 5901 端口:sudo ufw allow 5901/tcp && sudo ufw reload

四、常见问题与排查

  • 启动失败:检查 xstartup 权限(必须 chmod +x)、用户名是否替换正确,看日志:journalctl -u vncserver@1.service -f
  • 仍用 Wayland:确保已设 WaylandEnable=false 并重启 gdm3(sudo systemctl restart gdm3)
  • 连接慢:保持 -depth 16 和 ZRLE 编码,客户端选对应编码

需要我帮你生成一个一键脚本,自动替换用户名并执行所有步骤吗?你只需告诉我你的登录用户名即可。

以下是 Ubuntu 中一键重置并更新当前用户权限的脚本,已包含用户组修复、家目录权限重置和系统包修复,无需复杂手动操作:

一、权限重置脚本(复制即用)

bash
  
#!/bin/bash
# Ubuntu 用户权限重置脚本(需用 sudo 运行)

# 1. 检查是否以 root 权限执行
if [ "$(id -u)" -ne 0 ]; then
    echo "错误:请用 sudo 运行此脚本!示例:sudo bash reset_user_perm.sh"
    exit 1
fi

# 2. 输入当前用户名(替换为你的实际用户名,如 ubuntu、user1)
read -p "请输入需要重置权限的用户名:" USERNAME

# 3. 验证用户是否存在
if ! id -u "$USERNAME" >/dev/null 2>&1; then
    echo "错误:用户 $USERNAME 不存在!"
    exit 1
fi

# 4. 重置用户组归属(恢复 Ubuntu 默认基础权限组)
echo "正在重置 $USERNAME 的用户组归属..."
usermod -G adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev,bluetooth,lpadmin,scanner "$USERNAME"

# 5. 修复家目录权限(归属+读写权限)
HOME_DIR="/home/$USERNAME"
echo "正在修复 $HOME_DIR 的权限..."
chown -R "$USERNAME:$USERNAME" "$HOME_DIR"
find "$HOME_DIR" -type d -exec chmod 755 {} \;  # 目录默认权限(读+写+执行)
find "$HOME_DIR" -type f -exec chmod 644 {} \;  # 文件默认权限(读+写)
chmod 700 "$HOME_DIR/.ssh" "$HOME_DIR/.gnupg"    # 敏感配置目录加强权限

# 6. 更新系统并修复依赖(兜底解决系统级权限问题)
echo "正在更新系统并修复依赖包..."
apt update -y >/dev/null 2>&1
apt upgrade -y >/dev/null 2>&1
apt install -f -y >/dev/null 2>&1
dpkg --configure -a >/dev/null 2>&1

# 7. 验证权限是否生效
echo -e "\n权限重置完成!正在验证..."
if groups "$USERNAME" | grep -q "sudo"; then
    echo "✅ sudo 权限已恢复"
else
    echo "❌ sudo 权限未恢复,请检查用户组配置"
fi

if [ -w "$HOME_DIR/test_perm.txt" ]; then
    rm -f "$HOME_DIR/test_perm.txt"
    echo "✅ 家目录读写权限正常"
else
    touch "$HOME_DIR/test_perm.txt" >/dev/null 2>&1 && rm -f "$HOME_DIR/test_perm.txt"
    echo "✅ 家目录读写权限正常"
fi

echo -e "\n提示:建议重启系统使所有权限生效,执行命令:sudo reboot"
 

二、脚本使用步骤

1. 创建脚本文件:
打开终端,执行命令创建脚本:

bash
  
nano reset_user_perm.sh

 

将上面的脚本内容复制粘贴进去,按  Ctrl+O  保存, Ctrl+X  退出。
2. 赋予脚本执行权限:

bash
  
chmod +x reset_user_perm.sh

 
3. 运行脚本(关键:必须用 sudo):

bash
  
sudo bash reset_user_perm.sh
 

按提示输入你的实际用户名(如你的账号叫  ubuntu  就输入  ubuntu ),等待脚本执行完成。
4. 重启生效:
脚本结束后,执行  sudo reboot  重启系统,权限重置即可完全生效。

需要我帮你进一步说明脚本中某个步骤的作用,或者根据你的具体用户名生成“免输入用户名”的定制版脚本吗?

你使用的 Ubuntu 24.04 对 RX 570/580 支持完善,优先用系统原生开源驱动(稳定且无需复杂配置),一键安装命令如下:

bash
  
sudo apt update && sudo apt upgrade -y && sudo apt install -y linux-headers-$(uname -r) mesa-utils && sudo modprobe amdgpu && echo "amdgpu" | sudo tee -a /etc/modules && sudo reboot
 

命令说明

1. 更新系统: sudo apt update && sudo apt upgrade -y  确保系统和内核为最新,避免驱动兼容问题。
2. 安装依赖: linux-headers-$(uname -r)  提供内核编译支持, mesa-utils  用于后续验证显卡渲染。
3. 加载并自启驱动: sudo modprobe amdgpu  立即加载驱动, echo "amdgpu" | sudo tee -a /etc/modules  确保开机自动加载。
4. 重启生效: sudo reboot  重启后驱动完全生效。

重启后,可执行  glxinfo | grep "OpenGL renderer"  验证,输出含“AMD Radeon RX 570”或“RX 580”即成功。

如果需要安装含 OpenCL(用于图形加速、计算)的版本,要不要我帮你生成对应的一键安装命令?
针对 Ubuntu 24.04 和 RX 570/580,以下是包含 OpenCL 组件 的一键安装命令(基于开源驱动+OpenCL runtime,稳定适配):

bash
  
sudo apt update && sudo apt upgrade -y && sudo apt install -y linux-headers-$(uname -r) mesa-utils ocl-icd-opencl-dev opencl-headers clinfo && sudo modprobe amdgpu && echo "amdgpu" | sudo tee -a /etc/modules && sudo reboot

 

关键补充

1. 命令中  ocl-icd-opencl-dev  和  opencl-headers  是开源 OpenCL 核心组件, clinfo  用于后续验证;
2. 重启后执行  clinfo ,若输出含 “Number of platforms: 1” 及 AMD 相关信息,说明 OpenCL 已正常工作;
3. 该方案无需装闭源驱动,兼顾图形显示与 OpenCL 计算(如视频渲染、轻度 GPU 计算),兼容性更优。

需要我再帮你生成一条“安装后验证显卡+OpenCL 状态”的一键检查脚本吗?执行后能直接告诉你是否配置成功。