配景:在树莓派上举行开发,必要连接屏幕、键盘、鼠标,部署麻烦、占地方不方便。通过ssh+长途桌面(如用于UI相干效果展示)的方式开发更加便利,SSH根本上都没问题,大家遇到问题比较多的是诸如是否必要外接屏幕、长途桌面无法连接、连接上黑屏。本文说下遇到的一些问题及解决方案。
测试环境:树莓派4B + Ubuntu22.04 Desktop 64bit
目标:通过RealVNC或者向日葵连接<树莓派4B + Ubuntu22.04>长途桌面
1. 树莓派4B + Ubuntu22.04 + 接DSI/HDMI体现屏场景下,VNC或者向日葵无法连接长途桌面问题
通过Raspberry Pi Imager安装Ubuntu22.04 Desktop 64bit,完成向导设置后。先装上openssh,realvnc-server, 向日葵arm kylin版。
1.1 openssh-server安装
- sudo apt install openssh-server
复制代码 1.2 RealVNC server安装
可以从官网下载:
https://www.realvnc.com/en/connect/download/vnc/
ssh连接树莓派后执行:
- sudo dpkg --install <VNC-Server-xxx-Linux-ARM64.deb>
复制代码 留意安装界面提示,根据指令设置下vnc server开机启动。
可以通过ps -e | grep vnc检察服务是否起来。
1.3 向日葵安装
官网下载kylin arm64版本:
https://sunlogin.oray.com/product/localization
安装:
- sudo dpkg --install <SunloginClient_xxx_kylin_arm.deb>
复制代码 向日葵可以在外网访问局域网设备,VNC重要局域网内用,感觉更流通些。先接上键鼠,配置好向日葵,或者等VNC长途桌面搞好来,用VNC长途桌面来配置。
1.4 连接失败问题现象
PC上安装RealVNC Viewer,通过 <树莓派ip>:5900连接长途桌面。会不绝卡在连接界面
向日葵连接也是一样,卡在连接界面。
1.5 原因与解决方案
至于原因,必要提到Linux 系统上两种常用的图形体现服务器协议,Xorg 和 Wayland。
Xorg 是传统的图形体现服务器,它是 X Window 系统的实现之一,也是最常用的版本。Wayland是一种新的图形体现服务器协议,旨在取代 Xorg,并解决 Xorg 中存在的一些问题。Ubuntu17开始引入Wayland,Ubuntu 默认情况下利用 Wayland 作为其图形体现服务器,但用户仍然可以选择在登录时利用 Xorg。 在 Wayland中,每个应用程序都有本身的窗口管理器,这些窗口管理器直接与硬件交互,而不是通过中间的体现服务器(如Xorg)。这种设计使得在长途桌面环境中难以捕获和传输图形数据。此外,Wayland的安全性模子要求严格的权限控制,长途访问会涉及到跨越这些权限边界的问题。
就是现在Wayland对长途桌面支持不好,RealVNC和向日葵不支持Wayland协议,RealVNC和向日葵,只有切回Xorg。
(WayVNC可支持Wayland,想用的可以尝试下: https://shumeipai.nxez.com/2023/12/05/bookworm-the-new-version-of-raspberry-pi-os.html)
1.sudo vim /etc/gdm3/custom.conf
2.将#WaylandEnable=flase解解释
3.sudo systemctl restart gdm3
检察下图此处为X11,阐明切换成功,原本体现是Wayland
这个时候就可以通过VNC和向日葵连接成功。
2. 树莓派4B + Ubuntu22.04 + 不接DSI/HDMI体现屏场景下,VNC或者向日葵连接长途桌面体现黑屏问题
解决完上述Wayland体现系统导致的VNC无法连接问题后,别的一种场景就是不接屏幕(DSI或者HDMI屏幕),VNC可以连接成功但是体现黑屏。
通常两种解决方案:
方案1:HDMI显卡欺骗器
第一种方法是买个HDMI显卡欺骗器怼上,好不好用不知道,没试过。网友说行那就是行。
方案2:添加虚拟体现器
第二种方法是添加虚拟体现器
在/usr/share/X11/xorg.conf.d/创建xorg.conf文件,添加如下内容,生存后重启。
- Section "Device"
- Identifier "Configured Video Device"
- Driver "dummy"
- VideoRam 256000
- EndSection
- Section "Monitor"
- Identifier "Configured Monitor"
- HorizSync 5.0 - 1000.0
- VertRefresh 5.0 - 200.0
- ModeLine "1920x1080" 148.50 1920 2448 2492 2640 1080 1084 1089 1125 +Hsync +Vsync
- EndSection
- Section "Screen"
- Identifier "Default Screen"
- Monitor "Configured Monitor"
- Device "Configured Video Device"
- DefaultDepth 24
- SubSection "Display"
- Depth 24
- Modes "1920x1080" "1440x900" "1280x800" "1024x768"
- EndSubSection
- EndSection
复制代码 重启后即可在无外接屏幕情况下,体现长途桌面。检察体现器,这里体现"Unknown Display", 分辨率我们设置最大是1080p了,想上4K,可以xorg.conf配置下,不外以为没太大必要,分辨率过高,感觉会卡。
备注1:
对于原生的树莓派系统,通常执行以下操纵即可。
- sudo vi /boot/config.txt
- 找到#hdmi_force_hotplug=1,把前面的#号去掉重启
复制代码 对于Ubuntu22.04,/boot/fireware/config.txt没有这些属性, 有说把自行加上这两行,不外试了不加也没啥问题。
- hdmi_force_hotplug=1
- hdmi_safe=1
复制代码 备注2:
加了虚拟体现屏后,再接DSI体现屏开机,从开机到登录界面都正常,进入桌面后整个屏幕灰屏了。估计虚拟体现屏那里配置必要调整,还没时间研究。不外问题也不大,不影响我的利用场景。
备注3:
Xorg和Wayland切换也可以在登录界面选择,如下图,但是Ubuntu22.04这个设置图标默认没有。
试了卸载gdm3后重装,图标可以出现,但是重启几次,设置图标又没有了,没有细究,大家还是直接改配置文件吧。
- sudo apt purge gdm3
- sudo apt install gdm3
- sudo reboot
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |