[Raspberry Pi]如何用VNC遠端控制樹莓派(Ubuntu desktop 23.04)?

之前曾利用VMware探索CentOS,熟悉Linux操作系統的指令和配置運作方式,後來在樹莓派價格飛漲的時期,遇到貴人贈送Raspberry Pi 4 model B / 8GB,這下工具到位了,索性跳過樹莓派官方系統(Raspberry Pi OS),直接裝起Ubuntu做實機測試和應用。

當時利用Ubuntu 22.04做了些簡單的應用,包含配置Apache和MySQL等等伺服器,並讓使用者在BS架構(Bowser-server)下,可用網頁簡易操作開發版並取得感測器數據。近期打算用樹莓派做一個通信協定的模擬數據測試,其在開關機的過程出現死當,剛好可以重做映像檔,試試Ubuntu 23.04。

關於遠端控制樹莓派的方式,一般有CLI(Command Line Interface)和GUI(Graphical User Interface)兩種方式,簡言之,可理解為分別遠端到樹莓派的終端機(terminal),用文字傳送指令,以及遠端樹莓派的GNOME桌面。其中遠端桌面方式又可分為RDP(Remote Desktop Protocol)和VNC(Virtual Network Computing); 而遠端到樹莓派終端機的方式一般用SSH(Secure SHell)。以前將樹莓派作為Apache和MySQL伺服器,用SSH遠端並輸入命令行指令即足以啟用或停止伺服器和防火牆,同時只要其開機並連上網路,即可用SSH遠端。然而,若使用window系統內建的遠端桌面軟體(RDP),需登入用戶桌面後,才能順利連線。

此次趁安裝Ubuntu desktop 23.04,一併安裝VNC遠端桌面,期望讓樹莓派重新開機後且尚未登入用戶桌面時,亦能順利遠端樹莓派並登入用戶桌面。在安裝VNC遠端桌面前,先來檢視SSH和RDP是否能順利遠端連線。在Ubuntu desktop 23.04中,SSH和RDP的設定與22.04沒有差異,簡單紀錄如下:

SSH:
樹莓派端(被控端)

sudo apt update #取得update清單

sudo apt install openssh-server #安裝ssh server

sudo systemctl start ssh #啟用ssh服務

sudo service ssh status #查看ssh服務是否為active狀態

電腦端(控制端)

ssh 樹莓派用戶帳號@樹莓派IP

RDP:
樹莓派端(被控端)


電腦端(控制端)

 

來到本文主軸,VNC遠端桌面的安裝方式如下:
1. 連結到RealVNC官網下載VNC安裝程式到樹莓派中,其中選擇arm64版本,表示適用於64bits。 

2.下載的檔案為.tar.gz壓縮檔,可在終端機中先解壓縮,語法如下。
tar -xvf VNC-Connect-Installer-1.3.0-Linux-ARM64.tar.gz

3.接下來點擊解壓縮後的檔案,進到安裝畫面如下。樹莓派為被控端,所以應安裝的軟體為VNC Server。

 

4.完成上述的安裝過程後,接著在終端機輸入下列查看指令,確認VNC是否為啟動狀態(active)。

systemctl status vncserver-x11-serviced.service

systemctl status vncserver-virtuald.service

5.請仔細查看是否有下列異常訊息,若有,請繼續執行第6個步驟。
/usr/bin/vncserver-x11-core: error while loading shared libraries: libbcm_host.so.0: cannot open shared object file: No such file or directory.

vncserver-x11-serviced: Server exited with status 127, restarting in 5s

6.第5步驟說明找不到libbcm_host.so.0,需要在/usr/lib/aarch64-linux-gnu中建立函式庫連結,語法如下。

cd /usr/lib/aarch64-linux-gnu 

sudo ln libvcos.so /usr/lib/libvcos.so.0

sudo ln libvchiq_arm.so /usr/lib/libvchiq_arm.so.0

sudo ln libbcm_host.so /usr/lib/libbcm_host.so.0

sudo ln libmmal.so /usr/lib/libmmal.so.0

sudo ln libmmal_core.so /usr/lib/libmmal_core.so.0

sudo ln libmmal_components.so /usr/lib/libmmal_components.so.0

sudo ln libmmal_util.so /usr/lib/libmmal_util.so.0

sudo ln libmmal_vc_client.so /usr/lib/libmmal_vc_client.so.0

sudo ln libvcsm.so /usr/lib/libvcsm.so.0

sudo ln libcontainers.so /usr/lib/libcontainers.so.0

過程中,可能會出現類似下列幾條失敗的回應訊息,不影響,只要libbcm_host.so.0順利建立即可。
ln: 存取 'libmmal.so' 失敗: 沒有此一檔案或目錄
ln: 存取 'libmmal_core.so' 失敗: 沒有此一檔案或目錄
ln: 存取 'libmmal_components.so' 失敗: 沒有此一檔案或目錄

7.接著在終端機輸入下列啟動VNC服務指令,可搭配上述的查看指令,確認其啟動狀態。
sudo systemctl enable vncserver-virtuald.service 
sudo systemctl enable vncserver-x11-serviced.service  
sudo systemctl start vncserver-virtuald.service   
sudo systemctl start vncserver-x11-serviced.service

8.若有出現該VNC的icon,即是VNC Server已經安裝成功。另外,對該icon點擊右鍵,可看到功能清單,包含常用於Viewer端和Server端的File Transfer功能。

 

9.安裝完樹莓派端的VNC Server後,接著只要在電腦端安裝VNC Viewer,若電腦端的操作系統為window系統,可直接點擊該RealVNC官網連結,下載安裝後,即可看到VNC Viewer介面。如此一來,當樹莓派重新開機後且尚未登入用戶桌面時,亦能順利遠端樹莓派並登入用戶桌面,達到無需對樹莓派插接螢幕,鍵盤和滑鼠的真正本地(LAN or VPN)遠端操控。(OS:初步達到減少機房和電腦桌之間的來回奔波,降低運動量...)

然而,上述僅限於同一個本地網域的使用場景。若要進一步做到跨網域的遠端桌面,可進一步設定RealVNC cloud connection, 步驟如下:

1.用帳號登入Lite-RealVNC官網,選擇LITE版本和點擊Active,其可支持一位使用者操控三台遠端裝置的服務。

 

2.回到安裝VNC server的被控端裝置,點擊VNC icon, 並在清單中選擇Licensing,會出現如下圖對話視窗等等,依序填上VNC的帳號和密碼,並選擇Next.

3.選擇允許cloud和direct connection,並選擇Next,其中可依據個人需求自行設定密碼(VNC password),不一定要使用操作系統的密碼。

 

4.完成設定後,應可看到下圖摘要內容。

5.此時檢視剛已登入官網的畫面,應可看到下圖已設定的裝置狀態,點擊connect,其會啟動電腦端(控制端)的VNC Viewer軟體,並將該被控端設定在Viewer中,往後跨網域的遠端連線只要點選Viewer軟體中的被控端裝置,不用再進到官網中。

參考資料:

1. #installing-vnc-on-raspberry-pi

2. #What-are-cloud-connections-and-direct-connections

3. #establishing-a-direct-connection

4. #Lite-RealVNC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/80521.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 Python 在 NLP 中进行文本预处理

一、说明 自然语言处理 (NLP) 是人工智能 (AI) 和计算语言学的一个子领域,专注于使计算机能够理解、解释和生成人类语言。它涉及计算机和自然语言之间的交互,允许机器以对人类有意义和有用的方式处理、分析…

智能电视与win10电脑后续无法实现DLNA屏幕共享

问题背景: 我用的是TCL电视,但是并不是最新,打开的方式是U盘->电脑,各位看自己情况,很多问题都大概率是智能电视问题。 情景假设: 假设你已经完成原先智能电视该有的步骤,通过DLNA&#xf…

前馈神经网络正则化例子

直接看代码: import torch import numpy as np import random from IPython import display from matplotlib import pyplot as plt import torchvision import torchvision.transforms as transforms mnist_train torchvision.datasets.MNIST(root…

链游再进化 Web3版CSGO来袭

过去几年,游戏开发者们一直希望借Web3这个价值流通网络,改造传统游戏的经济系统,将虚拟资产的掌管权交给用户,让资产自由地在市场流通。 Web3游戏发展史上,涌现过CryptoKitties、Axie Infinity两大爆款,但…

爬虫框架- feapder + 爬虫管理系统 - feaplat 的学习简记

文章目录 feapder 的使用feaplat 爬虫管理系统部署 feapder 的使用 feapder是一款上手简单,功能强大的Python爬虫框架 feapder 官方文档 文档写的很详细,可以直接上手。 基本命令: 创建爬虫项目 feapder create -p first-project创建爬虫 …

LRU算法源码实现

算法介绍: 最近最久未使用(Least Recently Used LRU)算法是⼀种缓存淘汰策略。该算法的思路是,将最近一段时间内最久未使用的页面置换出去。 升级版LRUK算法见 基于LRU-K算法设计本地缓存实现流量削峰https://blog.csdn.net/l…

Deep Learning With Pytorch - 最基本的感知机、贯序模型/分类、拟合

文章目录 如何利用pytorch创建一个简单的网络模型?Step1. 感知机,多层感知机(MLP)的基本结构Step2. 超平面 ω T ⋅ x b 0 \omega^{T}xb0 ωT⋅xb0 or ω T ⋅ x b \omega^{T}xb ωT⋅xb感知机函数 Step3. 利用感知机进行决策…

虚拟机问题

虚拟机无法识别USB设备 经排查为VMware USB Arbitration Service 没有启动,但是VMware USB Arbitration Service依赖于VMware Workstation Server启动 VMware USB Arbitration Service(VMUSBArbService)是由 VMware 虚拟化软件提供的一个服务,用于协调和管理主机系统上的…

Flink CDC系列之:基于 Flink CDC 构建 MySQL 和 Postgres 的 Streaming ETL

Flink CDC系列之:基于 Flink CDC 构建 MySQL 和 Postgres 的 Streaming ETL 一、技术路线二、MySQL数据库建表三、PostgreSQL数据库建表四、在 Flink SQL CLI 中使用 Flink DDL 创建表五、关联订单数据并且将其写入 Elasticsearch 中六、Kibana查看商品和物流信息的…

leetcode611. 有效三角形的个数(java)

有效三角形的个数 有效三角形的个数排序加二分排序 双指针 上期算法 有效三角形的个数 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使…

如何修复损坏的DOC和DOCX格式Word文件?

我们日常办公中,经常用到Word文档。但是有时会遇到word文件损坏、无法打开的情况。这时该怎么办?接着往下看,小编在这里就给大家带来最简单的Word文件修复方法! 很多时候DOC和DOCX Word文件会无缘无故的损坏无法打开,一…

【C++ 记忆站】引用

文章目录 一、引用概念二、引用特性1、引用在定义时必须初始化2、一个变量可以有多个引用3、引用一旦引用一个实体,再不能引用其他实体 三、常引用四、使用场景1、做参数1、输出型参数2、大对象传参 2、做返回值1、传值返回2、传引用返回 五、传值、传引用效率比较六…

【C语言】每日一题(找到所有数组中消失的数字)

找到所有数组中消失的数字,链接奉上。 这里简单说一下,因为还没有接触到动态内存,数据结构,所以知识有限,也是尽力而为,结合题库的评论区找到了适合我的解法,以后有机会,会补上各种…

图数据库_Neo4j中文版_Centos7.9安装Neo4j社区版3.5.9_基于jdk1.8---Neo4j图数据库工作笔记0012

由于我们在国内使用啊,具体还是要用中文版滴,找了好久这个neo4j,原来还是有中文版的, https://we-yun.com/doc/neo4j-chs/ 中文版下载地址在这里: 所有版本都在这里了,需要哪个自己去下载就可以了,要注意下载以后,参考: https://we-yun.com/blog/prod-56.html 在这个位置下载…

画质提升+带宽优化,小红书音视频团队端云结合超分落地实践

随着视频业务和短视频播放规模不断增长,小红书一直致力于研究:如何在保证提升用户体验质量的同时降低视频带宽成本? 在近日结束的音视频技术大会「LiveVideoStackCon 2023」上海站中,小红书音视频架构视频图像处理算法负责人剑寒向…

2023.8 - java - 对象和类

public class Dog {String breed;int size;String colour;int age;void eat() {}void run() {}void sleep(){}void name(){} } 一个类可以包含以下类型变量: 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方…

实现Java异步调用的高效方法

文章目录 为什么需要异步调用?Java中的异步编程方式1. 使用多线程2. 使用Java异步框架 异步调用的关键细节结论 🎉欢迎来到Java学习路线专栏~实现Java异步调用的高效方法 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博…

LabVIEW开发最小化5G系统测试平台

LabVIEW开发最小化5G系统测试平台 由于具有大量存储能力和数据的应用程序的智能手机的激增,当前一代产品被迫提高其吞吐效率。正交频分复用由于其卓越的品质,如单抽头均衡和具有成本效益的实施,现在被广泛用作物理层技术。这些好处是以严格的…

Azure存储访问层

blob数据的热访问层,冷访问层和存档访问层 Azure Blob 存储是一种托管对象存储服务,可用于存储和访问大量非结构化数据,如文本和二进制数据。Azure Blob 存储提供了三个不同层级的访问方式,以适应不同数据的使用模式和成本效益需…

手把手教学——终端工具xshell与文件传输工具xftp使用步骤及详解

前言 xshell是一款常用于连接本地linux服务以及云服务器的终端远程连接工具,该款终端工具常搭配远程文件传输工具xftp一起使用,由于还有很多小伙伴还不知道这两款终端工具的使用流程及步骤,Darren洋在这里给小伙伴们进行详细讲解。 一、下载工…