Các công cụ chia sẻ màn hình máy tính để bàn đồ họa như TeamViewer, AnyDesk và LogMeIn cho phép người dùng điều khiển từ xa màn hình, bàn phím và chuột của một máy tính khác. Trong số đó, các công cụ như TigerVNC, TightVNC, RealVNC cung cấp khả năng điều khiển đa nền tảng thông qua giao thức VNC (Virtual Network Computing). Bằng cách tận dụng tiêu chuẩn Remote Frame Buffer (RFB) để truyền tải các cập nhật màn hình và các sự kiện đầu vào, VNC cho phép điều khiển máy tính để bàn từ xa. Tuy nhiên, người dùng Ubuntu thường xuyên gặp phải sự cố 'Màn hình Xám' gây gián đoạn khi kết nối qua VNC—một màn hình trống, không phản hồi làm gián đoạn năng suất. Hướng dẫn này cung cấp các bước dứt khoát để chẩn đoán và giải quyết vấn đề máy chủ VNC phổ biến này, khôi phục chức năng máy tính để bàn từ xa của bạn trên các hệ thống Ubuntu.
Author: Yuancheng Liu
Created: 2025/05/31
Version: v_0.0.1
Copyright: Copyright (c) LiuYuancheng
Đặc tả vấn đề
Khi thiết lập máy chủ VNC trên một số hệ thống Ubuntu, người dùng có thể gặp phải một vấn đề gây khó chịu: sau khi kết nối từ xa, màn hình chỉ hiển thị một nền màu xám với một con trỏ xuất hiện dưới dạng một chữ "X" màu đen nhỏ, như hình dưới đây:
Trong các trường hợp khác, nền máy tính để bàn chuyển sang màu xám chỉ với một cửa sổ trình khám phá tệp duy nhất (như Files hoặc Nautilus) hiển thị:
Và khi bạn nhấp vào màn hình, bạn có thể gặp lỗi không thể tìm thấy Desktop ngay cả khi thư mục Desktop được hiển thị ở đó:
Vấn đề này thường do các sự cố trong việc khởi tạo môi trường máy tính để bàn trong phiên VNC. Các nguyên nhân phổ biến bao gồm:
-
Môi trường máy tính để bàn bị thiếu hoặc cấu hình sai (ví dụ: GNOME, XFCE hoặc MATE)
-
Cài đặt chỉ mục hiển thị không chính xác trong máy chủ VNC
-
Quyền hoặc quyền sở hữu không đúng của các tệp cấu hình quan trọng
-
Chạy máy chủ VNC với tư cách là root, điều này có thể dẫn đến xung đột môi trường
Mặc dù có nhiều hướng dẫn trực tuyến cung cấp các bản sửa lỗi khác nhau, nhưng bài viết này cung cấp hướng dẫn từng bước để giải quyết vấn đề màn hình màu xám, bắt đầu từ một Hệ thống Ubuntu sạch. Giải pháp này hoạt động ngay cả khi máy chủ VNC được chạy với tư cách là root và đã được thử nghiệm trên Ubuntu 18.04, 20.04 và 22.04.
Các bước chi tiết để giải quyết vấn đề (Hỗ trợ quyền truy cập Root)
Phần này cung cấp một giải pháp đầy đủ, từng bước để giải quyết vấn đề màn hình màu xám trong TightVNC trên các hệ thống Ubuntu. Giải pháp này định cấu hình môi trường máy tính để bàn XFCE hoặc phiên GNOME Flashback gọn nhẹ và cho phép VNC hoạt động bình thường — ngay cả khi chạy dưới người dùng root.
Bước 1: Cài đặt môi trường máy tính để bàn XFCE
XFCE là một môi trường máy tính để bàn gọn nhẹ, hoạt động tốt với VNC.
sudo apt-get update
sudo apt-get install xfce4 -y
Cài đặt thêm các tiện ích XFCE (các công cụ và tiện ích tùy chọn):
sudo apt-get install xfce4-goodies
Bước 2: Cài đặt TightVNC và GNOME Flashback Session
TightVNC là máy chủ VNC được sử dụng trong thiết lập này. GNOME Flashback cung cấp một phiên đơn giản hơn phù hợp cho truy cập từ xa.
sudo apt-get install tightvncserver -y
sudo apt-get install gnome-session-flashback -y
XFCE hoặc GNOME Flashback đảm bảo máy tính để bàn gọn nhẹ, tương thích cho các phiên VNC.
Bước 3: Tắt Wayland (Bật X11)
Ubuntu sử dụng Wayland theo mặc định, không tương thích với nhiều cấu hình VNC.
Chỉnh sửa cấu hình GDM3:
sudo nano /etc/gdm3/custom.conf
Bỏ ghi chú hoặc sửa đổi dòng sau:
WaylandEnable=false
Lưu và đóng tệp. Điều này đảm bảo X11 được sử dụng sau khi khởi động lại. Khi Wayland bị tắt, cho phép VNC hoạt động dưới X11.
Bước 4: Chuẩn bị tệp cấu hình VNC (Với tư cách là Root)
Hướng dẫn này định cấu hình VNC cho người dùng root để trình diễn. Để sử dụng bình thường, bạn nên định cấu hình dưới một người dùng thông thường.
sudo mkdir -p /root/.vnc
sudo chmod 0644 /root/.vnc
Đặt mật khẩu VNC:
sudo touch /root/.vnc/passwd
sudo chmod 0600 /root/.vnc/passwd
sudo bash -c 'echo "" | tightvncpasswd -f > /root/.vnc/passwd'
Bước 5: Khởi tạo VNC và tạo tập lệnh xstartup
Khởi động VNC để khởi tạo các tệp cấu hình:
vncserver
Sau đó, dừng nó cho bước tiếp theo:
vncserver -kill :1
Tạo hoặc ghi đè tệp xstartup
:
sudo touch /root/.vnc/xstartup
sudo chmod 0600 /root/.vnc/xstartup
sudo nano /root/.vnc/xstartup
Dán nội dung sau:
#!/bin/sh
autocutsel -fork
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:Unity"
export XDG_MENU_PREFIX="gnome-flashback-"
unset DBUS_SESSION_BUS_ADDRESS
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check --debug &
Đảm bảo tệp có thể thực thi:
chmod +x /root/.vnc/xstartup
Tập lệnh xstartup khởi động rõ ràng phiên đồ họa và tắt xung đột DBUS.
Bước 6: Tạo dịch vụ Systemd để tự động khởi động VNC
Tạo tệp dịch vụ VNC:
sudo nano /etc/systemd/system/tightvncserver.service
Thêm các nội dung sau:
[Unit]
Description=TightVNC Server
After=syslog.target network.target
[Service]
Type=forking
User=root
ExecStartPre=-/usr/bin/tightvncserver -kill :0
ExecStart=/usr/bin/tightvncserver -geometry 1920x1080 -depth 24 :0
ExecStop=/usr/bin/tightvncserver -kill :0
[Install]
WantedBy=multi-user.target
Đặt quyền:
sudo chmod 0600 /etc/systemd/system/tightvncserver.service
Bật và khởi động dịch vụ:
bashCopyEditsudo systemctl daemon-reexec
sudo systemctl enable tightvncserver
sudo systemctl start tightvncserver
Dịch vụ Systemd đảm bảo VNC tự động khởi động khi khởi động máy.
Bước 7: Khởi động lại và kết nối qua VNC
Bây giờ, khởi động lại máy:
sudo reboot
Sau khi khởi động lại, sử dụng một VNC client như TigerVNC Viewer hoặc RealVNC để kết nối đến:
:5900
Hoặc nếu sử dụng display :1
:
:1
Bạn sẽ thấy một desktop hoạt động đầy đủ như sau:
Đã giải quyết vấn đề !
Tham khảo
-
https://hustakin.github.io/bestpractice/setup-vncserver-for-ubuntu/
-
https://askubuntu.com/questions/800302/vncserver-grey-screen-ubuntu-16-04-lts
-
https://bytexd.com/how-to-install-configure-vnc-server-on-ubuntu/
Last edit by LiuYuancheng (liu_yuan_cheng@hotmail.com) at 02/06/2025, if you have any problem, please send me a message.