Vấn đề màn hình đen khi kết nối từ Windows
Khi sử dụng máy khách RDP trên Windows để truy cập Ubuntu, người dùng thường gặp tình trạng màn hình trống hoặc đen hoàn toàn sau khi đăng nhập. Nguyên nhân chủ yếu liên quan đến xung đột biến môi trường giữa phiên làm việc DBus và môi trường XRDP.
Cách khắc phục:
- Mở tệp cấu hình khởi động giao diện đồ họa của XRDP:
sudo nano /etc/xrdp/startwm.sh
- Chèn hai dòng sau ngay trước lệnh
execcuối cùng (thường làexec /etc/X11/Xsession):
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
- Khởi động lại dịch vụ:
sudo systemctl restart xrdp
Lưu ý: Giải pháp này hoạt động ổn định trên Ubuntu 20.04 LTS. Trên Ubuntu 22.04 LTS, có thể gây ra lỗi thoát đột ngột do thay đổi cơ chế quản lý phiên GNOME — nên cân nhắc dùng phiên bản tương thích hoặc chuyển sang giải pháp thay thế như gnome-remote-desktop.
Thiếu thanh Dock và giao diện không đồng nhất
Kết nối XRDP mặc định thường tải môi trường tối giản (ví dụ: XFCE hoặc session cơ bản), dẫn đến thiếu các thành phần đặc trưng của GNOME như Dock, Activities Overview hay ứng dụng hệ thống tích hợp.
Cách khôi phục giao diện Ubuntu chuẩn:
- Tạo tệp cấu hình phiên người dùng tại thư mục home:
echo 'export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg' > ~/.xsessionrc
- Khởi động lại dịch vụ XRDP để áp dụng:
sudo systemctl restart xrdp
Sau khi kết nối lại, người dùng sẽ thấy giao diện hoàn chỉnh tương đương với đăng nhập trực tiếp trên máy chủ.
Giảm độ trễ và tăng tốc độ phản hồi
Để cải thiện hiệu năng truyền dữ liệu hình ảnh và đầu vào, cần điều chỉnh cả bộ đệm mạng ở mức ứng dụng (XRDP) lẫn hệ điều hành (kernel).
Bước 1: Tối ưu cấu hình XRDP
Mở tệp /etc/xrdp/xrdp.ini, tìm và bỏ chú thích (hoặc thêm nếu chưa tồn tại) các dòng sau trong phần [Globals]:
tcp_send_buffer_bytes=4194304
tcp_recv_buffer_bytes=6291456
Bước 2: Nâng giới hạn bộ đệm kernel
Thêm vào tệp /etc/sysctl.conf:
net.core.rmem_max = 12582912
net.core.wmem_max = 8388608
Sau đó áp dụng cấu hình mới:
sudo sysctl -p
sudo systemctl restart xrdp
Loại bỏ yêu cầu xác thực lặp lại
Các thông báo "Authentication required" xuất hiện khi XRDP cố gắng truy cập các dịch vụ hệ thống như quản lý màu (colord) hoặc cập nhật kho phần mềm (PackageKit). Đây là hành vi bảo mật mặc định, nhưng gây gián đoạn trải nghiệm từ xa.
Giải pháp dựa trên PolicyKit:
- Với colord: Tạo tệp
/etc/polkit-1/localauthority/50-local.d/45-allow-colord.pklavới nội dung:
[Allow Colord for All Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
- Với PackageKit: Tạo tệp
/etc/polkit-1/localauthority/50-local.d/46-allow-packagekit.pklavới nội dung:
[Allow Repository Refresh for All Users]
Identity=unix-user:*
Action=org.freedesktop.packagekit.system-sources-refresh
ResultAny=no
ResultInactive=no
ResultActive=yes
Sau khi lưu, không cần khởi động lại — các quy tắc sẽ được áp dụng ngay lập tức cho các phiên đăng nhập mới.