看板 Gossiping作者 jserv (松鼠)標題 Re: [問卦] 第一次自幹作業系統核心就上手時間 Mon Nov 9 16:07:57 2020
※ 引述《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/
StockFeel 股感
StockFeel是以普惠金融為核心的財經平台,全新上線筆記影音,透過影音介紹民生熱議與投資理財知識。股感透過資訊設計讓用戶產生興趣,透過客製化學習系統引導用戶啟動投資旅程,下個階段我們將透過Fintech互動體驗輔助投資者進行交易決策,朝「實現互聯網金融場域」目標前進。 ...
[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 (臺灣)
※ 文章代碼(AID): #1VgFZg4Q (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1604909290.A.11A.html
推 r5e97nk63: 可以自幹無人種菜OS嗎,這樣就能在家確保糧食,不用領薪水了= =12F 11/09 16:15
推 ffdqfe: 只要看不懂的,我就推15F 11/09 16:16
→ AlianF: 推一下免得以為不懂18F 11/09 16:17
→ jserv: @r5e97nk63, 七年前有人委託我開發水耕蔬菜的控制系統
可惜規模做不大,無法讓我吃飽 (嘆)19F 11/09 16:18
推 dululu: 恩恩 跟我想的一樣21F 11/09 16:19
推 menshuei: 看了一下,我寧可被資本主義所奴役。24F 11/09 16:19
推 ogisun: 看到ID先推27F 11/09 16:20
→ dave123: 唉,澳洲那幾個職缺都要公民身份才能申請...32F 11/09 16:21
推 joywo: 快推 不然人家以為我們看不懂!33F 11/09 16:21
推 hahahank: 可以講猴子也聽的懂的版本嗎35F 11/09 16:22
→ jserv: @hahahank, 我傾向讓猴子變聰明,歡迎參考線上課程36F 11/09 16:23
推 fcuspy: 嗯嗯嗯,跟我想的一樣42F 11/09 16:25
推 wei115: 真的很後悔當初專題沒有自幹作業系統 感覺比編譯器好玩多50F 11/09 16:27
推 v7q4: 嗯!跟我的想法差不多!! 給個推~~59F 11/09 16:29
推 wcmwcm: 推,看不懂61F 11/09 16:30
推 tomroy: 先推再說!63F 11/09 16:31
推 keyman2: 看不懂 我就爛 阿嬤 我不想努力惹68F 11/09 16:34
推 LierX: 推72F 11/09 16:35
推 Barrel: ㄟ幹 看不懂啦74F 11/09 16:35
推 bbcer: 優質好文,趕快推爆75F 11/09 16:35
推 Archier: 只要你懂作業系統,作業系統就會幫你!79F 11/09 16:37
推 Mozar: 推專業好文82F 11/09 16:42
推 Totti: 可以說ㄧ些文組聽的懂的好嗎?84F 11/09 16:45
推 HHH555JJJ: 我也要建議我們老師出一個自幹作業QQ85F 11/09 16:45
推 ttff: 跪了88F 11/09 16:49
推 anper: 快推不然被說看不懂89F 11/09 16:50
推 lpoijk: 老濕你太認真了92F 11/09 16:54
推 cloki: 推 可惜對很多人來說吃飯更重要96F 11/09 16:55
推 saxontai: 趕快推,以免被發現我不懂。98F 11/09 16:56
→ adsl9527: jserv作業好多啊哈哈哈哈嗚嗚嗚嗚嗚嗚嗚443F 11/10 09:07
推 razan: 寫C程式可以摸到?罩杯 wow~446F 11/10 10:47
--