看板 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
推 windmk2: 跟我想得完全一樣111F 11/09 17:04
推 HBK21: 優文113F 11/09 17:04
推 RLH: 看到第二段就神遊了116F 11/09 17:06
推 jetalpha: 推,原來現在自用車的數位化程度這麼高了啊……131F 11/09 17:13
推 lin821: 強者被釣出來了133F 11/09 17:14
推 xhung: 朝聖推 本人回應 XD138F 11/09 17:18
→ youdar: 完全看不懂 但先推139F 11/09 17:18
推 badface: 先推不然人家以為我看不懂XD143F 11/09 17:23
推 shiwa: 看不懂推個147F 11/09 17:25
推 Kokoro: 八卦清流149F 11/09 17:27
推 llgod: 原來是在說天網152F 11/09 17:30
推 bikevts: 嗯,跟我想的有點不一樣,推156F 11/09 17:32
推 etvalen: 先推,下輩子再弄懂157F 11/09 17:32
推 fidniey: 趕快推 不然會被別人發現我看不懂160F 11/09 17:34
推 y30048: 三類也看不懂啦163F 11/09 17:35
→ jserv: @wei115, 擴充 eBPF,這樣編譯器、虛擬機器和作業系統164F 11/09 17:35
推 clause: 推 可是我看不懂165F 11/09 17:35
→ jserv: 三個願望一次滿足166F 11/09 17:36
推 jump693: 神,推 教cs像在說故事170F 11/09 17:36
推 x21198: push ans pasa172F 11/09 17:40
推 raok: seL4的unhackable有點神 不知道是怎麼證明的173F 11/09 17:43
推 vbhero: 嗯嗯就是這樣175F 11/09 17:43
→ jserv: @llgod, 空軍服役時,我在花蓮佳山基地接觸到天網防空系統179F 11/09 17:46
推 alpe: 推181F 11/09 17:46
→ jserv: 天網系統作用是接收雷達陣地的訊號,技術手冊給我很多啟發感謝天網,讓我當兵時也能思考程式設計183F 11/09 17:47
推 abba123: 推老師,上過一學期的課收穫超多185F 11/09 17:47
推 mnop7: 先推187F 11/09 17:49
推 YOAOY: 漲知識,但看到一半就看不懂了QQ189F 11/09 17:49
推 lulocke: 全文都看完,但都沒好奇心點連結,我應該沒小白鼠潛力191F 11/09 17:50
※ 編輯: jserv (140.116.245.162 臺灣), 11/09/2020 17:56:33
推 bumloveme: 推 八卦版現在混進來一堆學店理組大概看不懂205F 11/09 18:01
推 guolong: 快推免得人家說我看不懂,阿就看不懂阿幹207F 11/09 18:02
推 atbb: 先推再說213F 11/09 18:06
推 ArNan: 推219F 11/09 18:10
推 Gnau: 感謝老師寫出已經儘量用讓猴子我看得懂的文章哈哈哈220F 11/09 18:10
推 BDUUU: 有神快拜!232F 11/09 18:19
推 xo1100: 誰又亂召喚神啦233F 11/09 18:20
推 ccinptt: 嗯嗯,是的,跟我想的一樣,只是大神先幫我打出來了,無235F 11/09 18:22
推 v9290026: 乾…看完崩潰…我真的會寫程式嗎239F 11/09 18:24
推 fd90312: 跪著看完,我真是虧對我的文憑242F 11/09 18:24
推 nchueric: 無誤,跟我想得差不多,推。250F 11/09 18:34
推 Acce0912: 嗯嗯 跟我想得很接近了 推推253F 11/09 18:39
推 pcly: 有神快拜254F 11/09 18:39
推 a56r3203: 只要我看不懂 然後一堆專有名詞的我就推爆259F 11/09 18:41
推 wulouise: tldr:安全性跟使用性值得獨立做一套os的domain,幹260F 11/09 18:42
推 HD19: 遇到神只能推了261F 11/09 18:42
推 i9100: 好像近20年前買過一本,忘了是什麼書了268F 11/09 18:45
推 wangs90: 下課了還在上作業系統274F 11/09 18:52
推 Aradin: 有神快拜275F 11/09 18:52
推 lercon: 先推 不然別人以為我看不懂278F 11/09 18:55
→ linja: 真的超神283F 11/09 18:59
推 mdkn35: 有神快拜285F 11/09 19:00
推 eric112: 請問一下為什麼android和IOS比起來像垃圾,為什麼安卓的記憶體管理那麼差而且用一段時間後就會累積一堆垃圾,然後作業系統會變得卡卡的。286F 11/09 19:03
推 TOCIBS: 嗯 跟我想的一樣293F 11/09 19:07
推 basterds: 自幹派一定是Kobe球迷304F 11/09 19:23
推 goldie: 有神快拜314F 11/09 19:31
推 Tomince: 可以給我們鄉民一點面子嗎319F 11/09 19:38
推 SWS7983: 嗯嗯跟我想的一樣321F 11/09 19:40
推 zyvupu: 啥時幫中研院搞個新的飛彈控制啊325F 11/09 19:43
推 frakw: 推327F 11/09 19:46
推 odddriver: 老師您認為目前哪個領域,自幹最有商機呢328F 11/09 19:48
推 ZAXUS: 嗚嗚噫啊嗚329F 11/09 19:49
推 ATND: 有神332F 11/09 19:51
→ Orzleader: 中文和英文分開來看我都認識,怎麼合在一起就跟陌生人一樣338F 11/09 19:57
推 tracyo: 這是論文吧340F 11/09 19:59
→ jserv: @Orzleader, 這時你該問蕭亞軒 (最熟悉的陌生人)342F 11/09 19:59
→ jserv: @zyvupu, 之前我做過中科院的委託研究案,不過 (消音)
可以講的研究案題目是「行動雲端下之系統安全分析與實作」@eric112, Android應用程式的開發者要負大的責任
@tracyo, 我文組的,寫論文的人,簡稱355F 11/09 20:21
→ jserv: @Kayusumi, 我認識現在老婆跟自幹作業系統有點關係
不過這種八卦大概沒啥意思 :Q
我用雙手證明搞自由軟體可以有飯吃,寫C程式可以摸到?罩杯364F 11/09 20:37
推 Xliao: 先推一個 免得被人笑文組看不懂368F 11/09 20:39
→ jserv: @Archier: 「只要你懂作業系統」後面可接「當電腦的主人」369F 11/09 20:40
推 ps0grst: 到南部唸書工作寫幾年程式,年初被資遣至今失業,在想是否回北部。老師願意在南部耕耘真是可貴,可惜無緣拜見377F 11/09 20:58
→ ps0grst: 資管畢業工作只懂CRUD,稍微摸點物件導向混飯吃是夠,可是持續混飯吃總不是辦法QQ
希望能參加南部開源社群長一下見識380F 11/09 21:00
推 CL63: 沒錯,就是這樣383F 11/09 21:02
推 jhunter: 再等一下 我快懂了384F 11/09 21:03
推 lbjstar: 我的中文看來學得不好....385F 11/09 21:08
推 sxbear: 大推自幹王386F 11/09 21:09
推 not741: (>_<)403F 11/09 22:36
推 dryabi: 請收下我的膝蓋406F 11/09 22:59
推 fundme: 了無新意 我早就知道了409F 11/09 23:20
推 sanpf: 不明覺厲410F 11/09 23:23
推 pr9558: 歐歐歐又是你!413F 11/09 23:33
推 eknbz: 看ID就先推了 感謝分享教學416F 11/09 23:59
推 Kylol: 推421F 11/10 00:23
推 pjason: j真滴強 推423F 11/10 00:58
推 tlu3: 媽,我在這裡424F 11/10 01:08
推 s207072s: 推 我真的看的懂...真的辣425F 11/10 01:09
推 yunyhi: 請收下我的膝蓋430F 11/10 03:23
推 SansWord: 收下我的膝蓋.....不對啊早就給你了431F 11/10 04:06
→ adsl9527: jserv作業好多啊哈哈哈哈嗚嗚嗚嗚嗚嗚嗚443F 11/10 09:07
推 razan: 寫C程式可以摸到?罩杯 wow~446F 11/10 10:47
--