物聯(lián)網包括各種各樣的設備,它們都運行不同的體系結構,并且通常專門針對手頭的特定任務進行配置。盡管嵌入式設備世界中有很大一部分是在Linux上運行的,但為完成這項任務而添加的定制軟件和系統(tǒng)可能會使維護生命周期變得復雜,從而使它們保持最新、安全和可靠。更新嵌入式Linux設備的最低要求是什么?產品制造商過去是如何運行更新的,直到今天仍然是這樣?最后,我們將看一看開放源代碼技術,如容器和其他現(xiàn)代工作流,在正確實施后如何極大地有利于嵌入式開發(fā)中的軟件和固件生命周期管理。
嵌入式環(huán)境中的挑戰(zhàn)
根據(jù)相關數(shù)據(jù)推測,到2025年,全球聯(lián)網設備將超過557億臺,其中75%連接到物聯(lián)網平臺。有了這么多聯(lián)網的物聯(lián)網設備,更新它們變得簡單、高效、最重要的是安全,這一點至關重要。
但在深入研究嵌入式設備更新所需的內容之前,有必要仔細看看嵌入式環(huán)境是什么樣子的。與云計算或web編程不同,你在嵌入式世界中的環(huán)境受到嚴格控制,有許多限制。
設備通常位于難以到達的位置
通常情況下,消費者和其他你甚至沒有想到的設備都位于偏遠且難以到達的位置。如果你想到wifi路由器和其他難以獲得的設備,它們不可能總是以可控的方式更新。
網絡連接可能會有所不同
連接可能是斷斷續(xù)續(xù)的,可能是通過4G連接,或者比這更慢的連接。你可能有也可能沒有安全的連接,特別是當你通過公共網絡時。
產品壽命可延長至10年以上
嵌入式開發(fā)領域中的產品壽命差異很大。一些市場,如汽車,可以保持相同的硬件五到十年,而家用電器,它可以是原來的兩倍。但在消費電子領域,產品的使用壽命更像是6到12個月,因此種類繁多。
電力并非總是有保障的
必須解決電力問題,特別是在客戶不是企業(yè)的消費者服務提供商(CSP)的情況下。許多消費類設備都使用電池供電,即使沒有,也不能保證設備所有者在任何特定時刻都不會拔下電源。你必須能夠處理可能具有間歇性電源的設備。
嵌入式Linux系統(tǒng)上更新了什么?
大多數(shù)嵌入式設備都是單用途設計,其構造目的是為了更好地執(zhí)行一件事情。由于這種高度的專門化,Linux發(fā)行版通常是完全精簡的。當涉及到安全和其他維護更新時,以下是需要在嵌入式Linux設備上更新的基本組件:
Board Support
Package(BSP):這通常由你使用的系統(tǒng)芯片制造商提供,它包含為設備中使用的目標板提供基本Linux內核支持的代碼庫。嵌入式開發(fā)人員通??梢宰远x這些內容,有時還需要更新。
Bootloader :這是設備通電后運行的第一個組件。它初始化了主板并啟動了Linux內核。
Linux
Kernel:Linux發(fā)行版的核心,包括你想要運行的應用程序的任何專用模塊和特定驅動程序。這通常是一個需要半定期更新的組件。
根文件系統(tǒng):這是保持系統(tǒng)運行的基本系統(tǒng)庫和其他實用程序和腳本所在的位置。這些文件中的大多數(shù)都需要更新和升級。
系統(tǒng)應用程序和包:這是你的應用程序所在的用戶區(qū)。在這里,你需要更新功能,偶爾修復bug。
傳統(tǒng)嵌入式發(fā)行版更新
更新嵌入式系統(tǒng)通常需要完全重建操作系統(tǒng)以保護設備。根據(jù)你使用的Linux發(fā)行版的不同,可以逐個文件、逐個包或以一層一層更可移植的方式手動完成。一旦嵌入式開發(fā)人員添加了修復和升級,然后重新構建并測試了操作系統(tǒng),你就可以從空中傳送(OTA)設備更新系統(tǒng)將其部署回設備。
“重建整個操作系統(tǒng)”方法的一個大問題是,現(xiàn)在你可能有1000臺設備,其中許多設備都有定制的配置和定制的發(fā)行版,帶有精選的軟件包和模塊,甚至是偏離原始電路板設計的高度專業(yè)化的電路板支持軟件包。單獨或甚至在較小的設備組中更新所有這些是一個耗時且容易出錯的過程。
用容器更新嵌入式系統(tǒng)
如果你可以將整個操作系統(tǒng)和系統(tǒng)想象為一組模塊化的容器化不可變構建塊,你可以完全控制這些構建塊,會怎么樣?使用容器,可以將系統(tǒng)粒度保持在第三方可以將組件作為完全工作單元交付的水平,如果操作正確,這些組件之間的相互依賴性將非常小。
一個完全容器化的系統(tǒng)包括以下容器:Linux內核、任何中間件包以及用戶區(qū)。此級別的容器化為你提供了一個完全模塊化的系統(tǒng),如果需要,可以跨數(shù)百萬臺設備進行更靈活和獨立的更新,這將大大提高嵌入式開發(fā)效率。