嵌入式系統(tǒng)的設(shè)計(jì)目標(biāo)是長(zhǎng)期運(yùn)行而不需要頻繁更新。對(duì)于那些作為智能邊緣組成部分而接入網(wǎng)絡(luò)的系統(tǒng),定期更新卻是一個(gè)常見的需求。例如,在嵌入式系統(tǒng)上更新映像,是基于嵌入式Linux的物聯(lián)網(wǎng)設(shè)備或家庭自動(dòng)化系統(tǒng)制造商經(jīng)常需要處理的事項(xiàng)。在這種情況下,制造商可能會(huì)定期發(fā)布設(shè)備上運(yùn)行的操作系統(tǒng)或應(yīng)用軟件更新,以便提高性能、增添新功能或修復(fù)發(fā)現(xiàn)的安全漏洞。制造商通常會(huì)提供一些方法工具,讓客戶在他們的設(shè)備上輕松地進(jìn)行軟件更新,也可能把這些更新作為新設(shè)備制造過程的一部分。為此,選擇最能滿足這種更新需求的操作系統(tǒng),就成為十分重要的工作。購(gòu)買商業(yè)支持的嵌入式操作系統(tǒng),比企業(yè)內(nèi)部聘用開發(fā)人員來構(gòu)建和維護(hù)自己的操作系統(tǒng)更具成本效益優(yōu)勢(shì)。
Ubuntu Core是Ubuntu Linux操作系統(tǒng)的一個(gè)版本,專為物聯(lián)網(wǎng)設(shè)備和其他嵌入式系統(tǒng)而設(shè)計(jì)。它是Ubuntu的輕量級(jí)極簡(jiǎn)版本,只包含了運(yùn)行物聯(lián)網(wǎng)設(shè)備所需的基本組件和服務(wù),從而使其達(dá)到安全與高效。Ubuntu Core包括一系列安全和管理功能,并通過“snaps”提供定制,這是一種用于軟件打包和系統(tǒng)部署的專有技術(shù)——也就是用于系統(tǒng)容器的壓縮版應(yīng)用軟件。由于具備多功能性、安全性和易用性,使它成為開發(fā)人員的熱門首選。
Wind River Linux是一個(gè)基于Linux的商業(yè)操作系統(tǒng),設(shè)計(jì)目標(biāo)是嵌入式系統(tǒng),應(yīng)用于網(wǎng)絡(luò)設(shè)備、工業(yè)控制系統(tǒng)、航空航天和國(guó)防技術(shù)。Wind River Linux Distro是一個(gè)二進(jìn)制發(fā)行版,基于流行的社區(qū)驅(qū)動(dòng)Yocto項(xiàng)目,采用市場(chǎng)領(lǐng)先的Wind River Linux構(gòu)建而成,包括了對(duì)樹莓派4s的支持。為Distro 安裝系統(tǒng)更新需要OSTree,這是一種用于管理操作系統(tǒng)文件部署和更新的開源技術(shù),也是用于創(chuàng)建、部署和管理操作系統(tǒng)樹生命周期的工具,而操作系統(tǒng)樹是組成操作系統(tǒng)的文件集合。OSTree允許存儲(chǔ)和管理操作系統(tǒng)樹的多個(gè)版本,并支持操作系統(tǒng)的原子事務(wù)更新。
目標(biāo)
為了確定部署后哪個(gè)平臺(tái)更容易維護(hù),讓我們比較一下在Wind River Linux Distro和Ubuntu Core上更新映像的情況。
所用的設(shè)備 & 程序
- Raspberry Pi Imager Raspberry Pi OS – Raspberry Pi - 用來把映像刷新進(jìn)入你的存儲(chǔ)器之中(SD card)
- Raspberry Pi 4 (RPi4)
- Micro HDMI port
- 64 GB Micro SD card
- USB-C Power Supply
更新Wind River Linux Distro映像
1. 確保Wind River Linux Distro二進(jìn)制映像已經(jīng)啟動(dòng)運(yùn)行而且您已經(jīng)作為root用戶登錄。
2. 運(yùn)行OSTree upgrade wrapper script來升級(jí)系統(tǒng)。運(yùn)行命令:
$ ostree_upgrade.sh
3.重啟系統(tǒng)并重新登錄
$ reboot
4. 解鎖此映像。為了確定您的映像處于鎖定狀態(tài),運(yùn)行命令:
$ ostree admin unlock -hotfix
5. 通過DNF安裝、升級(jí)或移除包。
$ dnf install packageName
$ dnf remove packageName
$ dnf update
* 為了進(jìn)行更新,你需要立即明確地更新cache來查看package feeds的變化。
$ dnf upgrade packageName
更新Ubuntu Core映像
1. 更新Ubuntu Core映像的第一步是使用一個(gè)模型斷言(model assertion)。輸入通常以JSON 格式提供。
2. 為了設(shè)置模型斷言,需要安裝snapcraft并登錄。
3. 需要有一個(gè)開發(fā)者ID用來創(chuàng)建模型斷言。
4. 作為開始,需要在支持snap的Linux系統(tǒng)上安裝映像。
5. 為了輸出映像文件本身,請(qǐng)運(yùn)行如下腳本:
$ ubuntu-image snap ubuntu-core-20-amd64.model
比較
Wind River Linux和Ubuntu Core都是面向嵌入式系統(tǒng)基于Linux的操作系統(tǒng),主要用于網(wǎng)絡(luò)設(shè)備、工業(yè)控制系統(tǒng)、航空航天和國(guó)防技術(shù)。這兩個(gè)操作系統(tǒng)都提供了一系列適合這類應(yīng)用的特性和功能,例如實(shí)時(shí)性能和高安全性與高可靠性。
二者的一個(gè)關(guān)鍵性區(qū)別是:
Wind River Linux是高度可配置的,具有可定制的內(nèi)核及一系列可選配置以滿足特定需求。
Ubuntu Core使用Snap Store來添加和安裝軟件包,專注于簡(jiǎn)單性和安全性,具有極簡(jiǎn)的設(shè)計(jì)和一系列功能,以確保操作系統(tǒng)和在其上運(yùn)行的應(yīng)用始終處于最新版且具備安全性。
上述差異會(huì)影響兩個(gè)操作系統(tǒng)上更新映像的特定工具和進(jìn)程。例如,Wind River Linux包含了更高級(jí)的管理和操作系統(tǒng)映像工具,而Ubuntu Core更專注于提供易用性,方便進(jìn)行應(yīng)用更新。
另一個(gè)區(qū)別是,Wind River Linux Distro是由風(fēng)河系統(tǒng)公司開發(fā)的商業(yè)操作系統(tǒng),而Ubuntu Core是通行Ubuntu Linux發(fā)行版的一個(gè)特定版本,由Canonical公司開發(fā)。這意味著,在Wind River Linux Distro上創(chuàng)建和部署新映像的工具和過程可能與Ubuntu Core略有不同。Wind River Linux專注于為商業(yè)用戶提供工具和服務(wù),而Ubuntu Core可能包括與公共社區(qū)合作和共享操作系統(tǒng)映像的工具。
總的來說,對(duì)于嵌入式系統(tǒng)來說,Wind River Linux和Ubuntu Core都是不錯(cuò)的選擇,但對(duì)于某些類型的應(yīng)用和環(huán)境,應(yīng)該考量到它們各自的特定特性和能力,以便做出更好的選擇。如果你認(rèn)為可定制性和長(zhǎng)期支持比較重要,Wind River Linux Distro是適當(dāng)?shù)倪x擇。另一方面,如果你關(guān)心簡(jiǎn)潔性,Ubuntu Core就更穩(wěn)妥一些。在決定使用哪個(gè)操作系統(tǒng)之前,仔細(xì)評(píng)估項(xiàng)目的具體需求和要求,這是非常重要的。
作者 風(fēng)河公司 Swetaa Suresh