Ubuntu-远程桌面
- ubuntu环境rustdesk-1.4.0-aarch64.deb安装rustdesk
- [kill --tray and --server both](#kill --tray and --server both)
- [below two lines do not work, have to use above one line](#below two lines do not work, have to use above one line)
ubuntu环境rustdesk-1.4.0-aarch64.deb安装rustdesk
报错:可能会在远程连接时候显示'No displays'
log
5月 29 15:04:18 ubuntu-zgq systemd[1]: Stopped RustDesk.
5月 29 15:04:33 ubuntu-zgq systemd[1]: Started RustDesk.
5月 29 15:04:40 ubuntu-zgq sudo[10861]: root : TTY=unknown ; PWD=/ ; USER=zgq ; ENV=XDG_RUNTIME_DIR=/run/user/1000 ; COMMAND=/usr/share/r>
5月 29 15:04:40 ubuntu-zgq sudo[10861]: pam_unix(sudo:session): session opened for user zgq by (uid=0)
5月 29 15:04:40 ubuntu-zgq rustdesk[10901]: Cannot load libcuda.so.1
5月 29 15:04:40 ubuntu-zgq rustdesk[10901]: Cannot load libcuda.so.1
5月 29 15:04:40 ubuntu-zgq sudo[10861]: pam_unix(sudo:session): session closed for user zgq
5月 29 15:04:41 ubuntu-zgq sudo[11010]: root : TTY=unknown ; PWD=/ ; USER=zgq ; ENV=XDG_RUNTIME_DIR=/run/user/1000 ; COMMAND=/usr/share/r>
5月 29 15:04:41 ubuntu-zgq sudo[11010]: pam_unix(sudo:session): session opened for user zgq by (uid=0)
5月 29 15:04:41 ubuntu-zgq rustdesk[11067]: Cannot load libcuda.so.1
5月 29 15:04:41 ubuntu-zgq rustdesk[11067]: Cannot load libcuda.so.1
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: Failed to read XDG desktop portal settings: GDBus.Error:org.freedesktop.portal.Error.NotFound: 未>
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: Failed to read XDG desktop portal settings: GDBus.Error:org.freedesktop.portal.Error.NotFound: 未>
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: Try setting transparent
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: flutter: launch args: [--cm]
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: flutter: --cm started
comment: 此处为注释,阅读时请忽略
从日志信息来看,RustDesk 在启动过程中遇到了几个问题:
-
无法加载
libcuda.so.1
:- 这表明 RustDesk 试图加载 CUDA 库,但找不到该库。这可能是因为系统中没有安装 CUDA,或者 CUDA 库的路径没有正确配置。
-
无法读取 XDG 桌面门户设置:
- 这表明 RustDesk 无法访问 XDG 桌面门户,这可能是由于权限问题或桌面环境未正确启动。
解决方法
1. 安装 CUDA(如果需要)
如果你的系统需要使用 CUDA 功能,可以安装 CUDA 库。否则,可以忽略这个错误。
-
安装 CUDA:
-
安装 CUDA 的步骤比较复杂,具体步骤可以参考 NVIDIA 官方文档。
-
简单的安装命令如下:
bashsudo apt update sudo apt install nvidia-cuda-toolkit
-
-
设置环境变量:
-
确保 CUDA 库路径已添加到环境变量中。编辑
~/.bashrc
文件,添加以下内容:bashexport LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
-
然后重新加载配置文件:
bashsource ~/.bashrc
-
2. 解决 XDG 桌面门户问题
XDG 桌面门户问题可能是由于权限不足或桌面环境未正确启动。可以通过以下步骤解决:
-
检查 XDG_RUNTIME_DIR:
-
确保
XDG_RUNTIME_DIR
环境变量已正确设置。可以通过以下命令检查:bashecho $XDG_RUNTIME_DIR
-
如果输出为空或不正确,可以手动设置:
bashexport XDG_RUNTIME_DIR=/run/user/$(id -u)
-
-
检查显示管理器状态:
-
确保显示管理器(如 GDM 或 LightDM)正在运行。可以通过以下命令检查:
bashsudo systemctl status gdm3
-
如果显示管理器未启动,可以通过以下命令启动:
bashsudo systemctl start gdm3
-
-
检查 RustDesk 服务配置:
-
确保 RustDesk 服务配置正确。可以通过以下命令检查 RustDesk 服务配置文件:
bashcat /etc/systemd/system/rustdesk.service
-
确保服务配置文件中包含正确的环境变量和用户权限设置。例如:
ini[Service] ExecStart=/usr/bin/rustdesk --service User=gdm Environment=XDG_RUNTIME_DIR=/run/user/121
-
-
重新启动 RustDesk 服务:
-
重新启动 RustDesk 服务以应用新的配置:
bashsudo systemctl daemon-reload sudo systemctl restart rustdesk
-
3. 检查 RustDesk 客户端日志
RustDesk 客户端日志可能包含更多错误信息。可以通过以下步骤检查:
-
查看客户端日志:
-
查看 RustDesk 客户端日志文件:
bashjournalctl -u rustdesk
-
-
手动启动 RustDesk 客户端:
-
以
gdm
用户身份手动启动 RustDesk 客户端,以便查看实时日志:bashsudo -u gdm -E XDG_RUNTIME_DIR=/run/user/121 /usr/share/rustdesk/rustdesk --tray
-
总结
通过以上步骤,你应该能够解决 RustDesk 提示"no displays"和"Cannot load libcuda.so.1"的问题。如果问题仍然存在,建议查看 RustDesk 的官方文档或社区论坛,获取更多帮助。
zgq@ubuntu-zgq:~$ cat /lib/systemd/system/rustdesk.service
Unit
Description=RustDesk
Requires=network.target
After=systemd-user-sessions.service
Service
Type=simple
ExecStart=/usr/bin/rustdesk --service
kill --tray and --server both
ExecStop=/usr/bin/pkill -f "rustdesk --"
below two lines do not work, have to use above one line
#ExecStop=/usr/bin/pkill -f "rustdesk --tray"
#ExecStop=/usr/bin/pkill -f "rustdesk --server"
PIDFile=/run/rustdesk.pid
KillMode=mixed
TimeoutStopSec=30
User=root
LimitNOFILE=100000
Install
WantedBy=multi-user.target
出现如下错误:
● rustdesk.service - RustDesk
Loaded: loaded (/lib/systemd/system/rustdesk.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-05-29 21:31:54 CST; 8s ago
Main PID: 35316 (rustdesk)
Tasks: 16 (limit: 18892)
Memory: 20.5M
CPU: 2.254s
CGroup: /system.slice/rustdesk.service
└─35316 /usr/bin/rustdesk --service
5月 29 21:31:54 ubuntu-zgq systemd[1]: Started RustDesk.
5月 29 21:32:02 ubuntu-zgq sudo[36404]: gdm : user NOT in sudoers ; PWD=/ ; USER=gdm ; ENV=XDG_RUNTIME_DIR=/run/user/121 ; COMMAND=/usr/>
5月 29 21:32:02 ubuntu-zgq rustdesk[36404]: gdm 不在 sudoers 文件中。此事将被报告。
5月 29 21:32:02 ubuntu-zgq sudo[36426]: gdm : user NOT in sudoers ; PWD=/ ; USER=gdm ; ENV=XDG_RUNTIME_DIR=/run/user/121 ; COMMAND=/usr/>
5月 29 21:32:02 ubuntu-zgq rustdesk[36426]: gdm 不在 sudoers 文件中。此事将被报告。
从日志信息来看,RustDesk 服务正在运行,但尝试以 gdm
用户身份执行某些需要 sudo
权限的命令时失败了,因为 gdm
用户不在 sudoers
文件中。这可能是由于 RustDesk 客户端尝试以 gdm
用户身份启动时需要某些特权操作。
解决方法
1. 修改 sudoers
文件
为了让 gdm
用户能够执行必要的命令,可以将 gdm
用户添加到 sudoers
文件中,并允许其执行特定的命令。这需要谨慎操作,以避免安全问题。
-
编辑
sudoers
文件 :使用
visudo
命令编辑sudoers
文件:bashsudo visudo
-
添加
gdm
用户 :在文件中添加以下行,允许
gdm
用户执行rustdesk
相关命令:bashgdm ALL=(ALL) NOPASSWD: /usr/bin/rustdesk
这将允许
gdm
用户在不需要密码的情况下执行rustdesk
命令。 -
保存并退出 :
保存文件并退出编辑器。
2. 修改 RustDesk 服务配置
确保 RustDesk 服务配置正确,避免不必要的 sudo
调用。
-
编辑服务配置文件 :
打开
/lib/systemd/system/rustdesk.service
文件进行编辑:bashsudo nano /lib/systemd/system/rustdesk.service
-
修改配置文件 :
在
[Service]
部分,确保User
设置为gdm
,并添加Environment
变量:ini[Service] Type=simple ExecStart=/usr/bin/rustdesk --service ExecStop=/usr/bin/pkill -f "rustdesk --" PIDFile=/run/rustdesk.pid KillMode=mixed TimeoutStopSec=30 User=gdm Environment=XDG_RUNTIME_DIR=/run/user/121 LimitNOFILE=100000
-
重新加载 systemd 配置 :
修改配置文件后,重新加载 systemd 配置并重启 RustDesk 服务:
bashsudo systemctl daemon-reload sudo systemctl restart rustdesk
3. 检查 RustDesk 客户端启动
确保 RustDesk 客户端能够正确启动。可以通过以下步骤手动启动 RustDesk 客户端,并检查日志:
-
手动启动 RustDesk 客户端 :
以
gdm
用户身份手动启动 RustDesk 客户端:bashsudo -u gdm -E XDG_RUNTIME_DIR=/run/user/121 /usr/share/rustdesk/rustdesk --tray
-
检查客户端日志 :
查看 RustDesk 客户端日志文件以获取更多错误信息:
bashjournalctl -u rustdesk
总结
通过修改 sudoers
文件,允许 gdm
用户执行必要的命令,并确保 RustDesk 服务配置正确,可以解决 RustDesk 提示"gdm 不在 sudoers 文件中"的问题。如果问题仍然存在,建议查看 RustDesk 的官方文档或社区论坛,获取更多帮助。