Linux 核心設計: 建構 User-Mode Linux 的實驗環境 === :::warning 注意!這是上課筆記 ::: :::info 原始課程在這裡 - [影片](https://www.youtube.com/watch?v=ivqO-yCgk2o) - [講義](https://hackmd.io/@sysprog/user-mode-linux-env) Original by [jserv](http://wiki.csie.ncku.edu.tw/User/jserv) ::: --- | Section | Time| Description | | -------- | -------- | -------- | | 1 | [00:00:06](https://youtu.be/ivqO-yCgk2o?si=8g9HtAlCOOHBvnTS&t=6) | 1. Linux 兩個重要的虛擬化技術:User-Mode Linux (UML) and KVM.<br>2. x86 虛擬化<br>3. 把linux 變成一般的應用程式。<br>4. UML 雖然比較慢,但利於學習和追蹤 linux kernel。<br>5. demo | | 2 | [00:17:58](https://youtu.be/ivqO-yCgk2o?si=aKBviKpIQSZgG9Iv&t=1078) | 1. KUnit 使用 UML 技術來做測試.<br>2. AOSP.<br>3. MPEG LA.<br>4. Kernel Networking Unit Tests | | 3 | [00:28:40](https://youtu.be/ivqO-yCgk2o?si=xcPDykice8JnRcq2&t=1720) | 1. Para-virtualization 是修改 guest OS 的技術。<br>2. UML 可以當作一種 sandbox<br>3. 2008 的 KVM 對於 linux 影響巨大。並且由 RedHat 接手開發。 | | 4 | [00:38:29](https://youtu.be/ivqO-yCgk2o?si=aNIF5OJMWLONn3DM&t=2309) | 1. UML 的歷史 : 2001 intel<br>2. 資訊科技的 文藝復興。<br>3. 1965 multics(單人單工單核心) / unics → unix and 1981 dos (多人多工多核心)<br>4. Virtual Lab with User Mode Linux | | 5 | [00:49:21](https://youtu.be/ivqO-yCgk2o?si=O9Ivcz5Dr4Itt9QH&t=2961) | 1. sysrq 讓 linux 當機 reset.<br>2. UML create virtual ethernet switch<br>3. High-Availability Cluster<br>4. Advanced testing with User Mode Linux.<br>5. 如何對於 linux kernel 作出貢獻。 | | 6 | [01:02:17](https://youtu.be/ivqO-yCgk2o?si=92WFcYPRLD2tBYEX&t=3737) | 1. arch<br>2. 計算行數 :cloc<br>3. early printk<br>4. PCAP : 追蹤網路封包 | | 7 | [01:14:42](https://youtu.be/ivqO-yCgk2o?si=Sb4Un2NaROaZlHVM&t=4482) | 1. Timetravel<br>2. 可以觀察 git change 了解技術。<br>3. ptrace, 讓 gdb 可以 trace UML 上面的程式。<br>4. side channel attack | | 8 | [01:29:25](https://youtu.be/ivqO-yCgk2o?si=YvfQXp6ANn6YNPYG&t=5365) | 1. page fault (invalid / minor / major)<br>2. SIGSEGV : segmentation fault, UML using signal when page fault.<br>3. LKL (linux kernel library) for reading bootloader.<br>4. Linux kernel 的開發者有90%是全職的。 | | 9 | [01:42:31](https://youtu.be/ivqO-yCgk2o?si=6MYx3gzS5B9BKzM_&t=6151) | 1. 設定核心組態<br>2. virtio : 存取 host filesystem / network<br>3. KVM zero copy | | 10 | [01:55:31](https://youtu.be/ivqO-yCgk2o?si=i7gMBczQ58cpfnrH&t=6931) | 1. rootfs, 雲端公司很常客製化。<br>2. rootfs 的設定。<br>3. busybox | | 11 | [02:05:56](https://youtu.be/ivqO-yCgk2o?si=7xeEwZI9_FPCgJDi&t=7556) | 1. proc : process 內容<br>2. multics → unix / plan 9 → linux<br>3. tun/tap : guest 存取 host 的 TCP/IP stack | | 12 | [02:17:28](https://youtu.be/ivqO-yCgk2o?si=ViWk-VKaulT7cEf0&t=8248) | 1. 客製化 UML 環境。<br>2. 準備核心模組。<br>3. 建立 hello world kernel module.<br>4. jiffies and HZ<br>5. unix 2038 問題。 | | 13 | [02:29:09](https://youtu.be/ivqO-yCgk2o?si=FMWk8jj4jWN1vHcJ&t=8949) | 1. sysfs<br>2. 改 linux 經驗談。<br>3. 使用 GDB 進行核心追蹤和分析。(與 python 整合) | | 14 | [02:41:52](https://youtu.be/ivqO-yCgk2o?si=8z73ww_iqNQwl66m&t=9712) | 1. 紅黑樹<br>2. SIGUSR1 可以讓 linux 停下來。<br>3. linux kernel 停下來後,使用 gdb 窺探kernel 資訊。 |