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

news2024/11/18 23:29:30

之前曾利用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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛客OJ题 打印日期

⭐️ 题目描述 🌟 OJ链接:https://www.nowcoder.com/practice/b1f7a77416194fd3abd63737cdfcf82b?tpId69&&tqId29669&rp1&ru/activity/oj&qru/ta/hust-kaoyan/question-ranking 思路: 默认从一月的天数开始&#xff0c…

一键批量修改文件夹名称,中文瞬间变日语,轻松搞定重命名

大家好!现在为了更好地适应全球化发展,许多人都有了海外交流、旅行、学习的需求。但是难免遇到一个问题:在电脑中的中文文件夹名称如何快速翻译成日语? 首先,第一步,我们需要打开文件批量改名,…

编译老版本c++程序 报错 msvcrt.dll 以及 0x000000 内存 不能为 “read“ 问题 已解决

一般 win10 编译 xp对应老版本软件 调试采用 虚拟机形式进行测试,但是虚拟机中,无独立显卡,运行程序提示有,无法调用动态库,或者 内存无法读取,炸一看以为 winxp32位 内存识别只能3.7G.其实是显存无法使用…

【C++】STL---list

STL---list 一、list 的介绍二、list 的模拟实现1. list 节点类2. list 迭代器类(1)前置(2)后置(3)前置- -、后置- -(4)! 和 运算符重载(5)* 解引用重载 和 …

七夕特辑——3D爱心(可监听鼠标移动)

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

第13章——FreeRTOS队列

1.队列简介 队列是任务到任务、任务到中断、中断到任务数据交流的一种机制(消息传递) FreeRTOS基于队列, 实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二值信号量、 递归互斥信号量,因此很有必要深入了…

软考A计划-系统集成项目管理工程师-标准规范

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

python多线程真是让人受够了

一、有8种不同的方法 三、参考文献 https://superfastpython.com/multiprocessing-pool-issue-tasks

linux-进程

1.先谈硬件 冯诺依曼体系结构 一个计算机能够正常运行,就必须遵守冯诺依曼体系 数据流向 为什么不把Cpu直接怼到输入设备和输出设备中间,非要加个内存呢? 答:因为根据木桶原理,如果这样设计,导致最终效…

赴印设厂获得的份额减少,富士康后悔莫及,中国制造获苹果认可

随着iPhone的量产在推进,产业链人士指出iPhone15的分配份额已基本确定,富士康获得了58%的份额,中国大陆的纬创获得28%的份额,而纬创只获得了1%的份额,显示出富士康和纬创这两家企业听从苹果的要求赴印设厂反而被抛弃。…

如何优雅地处理Java多线程编程中的共享资源问题,以确保线程安全和高性能?

文章目录 🎉欢迎来到Java面试技巧专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客🎈该系列文章专栏:Java面试技巧文章作者技术和水平有限,如果文中出现错误…

2017年3月全国计算机等级考试真题(C语言二级)

2017年3月全国计算机等级考试真题(C语言二级) 第1题 每个学校有一名校长,且不同学校的校长可以是同一人,则实体学校和实体校长间的联系是 A. 多对一 B. 多对多 C. 一对一 D. 一对多 正确答案:A 第2题 若有以下定义…

听GPT 讲Prometheus源代码--promtool

promtool是Prometheus的一个命令行工具,它提供了一些功能来帮助用户进行Prometheus配置文件(如prometheus.yml)的检查、规则检查和调试,还可以用于查询Prometheus服务器以获取度量值等。 以下是一些主要的promtool命令&#xff1a…

Azure不可变Blob存储

文章目录 Azure不可变Blob存储介绍Azure不可变性策略实战演练 Azure不可变Blob存储介绍 不可变的存储是一种用于存储业务关键型 Blob 数据的存储方式。与可变存储相反,不可变存储的特点是一旦数据被写入后,便无法再对其进行修改或删除。这种存储方式提供…

一百六十一、Kettle——Linux上安装的kettle9.2开启carte服务(亲测、附流程截图)

一、目的 在Linux上安装好kettle9.2并且连接好各个数据库后,下面开启carte服务 二、实施步骤 (一)carte服务文件路径 kettle的Linux运行的carte服务文件是carte.sh (二)修改kettle安装路径下的pwd文件夹里的服务器…

『C语言』数据在内存中的存储规则

前言 小羊近期已经将C语言初阶学习内容与铁汁们分享完成,接下来小羊会继续追更C语言进阶相关知识,小伙伴们坐好板凳,拿起笔开始上课啦~ 一、数据类型的介绍 我们目前已经学了基本的内置类型: char //字符数据类型 short …

会声会影2023旗舰版电脑端视频剪辑软件

随着短视频、vlog等媒体形式的兴起,视频剪辑已经成为了热门技能。甚至有人说,不会修图可以,但不能不会剪视频。实际上,随着各种智能软件的发展,视频剪辑已经变得越来越简单。功能最全的2023新版,全新视差转…

【Vue】Mixin 混入

Vue Mixin 混入 1.简介 混入(mixin)提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项(如data、methods、mounted等等)。当组件使用混入对象时,所有混入对象的…

微信小程序卡片横向滚动竖图

滚动并不是使用swiper&#xff0c;该方式使用的是scroll-view实现 Swiper局限性太多了&#xff0c;对竖图并不合适 从左往右滚动图片示例 wxml代码&#xff1a; <view class"img-x" style"margin-top: 10px;"><view style"margin: 20rpx;…

XOR Subsequence 2023“钉耙编程”中国大学生算法设计超级联赛(10)hdu7390

Problem - 7390 题目大意&#xff1a;有一个n个数的数组a&#xff0c;对他们的所有非空子序列求异或和得到长度为的数组b&#xff0c;给出b&#xff0c;求a 1<n<18 思路&#xff1a;可以发现&#xff0c;a数组其实是b数组的线性基 &#xff08;线性基详解_Hypoc_的博客…