深度探索Linux作業系統

713.2.3vmlin 713.2.4vmlin 1064.2.2解壓in

內容介紹

《深度探索linux作業系統:系統構建和原理解析》是探索linux作業系統原理的里程碑之作,在眾多的同類書中獨樹一幟。它顛覆和摒棄了傳統的從閱讀linux核心原始碼著手學習linux作業系統原理的方式,而是基於實踐,以從零開始構建一個完整的linux作業系統的過程為依託,指引讀者在實踐中去探索作業系統的本質。這種方式的妙處在於,讓讀者先從巨觀上全面認清一個完整的作業系統中都包含哪些組件,各個組件的作用,以及各個組件間的關係,從微觀上深入理解系統各個組件的原理,幫助讀者達到事半功倍的學習效果,這是作者潛心研究linux作業系統10幾年的心得和經驗,能避免後來者在學習中再走彎路。此外,本書還對編譯連結技術(尤其是動態載入和連結技術)和圖形系統進行了原理性的探討,這部分內容非常珍貴。
全書一共8章:第1章介紹了如何準備工作環境。在第2章中構建了編譯工具鏈,這是後面構建作業系統各個組件的基礎。在這一章中,不僅詳細講解了工具鏈的構建過程,而且還通過對編譯連結過程的探討,深入討論了工具鏈的組成及各個組件的作用,理解工具鏈的工作原理對理解作業系統至關重要。第3~4章,從零開始構建了一個具備用戶字元界面的最小作業系統,詳細講解了構建的過程以及涉及的技術細節。第5章從理論的角度探討了這一過程,從核心的載入、解壓一直討論到用戶進程的載入,包括用戶空間的動態連結器為載入程式所作的努力。第6~7章首先構建了作業系統的基礎圖形系統,然後在此基礎上構建了桌面環境。第8章深入探討了計算機圖形的基礎原理,包含2d和3d程式的渲染、軟體渲染、硬體渲染等內容,同時也從作業系統的角度審視了pipeline。

作品目錄

《深度探索linux作業系統:系統構建和原理解析》
前言
第1章 準備基本環境 1
1.1 安裝virtualbox 1
1.2 創建虛擬計算機 2
1.3 安裝linux系統 2
1.4 使用root用戶 5
1.5 啟用自動登錄 5
1.6 掛載實驗分區 6
1.7 安裝ssh伺服器 6
1.8 更改網路模式 7
1.9 安裝增強模式 8
1.10 使用xephyr 8
第2章 工具鏈 10
2.1 編譯過程 10
2.1.1 預編譯 12
2.1.2 編譯 14
2.1.3 彙編 17
2.1.4 連結 31
2.2 構建工具鏈 39
.2.2.1 gnu工具鏈組成 40
2.2.2 構建工具鏈的過程 40
2.2.3 準備工作 43
2.2.4 構建二進制工具 45
2.2.5 編譯freestanding的交叉編譯器 46
2.2.6 安裝核心頭檔案 49
2.2.7 編譯目標系統的c庫 50
2.2.8 構建完整的交叉編譯器 52
2.2.9 定義工具鏈相關的環境變數 54
2.2.10 封裝“交叉”pkg-config 54
2.2.11 關於使用libtool程式庫的討論 56
2.2.12 啟動代碼 57
第3章 構建核心 62
3.1 核心映像的組成 62
3.1.1 一級推進系統——setup.bin 63
3.1.2 二級推進系統——核心非壓縮部分 65
3.1.3 有效載荷——vmlinux 65
3.1.4 映像的格式 66
3.2 核心映像的構建過程 68
3.2.1 kbuild簡介 68
3.2.2 構建過程概述 71
3.2.3 vmlinux的構建過程 71
3.2.4 vmlinux.bin的構建過程 75
3.2.5 setup.bin的構建過程 80
3.2.6 bzimage的組合過程 81
3.2.7 核心映像構建過程總結 82
3.3 配置核心 86
3.3.1 交叉編譯核心設定 86
3.3.2 基本核心配置 87
3.3.3 配置處理器 88
3.3.4 配置核心支持模組 90
3.3.5 配置硬碟控制器驅動 91
3.3.6 配置檔案系統 96
3.3.7 配置核心支持elf檔案格式 97
3.4 構建基本根檔案系統 99
3.4.1 根檔案系統的基本目錄結構 99
3.4.2 安裝c庫 100
3.4.3 安裝shell 101
3.4.4 安裝根檔案系統到目標系統 102
第4章 構建initramfs 104
4.1 為什麼需要initramfs 104
4.2 initramfs原理探討 105
4.2.1 掛載rootfs 106
4.2.2 解壓initramfs到rootfs 110
4.2.3 掛載並切換到真正的根目錄 116
4.3 配置核心支持initramfs 117
4.4 構建基本的initramfs 118
4.5 將硬碟驅動編譯為模組 121
4.5.1 配置devtmpfs 121
4.5.2 將硬碟控制器驅動配置為模組 126
4.6 自動載入硬碟控制器驅動 130
4.6.1 核心向用戶空間傳送事件 131
4.6.2 udev載入驅動和建立設備節點 136
4.6.3 處理冷插拔設備 139
4.6.4 編譯安裝udev 141
4.6.5 配置核心支持netlink 142
4.6.6 配置核心支持inotify 143
4.6.7 安裝modules.alias.bin檔案 144
4.6.8 啟動udevd和模擬熱插拔 146
4.7 掛載並切換到根檔案系統 147
4.7.1 掛載根檔案系統 147
4.7.2 切換到根檔案系統 149
第5章 從核心空間到用戶空間 154
5.1 linux作業系統載入 154
5.1.1 grub映像構成 155
5.1.2 安裝grub 160
5.1.3 grub啟動過程 165
5.1.4 載入核心和initramfs 170
5.2 解壓核心 181
5.2.1 移動核心映像 182
5.2.2 解壓 186
5.2.3 重定位 187
5.3 核心初始化 190
5.3.1 初始化虛擬記憶體 190
5.3.2 初始化進程0 201
5.3.3 創建進程1 206
5.4 進程載入 209
5.4.1 載入可執行程式 211
5.4.2 進程的投入運行 223
5.4.3 按需載入指令和數據 234
5.4.4 載入動態連結器 243
5.4.5 載入動態庫 246
5.4.6 重定位動態庫 250
5.4.7 重定位可執行程式 268
5.4.8 重定位動態連結器 271
5.4.9 段relro 274
第6章 構建根檔案系統 278
6.1 初始根檔案系統 278
6.2 以讀寫模式重新掛載檔案系統 280
6.3 配置核心支持網路 282
6.3.1 配置核心支持tcp/ip協定 282
6.3.2 配置核心支持網卡 283
6.4 啟動udev 285
6.5 安裝網路配置工具並配置網路 285
6.6 安裝並配置ssh服務 287
6.7 安裝procps 291
6.8 安裝x視窗系統 291
6.8.1 安裝m4宏定義 292
6.8.2 安裝x協定和擴展 292
6.8.3 安裝x相關庫和工具 294
6.8.4 安裝x伺服器 296
6.8.5 安裝gpu的2d驅動 297
6.8.6 安裝x的輸入設備驅動 297
6.8.7 運行x伺服器 300
6.8.8 一個簡單的x程式 302
6.8.9 配置核心支持drm 303
6.9 安裝圖形庫 307
6.9.1 安裝glib和libffi 307
6.9.2 安裝atk 307
6.9.3 安裝libpng 308
6.9.4 安裝gdkpixbuf 308
6.9.5 安裝fontconfig 308
6.9.6 安裝cairo 311
6.9.7 安裝pango 311
6.9.8 安裝libxi 311
6.9.9 安裝gtk 312
6.9.10 安裝gtk圖形庫的善後工作 312
6.9.11 一個簡單的gtk程式 313
6.10 安裝字型 315
第7章 構建桌面環境 317
7.1 視窗管理器 317
7.1.1 基本原理 318
7.1.2 創建編譯腳本 325
7.1.3 主要數據結構 328
7.1.4 初始化 331
7.1.5 為視窗“落戶” 334
7.1.6 構建視窗裝飾 337
7.1.7 繪製裝飾視窗 341
7.1.8 配置視窗 343
7.1.9 移動視窗 345
7.1.10 改變視窗大小 348
7.1.11 切換視窗 348
7.1.12 最大化/最小化/關閉視窗 351
7.1.13 管理已存在的視窗 354
7.2 任務條和桌面 356
7.2.1 標識任務條的身份 357
7.2.2 更新任務條上的任務項 358
7.2.3 激活任務 359
7.2.4 高亮顯示當前活動任務 360
7.2.5 顯示桌面 361
7.2.6 桌面 362
第8章 linux圖形原理探討 364
8.1 渲染和顯示 364
8.1.1 渲染 365
8.1.2 顯示 365
8.2 顯存 366
8.2.1 動態顯存技術 367
8.2.2 buffer object 370
8.3 2d渲染 375
8.3.1 創建前緩衝 377
8.3.2 gpu渲染 381
8.3.3 cpu渲染 386
8.4 3d渲染 388
8.4.1 創建幀緩衝 390
8.4.2 渲染pipleline 399
8.4.3 交換前緩衝和後緩衝 414
8.5 wayland 421

相關詞條

相關搜尋

熱門詞條

聯絡我們