《Linux核心精髓:精通Linux核心必會的75個絕技》前言
核心是作業系統的核心,作業系統的準系統都是由核心提供的。檔案產生和資料包傳輸等也是通過核心的功能實現的。但這些都不是簡單的任務。平時可能意識不到,但這其中確實包含了很多先進技術。例如,在檔案系統方面,設定檔時盡量減少磁碟掃描,在網路方面,由於路由表的入口數量龐大,因此設計時盡量保證對系統整體影響較小的設計。在記憶體管理、進程管理方面也作出了很多努力。解讀這種先進技術也是核心構建的魅力之一。
然而,最近的Linux所提供的並不只有準系統。隨著功能的不斷髮展,現在已經出現了很多特定領域的便捷功能和獨特功能。即使是核心駭客也很少有人能夠完全掌握。
本書從Linux核心的眾多先進功能中選取了一些必備並且有趣的內容進行介紹,同時也對內部的運行機制和結構進行了闡述。此外,本書還介紹了熟練使用這些功能所需的工具、設定方法以及調整方法等。
省電就是其中一項內容。除了使用方法以外,本書還介紹了省電的理念、與硬體的關係等。此外,還提到了當前廣受關注的虛擬化、資源管理、標準檔案系統中所採用的ext4等已有功能和新功能。對於已有功能,本書結合最新的源碼,介紹它的更改內容和新增功能。其中也包括文檔中沒有記載,且必須對核心內部有一定理解才能得知的資訊,因此,即使是比較瞭解這個功能的人也可能會有新的發現。另外,本書還介紹了核心的相關工具,其中gcore在重要的系統中就是非常可靠的工具。
最新的Linux核心中安裝了強大的追蹤、概要分析功能,具備很多方便實用的功能。這些功能不僅能夠很方便地達到預期的目的,而且對於分析核心功能也非常有用。甚至對於核心構建的高手也有一定協助。
全書列舉了非常多的執行個體,讓讀者更快地學會如何使用。對於想要熟練使用核心的讀者來說,本書也是非常好的參考書。
本書還為想要瞭解Linux核心的讀者以及讀過本書後開始對Linux核心開發產生興趣的讀者,介紹了擷取核心源碼的方法和核心開發方法等核心構建入門所需的資訊。我們希望讀者能夠通過本書更加瞭解Linux的世界。
在電腦剛剛誕生的時候,有一段時期人們認為“如果想要提高編程水平就查看UNIX代碼”。因為最快的方式就是參考天才所編寫的最先進的代碼並進行模仿。而在閱讀Linux核心的代碼時,相信大家也會深有同感。
Linux核心是開源軟體,無論是誰都可以參與開發。Linux核心的代碼花費了大量的時間和精力來編寫。各領域都由具有專業知識的維護人員進行長期的管理,從而得到不斷的改進。基於電子郵件的開發也在不斷進行,因此可以看到各種討論,並瞭解到當前代碼的發展曆程。每次看到Linux核心的代碼,都會讓人感歎其中凝聚的智慧和努力,也感受到當時的辛苦。希望讀者能夠從本書開始接觸Linux這個不一般的世界,誕生更多的核心高手。
本書主要內容
本書介紹的是Linux核心所提供的功能。不僅有比較基礎的功能,還有一些功能需要具有一定的知識才能使用。
此外,還介紹了使用功能時需要用到的資訊和命令。除了核心以外,本書還將介紹相關的應用程式。基本上是基於TUI進行說明的,但也有一部分關於GUI的介紹。
涉及的主要版本為Linux核心2.6.18到寫作時最新的Linux核心3.0。其中一部分還介紹了Red Hat Enterprise Linux 4(RHEL4:基於Linux核心2.6.9)的功能。範例程式碼已經在工作中經常使用的RHEL和任何使用者都可以使用的Fedora、CentOS等中進行過嚴格測試。
本書不涉及Linux核心的實際安裝和以演算法等為主體的內容。
本書目錄如下:
第1章 核心入門1
HACK #1 如何擷取Linux核心1
HACK #2 如何編譯Linux核心7
HACK #3 如何編寫核心模組18
HACK #4 如何使用Git22
HACK #5 使用checkpatch.pl檢查補丁的格式41
HACK #6 使用localmodconfig縮短編譯時間44
第2章 資源管理47
HACK #7 Cgroup、Namespace、Linux容器47
HACK #8 調度策略55
HACK #9 RT Group Scheduling 與RT Throttling59
HACK #10 Fair Group Scheduling62
HACK #11cpuset65
HACK #12 使用Memory Cgroup限制記憶體使用量量68
HACK #13 使用Block I/O控制器設定I/O優先順序74
HACK #14 虛擬儲存子系統的調整80
HACK #15 ramzswap85
HACK #16 OOM Killer的運行與結構91
第3章 檔案系統98
HACK #17 如何使用ext498
HACK #18 向ext4轉換101
HACK #19 ext4的調整104
HACK #20 使用fio進行I/O的基準測試111
HACK #21FUSE118
第4章 網路121
HACK #22 如何控制網路的頻寬121
HACK #23 TUN/TAP裝置126
HACK #24 橋接器裝置129
HACK #25 VLAN133
HACK #26 bonding驅動程式136
HACK #27 Network Drop Monitor141
第5章 虛擬化147
HACK #28 如何使用Xen147
HACK #29 如何使用KVM153
HACK #30 如何不使用DVD安裝作業系統159
HACK #31 更改虛擬CPU分配方法,提高效能161
HACK #32 如何使用EPT提高用戶端作業系統的效能166
HACK #33 使用IOMMU提高用戶端作業系統運行速度173
HACK #34 使用IOMMU+SR-IOV提高用戶端作業系統速度183
HACK #35 SR-IOV頻寬控制187
HACK #36 使用KSM節約記憶體189
HACK #37 如何掛載用戶端作業系統的磁碟194
HACK #38 從用戶端作業系統識別虛擬機器環境200
HACK #39 如何調試用戶端作業系統205
第6章 省電213
HACK #40 ACPI213
HACK #41 使用ACPI的 S狀態224
HACK #42 使用CPU省電(C、P狀態)226
HACK #43 PCI裝置的熱插拔236
HACK #44 虛擬環境下的省電240
HACK #45 遠端管理機器的電源246
HACK #46 USB的電力管理251
HACK #47 顯示器的省電254
HACK #48 通過網路裝置節省電能260
HACK #49 關閉鍵盤的LED來省電263
HACK #50 PowerTOP269
HACK #51 硬碟的省電276
第7章 調試282
HACK #52 SysRq鍵282
HACK #53 使用diskdump提取核心崩潰轉儲288
HACK #54 使用Kdump提取核心崩潰轉儲293
HACK #55 崩潰測試297
HACK #56 IPMI看門狗計時器299
HACK #57 NMI看門狗計時器305
HACK #58 soft lockup307
HACK #59 crash命令312
HACK #60 核心轉儲過濾器326
HACK #61 產生使用者模式進程的進程核心轉儲329
HACK #62 使用lockdep尋找系統的死結335
HACK #63 檢測核心的記憶體流失341
第8章 概要分析與追蹤346
HACK #64 使用perf tools的概要分析(1)346
HACK #65 使用perf tools的概要分析(2)349
HACK #66 進行核心或進程的各種概要分析353
HACK #67 追蹤核心的函數調用360
HACK #68 ftrace的外掛程式追蹤器366
HACK #69 記錄核心的運行事件371
HACK #70 使用trace-cmd的核心追蹤378
HACK #71 將動態追蹤事件添加到核心中382
HACK #72 使用SystemTap進行核心追蹤388
HACK #73 使用SystemTap編寫對話型程式394
HACK #74 SystemTap指令碼的重複利用399
HACK #75 運用SystemTap402
本書使用方法
本書可以按順序依次閱讀,另外由於每一節之間都是獨立的,因此也可以從感興趣的章節開始閱讀。第1章介紹了核心的基礎知識,如果是第一次接觸核心,建議先學習第1章。本書在介紹已有功能時也加入了一些新的資訊。相信即使是經驗豐富的人也可以在本書中有新的發現,因此希望各位讀者能夠將本書從頭到尾完整讀一遍。本書還收錄了一些作者珍藏的資訊。詳細內容請參見參考文獻。
--------------------------
《Linux核心精髓:精通Linux核心必會的75個絕技》主編簡介
高橋浩和(Hirokazu Takahashi),畢業於北海道大學電子工學系。從VAX全盛時代開始致力於各種UNIX系列作業系統的功能強化和核心調整,以及大規模系統的即時作業系統的設計等。以ISP的伺服器構建為契機,開始正式研究Linux。
《Linux核心精髓:精通Linux核心必會的75個絕技》作者簡介
池田宗廣(Munehiro IKEDA),大學時代,親眼看到X68000的gcc產生比主流編譯器還要快好幾倍的代碼,因此開始確信免費軟體/開源軟體的可能性。此後,在曆經咖啡店店員、生產技術人員、硬體工程師後,終於開始從事Linux核心開發。這個行業最迷人的就是能夠跨公司甚至跨國界與世界最優秀的技術人員進行交流。現居住在美國,愛好音樂演奏,當過鼓手,也當過主唱,最近幾年一直在彈貝斯。不管是作為技術人員還是貝斯手都喜歡做幕後工作,只不過天生就不喜歡半途而廢。
大岩尚宏(Naohiro Ooiwa),任職於Miracle Linux株式會社的軟體工程師。大學時研究的是類似手機這樣使用天線接收無線高頻訊號的類比線路。從事Linux開發工作的時候開始深入研究軟體。他是《Debug Hacks》的作者,本書是O扲EILLY JAPAN的第二本Hacks系列圖書。
島本裕志(Hiroshi Shimamoto),軟體工程師。負責問題分析和調試。主要工作就是在出現故障時,根據日誌和核心轉儲找出問題所在。因此在工作中會經常用到二進位和CPU啟動並執行知識。同時也在論壇中從事過一些關於x86架構和發送器的活動。目前關注虛擬化方面的活動。
竹部晶雄(Akio Takebe),在Xen、KVM等與虛擬化相關的開源論壇參與開發活動。主要負責IA64架構、RAS系列和PCI pass through的開發。在開源論壇認識了專門研究省電技術的工程師,從而開始對省電方面產生興趣。現在正使用Ruby on Rails開發雲端運算相關軟體。
平松雅巳(Masami Hiramatsu),Linux核心追蹤的相關維護人員。主要工作是對perf和ftrace的動態事件進行維護。也參與了SystemTap的開發,最近熱衷於將系統SystemTap的用途從專門用於追蹤擴充到遊戲編程等。主要使用的是bash和vim,但是因為bash不能用hjkl移動游標,總的來說屬於vim使用者。喜歡使用Ubuntu和Fedora。現在的研究方向是ARM Linux、Btrfs等。
《Linux核心精髓:精通Linux核心必會的75個絕技》撰稿人簡介
畑山 大輔(HATAYAMA Daisuke),crash gcore擴充模組的維護人員。對調試和故障分析感興趣。最喜歡做的事情就是從中繼資料對系統進行研究。正在努力練習馬拉松長跑,爭取在搞技術的同時鍛鍊出健康的體魄。近期目標是四小時內跑完馬拉松。
藤田朗(Akira Fujita),任職於NEC軟體東北株式會社。擔任軟體工程師。大學畢業之後開始轉向軟體行業。喜歡Linux檔案系統(ext3/ext4)。喜歡defrag,愛好五人足球。
《Linux核心精髓:精通Linux核心必會的75個絕技》技術審校者簡介
劉波,資深Linux核心開發工程師、應用開發工程師和嵌入式開發工程師,現在重慶工商大學電腦科學與資訊工程學院擔任教師,從事Linux程式開發和Oracle管理方面的教學工作,在讀博士。此外,他還專註於大規模機器學習、數值分析與計算、最佳化理論(凸最佳化)的研究。
--------------------------
書名:《Linux核心精髓:精通Linux核心必會的75個絕技》
原書名:Linux Kernel Hacks
豆瓣收藏:http://book.douban.com/subject/21332497/
樣章下載:http://vdisk.weibo.com/s/pa9NQ
內容簡介:
經過近20年的發展,Linux作業系統已經成為當今最成功的開源軟體之一,使用廣泛,影響深遠。隨著Linux作業系統功能的不斷豐富和完善,Linux核心的原始碼也從最初的幾萬行增加到如今的數百萬行,龐大無比,對於Linux核心的研究者和開發人員而言,要系統研究Linux核心絕非易事。鑒於此,本書選取了Linux核心的資源管理(CPU、記憶體、進程等)、檔案系統、網路、虛擬化、省電、調試、概要分析、追蹤、核心調整等核心主題進行了深入剖析和講解,總結出了75個能使讀者深刻理解Linux核心精髓的技巧和最佳實務。