Lubuntu 16.04 LTS 在 Banana Pro 上无头运行,从LeMaker官方图片在对 32GB SD 卡进行映像处理后,我将系统分区从~3.7GB 扩展至填满该卡,然后首次启动并按照以下伪代码进行操作:
do
# Boot and SSH in
ssh bananapi@<ip_address>
bananapi
# Initial Setup on SSH
sudo su
bananapi
apt-get update
apt-get dist-upgrade -y # let it do everything it wants
apt-get autoremove -y
nano /etc/sudoers # add bananapi back in, copying root
nano /etc/update-manager/release-upgrades # set the desired option here
do-release-upgrade # let it do everything it wants, including reboot
while(do-release-upgrade did something)
apt-get install x11vnc -y
x11vnc -storepasswd ******** /etc/x11vnc.pass
nano /etc/rc.local
/etc/rc.local
包括以下行:
/usr/bin/x11vnc -noxrecord -shared -xkb -forever -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc.pass -rfbport 5900 -bg -o /var/log/x11vnc.log
重启完成后,不同 Windows 和 Lubuntu 机器上的 VNC 客户端可以连接并控制它。我完成了设置,使用 VNC/GUI 调整、SSH 轻松复制/粘贴以及 sFTP 预制脚本和源代码在 Pi 上构建,然后再次重启。
当它恢复时,我重新连接 VNC 客户端,一切似乎都很好。但过了一段时间,我注意到 VNC 窗口没有响应。不仅是只读,而且时钟甚至没有变化。这在 Windows 和 Linux 客户端之间也是一致的。新连接的客户端立即显示相同的问题:连接成功,但它显示了一个过时的屏幕截图,没有任何反应。
此时,我已经完成了所有设置,并有一个自动关机脚本(请记住,这是无头的),用于系统切换到电池供电时,因此我仍然可以通过拔掉交流电源插头正常关闭系统。当系统恢复供电时,VNC 会再次工作......但会持续一段时间。我还注意到,即使 VNC 出现故障,SSH 和 WiFi 接入点仍可工作,因此这不是系统完全故障。只是 VNC 出现故障。
该问题在 16.04 上与原始 14.04 映像上相同,只是软件包升级,只是 LeMaker 实际上尚未发布官方 16.04 映像。
有任何想法吗?
答案1
我终于搞明白了!感谢这个关于不同机器上不同的 VNC 服务器的帖子,以及一些偶然使用 Pi 的体验:
https://forum.ultravnc.net/viewtopic.php?f=3&t=31898
基本上,问题在于 VNC 服务器继续读取不再更新的显示缓冲区,因为视频部分已关闭。在上面的线程中,这是因为我关闭了运行该服务器的笔记本电脑的盖子;就这个问题而言,这是因为默认的屏幕消隐时间仍然存在。一旦超时,Pi 的图形芯片就会关闭,不再更新缓冲区,因此 VNC 服务器似乎已冻结。
我不知道为什么它没有在 VNC 鼠标事件上恢复,但将 Pi 设置为永不关闭屏幕首先解决了丢失问题。
(无论如何它是无头的,所以这样做并不意味着我浪费了屏幕电量。也许在图形芯片上会有一点浪费,但在我的应用程序中可以忽略不计。)