--- title: Linux 讀書會大綱 - 從零開始的開源地下城 tags: Linux, Linux讀書會, Kernel, 從零開始的開源地下城, COMBO-tw description: 介紹與Linux Kernel相關基本知識 lang: zh-Hant GA: G-2QY5YFX2BV --- # Linux 讀書會大綱 ###### tags: `Linux` ## 目錄 [TOC] ## 環境建置 * [Docker](https://hub.docker.com/r/tommychap/raspberrypi) * QEMU 2.12.0 (For Raspberry Pi) * GDB 8.1 (For Raspberry Pi) * Toolchain (For ARM) * Git * Workspace * Make File * Linux kernel 4.14.50 * Autotest Shell * QEMU execution shell * [GitHub](https://github.com/combo-tw/LinuxBookClub/) * Linux kernel 4.14.50 * Test program * Mount Module * or etc. ## 環境規格 * Linux Kernel 4.14.50 * Raspberry Pi 3 ## 讀書會 Topic 1. Raspberry Pi Introduction (樹莓派介紹) * 介紹樹梅派 * 讀書會如何進行 * 如何除錯 * [使用 gdb+qemu 來執行/除錯 raspberry pi linux kernel ](https://descent-incoming.blogspot.com/2017/03/raspberry-pix86-linux-kernel-debug-by.html) 3. Bootstrap (開機載入) * 從插電到進系統 5. System Call (系統呼叫) * 如何用程式呼叫 System Call 7. Driver (驅動) * Block Device * Character Device * Ref: [LDD3](https://lwn.net/Kernel/LDD3/) 9. Interrupt (中斷) * 硬體中斷 * 軟體中斷 11. Process (行程) * Fork (子行程) * Clone (複製行程) * Communication (IPC-行程間通訊) 13. Thread (執行緒) * Pthread (POSIX) * Communication (Shared Memory) 15. Scheduler (排程) * [O(1)](https://en.wikipedia.org/wiki/O(1)_scheduler) (排程器) * CFS (完全公平排程器) 17. Synchronization (資料同步) * Spinlock * Mutex * Semaphore 18. Virtual Memory (虛擬記憶體) * Memory Map * Everything is file. 20. Input / Output (輸入輸出) * 鍵盤滑鼠 * Shell (ex. Bash) 21. File System (檔案系統) * Like Ext4 22. Window Manager (視窗管理) * Like i3 24. Desktop Evironment (桌面管理) * Plane * ex. dock * File Manager ## 讀書會規章 * 每個人要把自己的筆記 (心路歷程與實作方式說明) 打在 Hackmd,並將連結放置 GitHub 專案的 README 中 * 此讀書會為期一年,請==有恆心與毅力==將它完成,要對得起自己 * 有問題的話歡迎到 [Discord](https://discord.gg/Hz2YdvD) 群組來討論 ## 可參閱資源 * [LWN.net](https://lwn.net) * [鳥哥的 Linux 私房菜](http://linux.vbird.org) * [Linux Kernel Newbies](https://kernelnewbies.org) * [Linux Device Drivers, Third Edition](https://lwn.net/Kernel/LDD3/) * [Linux Kernel Development, Third Edition](https://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468/) * [Understanding the Linux Kernel, Third Edition](http://gauss.ececs.uc.edu/Courses/c4029/code/memory/understanding.pdf) * [Operating System Concepts, Ninth Edition](https://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/1118063333/) * [Linux設備驅動開發詳解:基於最新的Linux4.0 kernel](https://github.com/kevinwangkk/LDD4.0_note/blob/master/Linux%E8%AE%BE%E5%A4%87%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91%E8%AF%A6%E8%A7%A3%EF%BC%9A%E5%9F%BA%E4%BA%8E%E6%9C%80%E6%96%B0%E7%9A%84Linux4.0%E5%86%85%E6%A0%B8.pdf)