天天看點

【Jailhouse 文章】Linux in mixed-criticality systems

https://lwn.net/Articles/774217/ 12.13.2018

Linux核心通常認為不适合安全關鍵系統,從未被設計提供實時響應功能。安全關鍵系統通常通過部署混合運作不同作業系統的獨立計算機來解決,能夠支援混合任務,一些對于安全至關重要,另一些不是。獨立計算機上運作不同作業系統的工作目前主要集中在汽車系統上。在汽車系統上,具有非關鍵任務(使用者互動和顯示多媒體)和關鍵任務(自動駕駛和發動機控制),這些任務可以(并且經常)由運作不同作業系統的獨立計算機來處理。

過去,将關鍵任務和非關鍵任務在同一系統上實作的有RTLinux、RTAI、Xenomai等雙核心方法。如今,PREEMPT-RT更新檔受到了廣泛關注,即使有人說它僅僅具備”軟實時“。

所有這些系統的問題是在安全關鍵的設計中是否具有認證,這對于像Linux這樣大的核心來說很難(不是不可能)。此外,法律法規無論如何都可以阻止該系統的使用,比如,歐洲汽車法規不允許将這種共享系統用于非關鍵任務和發動機控制。

除了雙核心方案和PREEMPT更新檔方案之外,另一種手段也是可行的途徑之一——資源分區,可以在單個平台上建立任務之間的硬分區,現代處理器在大多數常見架構下都支援該途徑。如果其中一個系統可以成功分區,則可以将Linux用于非關鍵代碼,經過認證的作業系統可以用于安全關鍵代碼。這是由歐盟資助的大力神項目(https://hercules2020.eu/)的重點。對于系統的安全關鍵方面,Hercules選擇了Erika Enterprise(https://en.wikipedia.org/wiki/ERIKA_Enterprise),這是一個在GPLv2+下獲得許可的RTOS,它專為汽車電子控制單元設計,并通過了多項相關認證。Erika現在用于一些汽車産品(?),它支援一系列CPU,并且可以在各種Hypervisor下運作。

在Hypervisor方面,它選擇了Jailhouse(Jailhouse是為了安全關鍵型而設計的,并考慮到了認證),它在GPLv2下也可用。該項目的目标是在其支援的任何架構上不超過10,000行代碼。該計劃是使用Jailhouse在Linux旁邊的多核平台上運作實時、安全關鍵任務。它應該能夠在兩者之間提供強大而幹淨的隔離,同時以裸機級别執行。

Jailhoue有一個root cell概念,root cell雖然可以控制整個系統,但不能完全控制運作它的硬體。root cell運作Linux,其它cell可以運作任何支援Jailhouse的核心,Jailhouse無法運作未經修改的核心。Jailhouse沒有内置排程程式,系統中的每個core都交由系統使用,沒有硬體過度使用,也沒有硬體仿真。記憶體在cells間劃分,留存部分予Jailhouse。

支援Jailhouse的Linux系統有一個特殊的裝置(/dev/jailhouse),用于配置root cell,并加載系統至其它cell中,使用配置檔案來完整描述硬體及其分區,該檔案可以在X86上自動生成,但對于ARM系統必須手動編寫。

繼續閱讀