- 奔跑吧 Linux內核(入門篇)
- 張天飛
- 2199字
- 2021-02-08 16:43:03
前言
2017年9月《奔跑吧 Linux內核》一書出版后得到了廣大Linux從業人員和愛好者(特別是從事Linux相關產品開發的工程師)的好評,也有不少高校采用該書作為研究生的Linux內核課程的參考書目。《奔跑吧 Linux內核》以實際工程中的問題為導向來分析Linux內核,很多讀者認為它不太適合 Linux 初學者。因此,我重新編寫了一本適合 Linux 初學者學習Linux內核的入門教程。
2018年,中興事件讓芯片技術和操作系統變得火熱起來,越來越多的人關注操作系統等基礎學科。特別是Linux內核開源項目,已經成為操作系統研究和使用的典范。很多讀者反映在看完《鳥哥的Linux私房菜》一書后已經能夠熟練使用Linux系統,但是對Linux內核以及更深層次的技術問題仍一頭霧水。《奔跑吧 Linux內核入門篇》希望能幫助已經熟悉Linux系統使用的讀者深入學習Linux內核。
本書特色
循序漸進地講述Linux內核入門知識。
Linux內核龐大而復雜,任何一本厚厚的Linux內核書都可能會讓人看得昏昏欲睡。因此,對于初學者來說,Linux內核的入門需要循序漸進,一步一個腳印。初學者可以從如何編譯Linux內核開始入門,學習如何調試Linux內核,動手編寫一個簡單的內核模塊,逐步深入Linux內核的核心模塊中。
為了降低讀者的學習難度,本書不會分析Linux內核的源代碼,要深入理解Linux內核源代碼的實現,可以參考《奔跑吧 Linux內核》。
突出動手實驗。
對于初學者,理解操作系統最好的辦法之一就是動手實驗。因此,本書在每章中都設置了幾個經典的實驗,讀者可以在學習基礎知識后通過實驗來加深理解。本書所有的實驗都可以在優麒麟Linux 18.04系統中完成。
反映Linux內核社區新發展。
除了介紹Linux內核的基本理論之外,本書還介紹了當前Linux社區中新的開發工具和社區運作方式,比如如何使用Vim 8閱讀Linux內核代碼、如何使用git工具進行社區開發、如何參與社區開發等。
結合QEMU調試環境講述,并給出大量內核調試技巧。
在學習Linux內核時,大多數人都希望有一個功能全面且好用的圖形化界面來單步調試內核。本書會介紹一種單步調試內核的方法,即 Eclipse+QEMU+GDB。另外,本書提供首個采用“-O0”編譯和調試Linux內核的實驗,可以解決調試時出現的光標亂跳和<optimized out>等問題。本書也會介紹實際工程中很實用的內核調試技巧,例如 ftrace、systemtap、內存檢測、死鎖檢測、動態打印技術等,這些都可以在QEMU+ ARM Linux的模擬環境下做實驗。
配備豐富的電子教案和視頻資源。
本書會在出版之后陸續提供配套的電子教案,并錄制相應的配套教學視頻,請關注異步社區官網和微信公眾號。
本書主要內容
Linux內核涉及的內容包羅萬象,但本書的重點是Linux內核入門和實踐。
本書共有12章。
第1章介紹什么是Linux系統,以及常用的Linux發行版。接著介紹宏內核和微內核之間的區別,以及如何學習 Linux 內核等內容。該章還包括如何安裝 Linux 系統,如何編譯 Linux內核等實驗。
第2章介紹GCC工具、Linux內核常用的C語言技巧、Linux內核常用的數據結構、Vim工具以及git工具等內容。
第3章主要講述內核配置和編譯的技巧,實驗包括使用QEMU來編譯和調試ARM的Linux內核。
第4章主要從一個簡單的內核模塊入手,講述Linux內核模塊的編寫方法,實驗圍繞Linux內核模塊展開。
第5章從如何編寫一個簡單的字符設備開始入手,介紹字符設備驅動的編寫。
第6章主要包括系統調用的基本概念,實驗是添加新的系統調用。
第7章包括從硬件角度看內存管理、從軟件角度看內存管理、物理內存管理、虛擬內存管理、缺頁異常、內存短缺等內容,并包含多個與內存管理相關的實驗。
第8章主要包括進程概述、進程的創建和終止、進程調度以及多核調度等內容。
第 9 章包括原子操作和內存屏障、自旋鎖機制、信號量、讀寫鎖、RCU、等待隊列等內容。
第10章包括Linux內核中斷管理機制、軟中斷和tasklet機制、工作隊列機制等內容。
第11章包括printk、proc和debugfs、ftrace、分析oops錯誤、perf性能分析工具、內存檢測、kdump工具以及性能測試工具等內容,并包括調試和性能優化方面的18個實驗。
第12章包括開源社區介紹,如何參與開源社區、提交補丁、在Gitee中創建和管理開源項目等內容。
本書主要的實驗平臺是 QEMU 模擬器,這是另一個熱門的開源項目,主要用于處理器的仿真和虛擬化。
本書使用的內核版本是Linux 4.0。另外,為了方便調試內核,作者增加了可以使用“-O0”方式編譯的內核,該內核已經上傳到碼云(Gitee)平臺上。下載代碼命令如下:
#git clone https://gitee.com/benshushu/runninglinuxkernel_4.0.git
#git checkout rlk_basic
本書配套實驗的參考代碼在rlk_lab/rlk_basic目錄下。
由于作者知識水平有限,書中難免存在紕漏,敬請各位讀者批評指正。作者郵箱:runninglinuxkernel@126.com。新浪微博:@奔跑吧Linux內核。讀者也可以掃描下方的二維碼,到作者的微信公眾號中交流。

致謝
感謝國防科技大學優麒麟社區提供了優麒麟Linux發行版供本書實驗所用,感謝優麒麟社區的余杰老師提供的具有建設性的教學意見。
感謝國防科技大學的廖湘科院士在百忙之中對本書編寫和出版工作的關注,并為本書作序。廖院士是高性能計算機和操作系統領域的科學巨匠,感激他在繁重的工作之余仍常常關心開源軟件的發展以及年輕一代程序員的成長。
本書的編寫和出版要特別感謝南昌大學的陳悅老師,他將《奔跑吧 Linux內核》運用到教學實踐中,并很熱心地把教學經驗分享給我,也是在他的督促下,我才完成了本書的編寫工作。
感謝開源中國社區的聯合創始人紅薯在本書編寫過程中給予我的支持和幫助。
另外,還要感謝浙江大學的陳文智老師、大連理工大學的吳國偉老師、南京大學的夏耐老師、北京工業大學的韓徳強老師,以及段夕華的熱情幫助。感謝彭東林同學完成了本書的審閱工作,并提出了寶貴的修改意見。
同時感謝人民郵電出版社張爽編輯的辛勤付出。
最后感謝我的家人對我的支持和鼓勵,雖然周末時間我都在忙于寫作本書,但是他們總是給我無限的溫暖。
張天飛
2018年于上海
- 30天自制操作系統
- 鴻蒙生態:開啟萬物互聯的智慧新時代
- Linux Mint Essentials
- 網絡操作系統:Windows Server 2003管理與應用
- Kali Linux滲透測試全流程詳解
- Implementing Azure DevOps Solutions
- Windows Vista融會貫通
- 跟老男孩學Linux運維:Shell編程實戰
- Hands-On GPU Programming with Python and CUDA
- Linux內核API完全參考手冊(第2版)
- Raspberry Pi入門指南
- Azure Resource Manager Templates Quick Start Guide
- Docker for Developers
- PrimeFaces Beginner's Guide
- Mastering Spring Cloud