解密ACRN:一個專為物聯網而設計的Hypervisor
ACRN 是一個靈活的、輕量級的 hypervisor,以實時性和安全性為設計出發點。
本文由 Linux 基金會撰寫,其中部分內容由英特爾開源中心***工程師 Eddie Dong 提供。
隨著物聯網規模呈指數級增長,物聯網開發者需要支持各種不同的硬件資源、操作系統、軟件工具/應用程序。這是一個很大的挑戰,因為許多互聯的物聯網設備在資源上會受到各種限制的,例如運行內存空間,閃存大小,CPU 核的個數。虛擬化有助于滿足這些廣泛的需求,但是現有的虛擬化方案無法為物聯網開發提供同時滿足尺寸、靈活性和功能的適當的組合。
ACRN 的設計有所不同。在 2018 年的 Linux 嵌入式大會上發布的 ACRN,是一款靈活的、輕量級的參考 hypervisor,以實時性和關鍵的安全性為設計出發點,并且通過開源平臺為精簡嵌入式開發進行優化。
ACRN 的***優勢之一是尺寸小,發布時大約只有 25K 行代碼。英特爾開源技術中心為項目的發布貢獻了源代碼。英特爾公司副總裁兼開源技術中心總經理 Imad Sousou 表示,“ACRN 的想法來自于我們為用戶提供虛擬技術的工作。嵌入式物聯網開發工作量很大。使用 hypervisor 技術,具有不同重要性的負載可以被整合到一個平臺上,從而降低開發和部署成本,并且允許更精簡的系統架構。”
關于名字:ACRN 不是縮寫,發音為 “acorn”,(acorn 英文意思為橡子)寓意雖然開始很小,但最終可以長的很大,與該項目希望通過社區參與成長的方式相似。ACRN 有兩個關鍵組成:hypervisor 和 ACRN 設備模塊。ACRN Hypervisor 是一個 Type 1 的 hypervior,可以直接運行于裸機上。ACRN 設備模塊是針對虛擬設備仿真的參考框架實現,它提供豐富的 I/O 虛擬化支持,目前計劃支持音頻、視頻、圖形和 USB。隨著社區發展,預計會有更多設備虛擬化功能加入。
如何工作?
ACRN Hypervisor 運行在裸機上,然后在其上可以運行一個基于 Linux 的服務操作系統(SOS),然后可以同時運行多個客戶操作系統(GOS),以便整合工作負載。ACRN hypervisor 為服務操作系統創造了***個虛擬環境,然后啟動客戶操作系統。服務操作系統運行本地設備驅動程序來管理硬件,向客戶操作系統提供 I/O mediation。
服務操作系統以系統***優先級的虛擬機運行,以滿足時間對敏感需求和系統服務質量(QoS)的要求。服務操作系統目前可以運行 Clear Linux*,但是 ACRN 也支持其它 Linux* 的發行版或者專有 RTOS 作為服務操作系統或客戶操作系統。誠邀社區幫助來一起開發支持其他版本的服務操作系統,并使用 ACRN 參考堆棧支持其他版本的客戶操作系統,例如:其它 Linux* 發行版、Android*、Windows* 或者專有 RTOS。
為了保持 ACRN hypervisor 代碼庫盡可能小且高效,大部分設備模塊的實現駐留在服務操作系統,用來提供設備共享和其它功能。目的是保證在資源受限的設備上實現小尺寸,低延遲的代碼庫的優化,為物聯網開發平臺構建虛擬化特定功能,如圖形、媒體、音頻、圖像以及其它需要分享資源的 I/O 設備。通過這種方法,ACRN 填補了用于大數據中心的 hypervisor 和直接硬件分區 hypervisor 之間的空白,是各種物聯網開發的理想選擇。
一個實例是車輛中的軟件定義駕駛艙(SDC)。使用 ACRN 作為參考實現,供應商可以構建解決方案,包括儀表盤、車載娛樂系統(IVI)、一個或者更多的后排乘客娛樂系統(RSE)等??紤]到整體系統安全問題,IVI 和 RSE 系統可以作為隔離的虛擬機(VM)運行。軟件定義工業系統(SDIS)是另一個很好的例子,包括網絡物理系統、物聯網、云計算和認知計算。ACRN 可以幫助 SDIS 整合工業工作負載,并且可以跨系統實現靈活調度。這有助于為用戶帶來益處,包括低功耗、簡化安全性、提高可靠性,以及簡化系統管理等。
ACRN 的早期支持者包括英特爾、ADLink 凌華科技、Aptiv、LG 電子和東軟。社區開發者也歡迎下載代碼,并參與 ACRN GitHub 的貢獻。更多的使用案例信息和參與信息,請訪問 ACRN 官網。歡迎參加于 2018 年 10 月 22 ~ 24 日在英國愛丁堡舉辦的開源峰會兼嵌入式 Linux 大會(歐洲),屆時會針對 Linux、云、容器、AI、社區等舉辦 100 多場會議。
關于 ACRN
ACRN 由 Linux 基金會于 2018 年 3 月發布,是一款靈活的、輕量級、開源 hypervisor 參考軟件。ACRN 以實時性和關鍵安全性為設計出發點,特別為精簡嵌入式開發而優化。該項目為各行業的***提供了一個參考設計框架,可以用來構建一個開源的嵌入式 hypervisor,尤其適用于物聯網領域。