我試圖在啓用了TrustZone的開發板(Samsung exynos 4412)上運行Linux內核作爲安全操作系統。雖然有人會說安全操作系統應該小而簡單。但我只想嘗試。如果可能的話,那麼將Trustlet應用程序編寫或移植到此安全操作系統將很容易,特別是對於具有UI(可信UI)的應用程序。Linux內核可以作爲ARM TrustZone安全操作系統運行嗎?
我買了一個基於Xv6的可運行安全操作系統的開發板,正常的操作系統是Android(Android版本4.2.2,內核版本3.0.15)。我試圖用android的Linux內核來替換簡單的安全操作系統,也就是用一個小的彙編代碼,例如清除SCR寄存器的NS位,直接調用Linux內核條目(帶有必要的內核標記列表傳入) 。
內核未壓縮代碼被正確執行,內核的第一個C函數start_kernel()也被執行。除了運行到calibrate_delay()之外,幾乎所有初始化函數都運行良好。該功能將等待的jiffies改變:
/* wait for "start of" clock tick */
ticks = jiffies;
while (ticks == jiffies);
我想原因是沒有時鐘產生的中斷(我在打印中時鐘中斷回調函數日誌,他們從未得到)。我在local_irq_enable()函數之前和之後檢查了CPSR狀態。 IRQ和FIQ位設置正確。我還在中斷向量表中定義的Linux內核的IRQ處理程序中打印一些日誌。沒有記錄。
我知道安全世界和非安全世界之間的中斷系統可能存在一些差異。但我無法找到任何文檔中的差異。有人可以指出他們嗎?最重要的問題是,由於Linux是一個非常複雜的操作系統,Linux內核可以作爲TrustZone安全操作系統運行嗎?
我是Linux內核和ARM TrustZone的新手。請幫幫我。
內核被編譯爲'真正'的硬件,而不是硬件TrustZone(驅動程序甚至不可能存在)。 – 2014-09-02 10:23:36
感謝您的回覆。但是我已經看到了幾個可以做很多事情的trustzone實現,比如UI顯示和觸摸屏。你可以看到Genode的實現。 [文檔](http://genode.org/documentation/articles/trustzone)[視頻](https://www.youtube.com/watch?v=voFV1W4yyY8) – 2014-09-02 12:29:14
你的問題似乎有點不清楚。檢出標籤[tag:trust-zone]中的所有問題,尤其是[如何開發用於arm信任區的程序]問題(http://stackoverflow.com/questions/15455011/how-to-develop-programs-for -arm信任區)。你**不需要安全的操作系統才能擁有安全的* trustlet *;只需安全啓動,帶有啓動鎖的分區檢查器和帶有Secure API的監視器表。 – 2014-09-02 16:40:20