看板 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
「你所不知道的 C 語言」系列講座 - HackMD
[圖]
# 「[你所不知道的 C 語言]( 副標題: ==深度學習 C 語言== 回歸第一手資料,透過反思 C 語言程式設 ...

 
* GNU/Linux 開發工具: https://hackmd.io/@sysprog/gnu-linux-dev
GNU/Linux 開發工具 - HackMD
[圖]
本共筆整理在 GNU/Linux 開發程式的資訊 ...

 
* 淺談 Microkernel 設計和真實世界中的應用
  https://hackmd.io/@sysprog/microkernel-design
淺談 Microkernel 設計和真實世界中的應用 - HackMD
[圖]
# 淺談 Microkernel 設計和真實世界中的應用 :::info 本系列講座全名為 Operating System Concepts And Renaissance [作業系統概念和文藝復興 ...

 

[1] AOSP: https://source.android.com/
Android Open Source Project
Android unites the world! Use the open source Android operating system to power your device. ...

 
[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
GitHub - ARM-software/arm-trusted-firmware: Read-only mirror of Trusted Firmware-A
[圖]
Read-only mirror of Trusted Firmware-A. Contribute to ARM-software/arm-trusted-firmware development by creating an account on GitHub. ...

 
[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
seL4 Microkernel Being Ported To RISC-V - Phoronix
Phoronix is the leading technology website for Linux hardware reviews, open-source news, Linux benchmarks, open-source benchmarks, and computer hardwa ...

 
     連結內容有對應的簡報檔案及錄影

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.245.162 (臺灣)
※ 文章代碼(AID): #1VgFZg4Q (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1604909290.A.11A.html
nekoares: 推1F 11/09 16:08
s505015: 推2F 11/09 16:08
HJC6666: 先推3F 11/09 16:09
Usayhiisayha: 推4F 11/09 16:09
brabra: 推5F 11/09 16:10
calvin0330: 推6F 11/09 16:10
abs999: 推7F 11/09 16:12
qk3380888: 優質8F 11/09 16:13
spirit119: 先跪了9F 11/09 16:14
rul284dl: 看不懂,先推10F 11/09 16:14
ad0101: 推11F 11/09 16:15
r5e97nk63: 可以自幹無人種菜OS嗎,這樣就能在家確保糧食,不用領薪水了= =12F 11/09 16:15
loungebar: 推14F 11/09 16:16
ffdqfe: 只要看不懂的,我就推15F 11/09 16:16
andy878797: 推16F 11/09 16:16
TrevorStory: 強啊17F 11/09 16:17
AlianF: 推一下免得以為不懂18F 11/09 16:17
jserv: @r5e97nk63, 七年前有人委託我開發水耕蔬菜的控制系統
可惜規模做不大,無法讓我吃飽 (嘆)19F 11/09 16:18
dululu: 恩恩  跟我想的一樣21F 11/09 16:19
windydancer: 跪了22F 11/09 16:19
fg008kimo: 推 好文23F 11/09 16:19
menshuei: 看了一下,我寧可被資本主義所奴役。24F 11/09 16:19
forsakesheep: 推,可是我看不懂25F 11/09 16:19
SuperUnison: 推推推26F 11/09 16:19
ogisun: 看到ID先推27F 11/09 16:20
liulen: 真有道理28F 11/09 16:20
TatsuyaShiba: 推29F 11/09 16:20
sylphis00522: 好文 清流 滿滿的知識量30F 11/09 16:20
summerleaves: 推老師31F 11/09 16:21
dave123: 唉,澳洲那幾個職缺都要公民身份才能申請...32F 11/09 16:21
joywo: 快推 不然人家以為我們看不懂!33F 11/09 16:21
zxcv070801: 推 不然別人以為我看不懂34F 11/09 16:22
hahahank: 可以講猴子也聽的懂的版本嗎35F 11/09 16:22
jserv: @hahahank, 我傾向讓猴子變聰明,歡迎參考線上課程36F 11/09 16:23
andy188: 推37F 11/09 16:24
felix1017: 有神快拜38F 11/09 16:24
billy4195: 朝聖啦  推39F 11/09 16:24
ku399999: 推推
喔不對 是吱吱40F 11/09 16:25
fcuspy: 嗯嗯嗯,跟我想的一樣42F 11/09 16:25
kimgordon: 炫技XD43F 11/09 16:25
tiger870316: 看不懂44F 11/09 16:25
hercheles: 只能推了45F 11/09 16:26
kokunmai:46F 11/09 16:26
clark3530: 老師你害我好慘47F 11/09 16:27
r025876: 我假理組看不懂48F 11/09 16:27
malindorothy: 先推49F 11/09 16:27
wei115: 真的很後悔當初專題沒有自幹作業系統 感覺比編譯器好玩多50F 11/09 16:27
LBJKOBE5566: 超強51F 11/09 16:27
peter0825: 有神快推52F 11/09 16:27
appleseed: 真的看不懂啊QQ 這就是差距嗎?53F 11/09 16:28
wei115: 惹QQ54F 11/09 16:28
poem5566: 還不推爆55F 11/09 16:28
sameber520: 推56F 11/09 16:29
LIONDODO: 推57F 11/09 16:29
oeoele: 推58F 11/09 16:29
v7q4: 嗯!跟我的想法差不多!! 給個推~~59F 11/09 16:29
jesus255221: 推!修過老師的進階電腦系統理論與實做超充實60F 11/09 16:30
wcmwcm: 推,看不懂61F 11/09 16:30
Xpwa563704ju: 先推,不然別人以為我看不懂62F 11/09 16:30
tomroy: 先推再說!63F 11/09 16:31
ekin1983: 推 有神快拜64F 11/09 16:32
bbo6uis122: 推65F 11/09 16:32
god890529: 推專業66F 11/09 16:32
aegis91086: 推67F 11/09 16:33
keyman2: 看不懂 我就爛 阿嬤 我不想努力惹68F 11/09 16:34
mmchen: 推69F 11/09 16:34
e12518166339: 保重身體啊老師XD70F 11/09 16:34
asdfjoe: 推71F 11/09 16:34
LierX: 推72F 11/09 16:35
legendmtg: <(_ _)>73F 11/09 16:35
Barrel: ㄟ幹 看不懂啦74F 11/09 16:35
bbcer: 優質好文,趕快推爆75F 11/09 16:35
ce270651: 神人76F 11/09 16:36
mickey94378: 推推假裝看得懂77F 11/09 16:36
doraBBO: 我也是這麼覺得78F 11/09 16:37
Archier: 只要你懂作業系統,作業系統就會幫你!79F 11/09 16:37
cliff55720: OS大神80F 11/09 16:40
kenny60710: 推81F 11/09 16:40
Mozar: 推專業好文82F 11/09 16:42
toshii: 有點厲害83F 11/09 16:44
Totti: 可以說ㄧ些文組聽的懂的好嗎?84F 11/09 16:45
HHH555JJJ: 我也要建議我們老師出一個自幹作業QQ85F 11/09 16:45
henry1915: 現在回台大上課還來的及嗎86F 11/09 16:45
intointo: @@87F 11/09 16:46
ttff: 跪了88F 11/09 16:49
anper: 快推不然被說看不懂89F 11/09 16:50
goodfuture: 推90F 11/09 16:53
imba8591: 推91F 11/09 16:54
lpoijk: 老濕你太認真了92F 11/09 16:54
cloudin: 推93F 11/09 16:55
sathyathen: 嗯嗯我也這樣覺得94F 11/09 16:55
ck0987515477: 推但我文組95F 11/09 16:55
cloki: 推 可惜對很多人來說吃飯更重要96F 11/09 16:55
rex44391: 推 大神97F 11/09 16:56
saxontai: 趕快推,以免被發現我不懂。98F 11/09 16:56
kotorichan: 推99F 11/09 16:56
teasheep: 推442F 11/10 08:57
adsl9527: jserv作業好多啊哈哈哈哈嗚嗚嗚嗚嗚嗚嗚443F 11/10 09:07
abb123456: 推444F 11/10 09:21
SmallHanley: 推 免得讓人以為我看不懂445F 11/10 09:54
razan: 寫C程式可以摸到?罩杯 wow~446F 11/10 10:47

--
--
(jserv.): Re: [問卦] 第一次自幹作業系統核心就上手 - Gossiping板