Re: [問卦] 第一次自幹作業系統核心就上手
※ 引述《johnny9667 (大八)》之銘言:
: 最近我youtube首頁一直出現這部影片
: [COSCUP 2012] 第一次自幹作業系統核心就上手 - Jserv
: https://youtu.be/m6R1mFpifa4
既然 YouTube 覺得閣下是這部影片的潛在受眾,相逢就是有緣,來交個朋友吧!
: 現成的linux kernel開源碼就在那裏 一堆現成的 https://www.kernel.org/
: 幹嘛自幹? 有沒有八卦?
在一個足夠複雜的資訊系統中,往往不只有一個作業系統,例如 Android 手機中,除了
以 AOSP [1] 為基礎的 Linux 核心加上 Android 系統外,至少還有個獨立於 Linux 的
作業系統名為 Trusty [2],後者掌管包含你的指紋和電子支付一類需要高度安全處理的
資訊,這個 Trusty 作業系統具備你所認知的典型機制:
a. 提供系統呼叫
b. 允許執行應用程式
c. 具備排程能力
d. 能夠處理中斷和周邊的通訊
Trusty 在 Arm 處理器中,以最高的特權等級 (EL3) 模式執行,可說是凌駕於 Linux
核心之上,至於 Trusty 對於手機設計為何重要呢?倘若沒有這個 Trusty 作業系統,
包含你的指紋在內的隱私資料只是存放在 Linux 系統中,一旦 Linux 遭遇到 rootkit
[3],那麼很可能從你的指紋、電子交易資訊、信用卡卡號、線上影音的 DRM 密鑰 [4]
甚至是電信商特有的資訊都會被揭露,你想像手機設計/製造商和服務供應商會蒙受多大
的損失呢?
考慮到這類 TEE [5] 的作業系統責任重大,近期也加入虛擬化技術的支援,如 OP-TEE
就提供對應的虛擬化組態 [6]。這裡快速總結 TEE 作用和開發客製化作業系統的需要:
> 為了預防原本架構下的作業系統遭受攻擊,另外用一個安全的作業系統,搭配硬體隔離
> 機制,去保護敏感的資料,限制主 CPU 無法去存取另外一個作業系統的記憶體或相關
> 資源,以達到保護及隔離的功效。
以 Arm Cortex-A 系列微處理器來說,為了完整劃分 Trusted 及 Non Trusted,透過
AMBA、週邊硬體,和處理器內部的硬體來實作。每個實體處理器核 (core) 皆有兩個虛擬
核可使用,其一為 secure,另一為 non-secure。運作機制如下:
1. 硬體提供切換機制 (secure moniter exception)
2. 透過指令 (Secure Moniter Call, SMC) 或觸發一些其他 exception,促使 secure
moniter 進行受硬體保護的切換
實際切換的方法是,儲存目前的 process status 至 non-securted OS (即 REE),進入
TEE 做完相關操作 後,接著還原切換回原本的 REE 作業系統的 process status。
為此 Arm 還提供 Trusted Firmware-A 作為上述機制的參考實作。您若詢問投入手機
晶片設計的工程師朋友,相信都對這方面略知一二。
你說,涉及關鍵的數位資產和信任議題,能不自幹安全的作業系統 (如 Trusty) 嗎?
車用電子又變得更複雜,簡單區分 [8] 為以下三類:
1. 電子控制單元(Electronic Control Unit, ECU)
車內各種不同的系統控制都需要仰賴 ECU,因此隨著系統複雜程度的提高,車內 ECU
的數量也逐漸攀升。目前雙 B 的高階車款,一台車上已有上百個 ECU。
2. 微控制器(microcontroller, MCU)
MCU 應用最多在消費性電子商品上,第二大就在汽車電子。簡易的功能系統,如車內
空調、車窗,後照鏡等,可使用成本較低的 8-bit MCU;對 MCU 的運算處理能力要求
較高的煞車、安全氣囊、車身穩定控制,使用 16-bit MCU;朝智慧化邁進的同時,
32/64-bit 處理器已躍上主流規格,如多媒體、娛樂、駕駛資訊等較高階的電子化
資訊系統皆多採用此規格。
3. 感測器
以建構駕駛輔助系統來說,使用影像感測器、毫米波雷達、雷射雷達、加速度感測器、
角速度感測器、車輪速度感測器,胎壓感測器等,而在眾多感測器中,影像感測器越
受重視。
針對 MCU 和資訊系統的升級,Automotive Grade Linux [9] 由 Linux Foundation 管理
和協調,AGL 創始成員包括 Jaguar Land Rover, Nissan, TOYOTA, DENSO, Fujitsu,
Harman, NVIDIA, Renesas, 三星和德州儀器,後來 Intel 公司也做了若干貢獻,甚至為
車用市場「自幹」另一套作業系統 ACRN [10],考量點就在於車用電子存在大量 ECU 和
MCU,裡頭早就執行著多款作業系統,但彼此間訊息傳遞和可靠性是相當棘手的議題,光
有 Linux 不足以滿足這些需求,於是 Intel 額外發展 ACRN 作為一款輕量級的
hypervisor 來隔離若干執行環境,當然 ACRN 本身就是貨真價實的作業系統。可參閱
ACRN 的文件: Introduction to Project ACRN [11]。
再者,現代戰爭中,無人飛行武器的重要性提高,像 seL4 [13] 這樣經過形式化驗證的
作業系統核心 (另一個自幹的經典!) 已是軟體驅動的嶄新軍事武器的關鍵技術。以下摘
自「無人機主宰未來戰場:亞美尼亞與亞塞拜然衝突給台灣的警示」[12]
* 位於高加索地區的亞美尼亞與亞塞拜然,近日因長期的領土紛爭,再度爆發武裝衝突,
戰事越演越烈
* 從衝突一開始,亞美尼亞與亞塞拜然就各自公布了一系列影片,展示他們的無人機成功
摧毀對方的防空系統。無論是由無人機自身所掛載的空對地飛彈進行獵殺,或引導友軍
單位發動攻擊,都可以看到地面防空系統幾乎毫無招架之力。
* 亞美尼亞與亞塞拜然都不是傳統的軍事強國,兩國部隊的裝備也談不上先進,但無人機
卻讓這兩國擁有令人訝異的精確打擊能力,使傳統地面作戰武器居於絕對的弱勢,展現
發展不對稱戰力的成果。
澳大利亞的 Data61 (前身為 NICTA,是開發 seL4 的研究機構) 獲得美國國防部 Defense
Advanced Research Projects Agency (DARPA) 的資助,將高可靠、安全的 seL4 應用在
飛行載具中。具體的應用情境已公佈,對於波音公司出品的 MH-6 Little Bird 直昇機和
它的攻擊型本 AH-6,是美國陸軍用於特種作戰的單引擎輕型直昇機,隨著作戰計畫的
複雜化,美國軍方正視網路攻擊的嚴酷挑戰,因此採納 seL4 這個號稱數學上證明過的
"Unhackable Kernel",目前 seL4 用於 High-Assurance Cyber Military Systems
(HACMS) 中,已完成測試。
(video) https://www.facebook.com/watch/?v=1167433693271186
seL4 受到 DARPA 贊助並已用於波音公司開發的 Unmanned Little Bird (ULB) 戰鬥
直升機,這份 2015 年的短片展示建構在 eChronos RTOS 和 seL4 的高度安全飛行控制
系統,Mission board 由 ARM Cortex-A15 硬體組成,執行 seL4 + 虛擬化的 Linux,
而 Flight controller 由 ARM Cortex-M4F 硬體組成,運作 eChronos RTOS。
seL4 是微核心領域最前瞻的研究和實作 (用於高度自動化的軍火設備,像是能遠距射擊
的無人機),其主持人 Gernot Heiser 教授在 FOSDEM 2020 發表演說 [14],主題是
seL4 在 RISC-V 架構的支援。
雲端服務公司如 Google, Microsoft, Amazon 都有對應的「自幹」作業系統計畫,也有
實際應用的案例,大多圍繞在虛擬化和高度安全隔離。下次有類似主題我再分享。
不管是物聯網,還是雲端運算,我們都可以看出一個顯然的事實,唯有更高附加價值並
透過作業系統提昇規模、深度、廣度,還有彈性,才有機會創造正向循環。「自幹」作業
系統是個重要的工程訓練,當你著眼於「有飯吃」以外的各項關鍵領域之際。
王佑中博士說過:
「寫一個 OS 是多麼美好的事,在有限的生命中千萬不要遺漏了它。」
這件事我做了二十餘年,有幸寫了幾套拿來賣錢的作業系統,也透過 GitHub 發布幾款
自娛娛人的作業系統專案 (在學校教書的好處,可以引導學生當小白鼠)。至今我仍在
探索,歡迎大家一起學習 Linux 和各式作業系統,請參見線上課程:
* Linux 核心設計: http://wiki.csie.ncku.edu.tw/linux/schedule
* 進階電腦系統理論與實作: http://wiki.csie.ncku.edu.tw/sysprog/schedule
* 你所不知道的 C 語言: https://hackmd.io/@sysprog/c-programming
* GNU/Linux 開發工具: https://hackmd.io/@sysprog/gnu-linux-dev
* 淺談 Microkernel 設計和真實世界中的應用
https://hackmd.io/@sysprog/microkernel-design
[1] AOSP: https://source.android.com/
[2] Trusty TEE: https://source.android.com/security/trusty
[3] rootkit: https://en.wikipedia.org/wiki/Rootkit
[4] DRM: https://en.wikipedia.org/wiki/Digital_rights_management
[5] TEE: https://en.wikipedia.org/wiki/Trusted_execution_environment
[6] OP-TEE Virtualization: https://optee.readthedocs.io/en/latest/architecture/virtualization.html
[7] Trusted Firmware-A: https://github.com/ARM-software/arm-trusted-firmware
[8] 部份摘自「車用半導體關鍵元件:了解ECU、MCU及感測器是什麼」一文,來源
https://www.stockfeel.com.tw/
[9] Automotive Grade Linux: https://www.automotivelinux.org/
[10] ACRN: https://projectacrn.org/
[11] Introduction to Project ACRN:
https://projectacrn.github.io/latest/introduction/
[12] 無人機主宰未來戰場:亞美尼亞與亞塞拜然衝突給台灣的警示:
https://opinion.udn.com/opinion/story/120873/4950022
[13] seL4: https://sel4.systems/
[14] FOSDEM 2020 + seL4:
https://www.phoronix.com/scan.php?page=news_item&px=seL4-Coming-To-RISC-V
連結內容有對應的簡報檔案及錄影
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.245.162 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1604909290.A.11A.html
推
11/09 16:08,
3年前
, 1F
11/09 16:08, 1F
推
11/09 16:08,
3年前
, 2F
11/09 16:08, 2F
推
11/09 16:09,
3年前
, 3F
11/09 16:09, 3F
推
11/09 16:09,
3年前
, 4F
11/09 16:09, 4F
推
11/09 16:10,
3年前
, 5F
11/09 16:10, 5F
推
11/09 16:10,
3年前
, 6F
11/09 16:10, 6F
推
11/09 16:12,
3年前
, 7F
11/09 16:12, 7F
推
11/09 16:13,
3年前
, 8F
11/09 16:13, 8F
推
11/09 16:14,
3年前
, 9F
11/09 16:14, 9F
推
11/09 16:14,
3年前
, 10F
11/09 16:14, 10F
推
11/09 16:15,
3年前
, 11F
11/09 16:15, 11F
推
11/09 16:15,
3年前
, 12F
11/09 16:15, 12F
→
11/09 16:15,
3年前
, 13F
11/09 16:15, 13F
推
11/09 16:16,
3年前
, 14F
11/09 16:16, 14F
推
11/09 16:16,
3年前
, 15F
11/09 16:16, 15F
推
11/09 16:16,
3年前
, 16F
11/09 16:16, 16F
推
11/09 16:17,
3年前
, 17F
11/09 16:17, 17F
→
11/09 16:17,
3年前
, 18F
11/09 16:17, 18F
→
11/09 16:18,
3年前
, 19F
11/09 16:18, 19F
→
11/09 16:18,
3年前
, 20F
11/09 16:18, 20F
推
11/09 16:19,
3年前
, 21F
11/09 16:19, 21F
推
11/09 16:19,
3年前
, 22F
11/09 16:19, 22F
推
11/09 16:19,
3年前
, 23F
11/09 16:19, 23F
推
11/09 16:19,
3年前
, 24F
11/09 16:19, 24F
推
11/09 16:19,
3年前
, 25F
11/09 16:19, 25F
推
11/09 16:19,
3年前
, 26F
11/09 16:19, 26F
推
11/09 16:20,
3年前
, 27F
11/09 16:20, 27F
推
11/09 16:20,
3年前
, 28F
11/09 16:20, 28F
→
11/09 16:20,
3年前
, 29F
11/09 16:20, 29F
推
11/09 16:20,
3年前
, 30F
11/09 16:20, 30F
推
11/09 16:21,
3年前
, 31F
11/09 16:21, 31F
→
11/09 16:21,
3年前
, 32F
11/09 16:21, 32F
推
11/09 16:21,
3年前
, 33F
11/09 16:21, 33F
推
11/09 16:22,
3年前
, 34F
11/09 16:22, 34F
推
11/09 16:22,
3年前
, 35F
11/09 16:22, 35F
→
11/09 16:23,
3年前
, 36F
11/09 16:23, 36F
推
11/09 16:24,
3年前
, 37F
11/09 16:24, 37F
推
11/09 16:24,
3年前
, 38F
11/09 16:24, 38F
推
11/09 16:24,
3年前
, 39F
11/09 16:24, 39F
還有 376 則推文
還有 1 段內文
推
11/09 23:59,
3年前
, 416F
11/09 23:59, 416F
推
11/10 00:05,
3年前
, 417F
11/10 00:05, 417F
推
11/10 00:08,
3年前
, 418F
11/10 00:08, 418F
推
11/10 00:13,
3年前
, 419F
11/10 00:13, 419F
推
11/10 00:23,
3年前
, 420F
11/10 00:23, 420F
推
11/10 00:23,
3年前
, 421F
11/10 00:23, 421F
推
11/10 00:27,
3年前
, 422F
11/10 00:27, 422F
推
11/10 00:58,
3年前
, 423F
11/10 00:58, 423F
推
11/10 01:08,
3年前
, 424F
11/10 01:08, 424F
推
11/10 01:09,
3年前
, 425F
11/10 01:09, 425F
推
11/10 01:30,
3年前
, 426F
11/10 01:30, 426F
→
11/10 02:34,
3年前
, 427F
11/10 02:34, 427F
推
11/10 03:10,
3年前
, 428F
11/10 03:10, 428F
推
11/10 03:19,
3年前
, 429F
11/10 03:19, 429F
推
11/10 03:23,
3年前
, 430F
11/10 03:23, 430F
推
11/10 04:06,
3年前
, 431F
11/10 04:06, 431F
推
11/10 04:41,
3年前
, 432F
11/10 04:41, 432F
推
11/10 05:33,
3年前
, 433F
11/10 05:33, 433F
推
11/10 05:53,
3年前
, 434F
11/10 05:53, 434F
推
11/10 05:56,
3年前
, 435F
11/10 05:56, 435F
推
11/10 07:04,
3年前
, 436F
11/10 07:04, 436F
推
11/10 07:04,
3年前
, 437F
11/10 07:04, 437F
推
11/10 07:29,
3年前
, 438F
11/10 07:29, 438F
推
11/10 08:06,
3年前
, 439F
11/10 08:06, 439F
推
11/10 08:35,
3年前
, 440F
11/10 08:35, 440F
推
11/10 08:45,
3年前
, 441F
11/10 08:45, 441F
推
11/10 08:57,
3年前
, 442F
11/10 08:57, 442F
→
11/10 09:07,
3年前
, 443F
11/10 09:07, 443F
推
11/10 09:21,
3年前
, 444F
11/10 09:21, 444F
推
11/10 09:54,
3年前
, 445F
11/10 09:54, 445F
推
11/10 10:47,
3年前
, 446F
11/10 10:47, 446F
推
11/10 11:39,
3年前
, 447F
11/10 11:39, 447F
→
11/10 11:40,
3年前
, 448F
11/10 11:40, 448F
推
11/10 11:51,
3年前
, 449F
11/10 11:51, 449F
推
11/10 12:13,
3年前
, 450F
11/10 12:13, 450F
推
11/10 12:21,
3年前
, 451F
11/10 12:21, 451F
推
11/10 12:50,
3年前
, 452F
11/10 12:50, 452F
推
11/10 13:57,
3年前
, 453F
11/10 13:57, 453F
推
11/10 14:06,
3年前
, 454F
11/10 14:06, 454F
推
11/11 02:28,
3年前
, 455F
11/11 02:28, 455F
討論串 (同標題文章)