《深度探索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
· · · · · · (
收起)
評分
☆☆☆☆☆
不是我的領域,有點看不懂。T.T,等沉澱一下,以後再看。
評分
☆☆☆☆☆
動態的講解瞭Linux工作機製的書,作者語言也不錯,沒有那種舶來的生硬的英語式漢語的感覺。
評分
☆☆☆☆☆
內容還是非常充實的. 不過, 可能是因為自己的知識有限, 在讀的過程中, 太容易被繞暈瞭, 而且缺少一些總結.
評分
☆☆☆☆☆
初略讀瞭前四章。後續有需要時查閱。
評分
☆☆☆☆☆
初略讀瞭前四章。後續有需要時查閱。
評分
☆☆☆☆☆
在我学习实践lfs的时候, 发现了这本书, 开始的时候以为和lfs没有太大区别, 无非是lfs的翻译与实践. 在我实践lfs的过程中, 发现无论是lfs还是clfs, 需要安装的工具链相关软件非常之多, 而且没有说明为什么一定要这么做. 之后我开始结合本书来重新审视lfs, 发现书里所写的lfs操...
評分
☆☆☆☆☆
当年看见我标记阅读之后作者很热心地发豆油提醒我,感谢作者,应一位豆瓣用户的请求,在此分享 49页的安装内核头文件这一小节中: ”make ARCH=i386 INSTALL_HDR_PATH=$SYSROOT/usr/headers_install“, 请在"headers_install" 前加一个空格。 印刷错误的图:http://pan.baidu.c...
評分
☆☆☆☆☆
《深度探索linux操作系统:系统构建和原理解析》是探索linux操作系统原理的里程碑之作,在众多的同类书中独树一帜。它颠覆和摒弃了传统的从阅读linux内核源代码着手学习linux操作系统原理的方式,而是基于实践,以从零开始构建一个完整的linux操作系统的过程为依托,指引读者在...
評分
☆☆☆☆☆
作为资深linux的开发者或运维人员,必须完成过LFS,简单说就是从头DIY一个自己的linux系统。这书算是LFS的加强版。2010年曾经花了两周业余时间完成了LFS6.3,一周看手册,一周动手实践。一个个包编译配置的系统最终成功跑起来,非常的考验耐心,一个小错误就可能导致失败。
評分
☆☆☆☆☆
作为资深linux的开发者或运维人员,必须完成过LFS,简单说就是从头DIY一个自己的linux系统。这书算是LFS的加强版。2010年曾经花了两周业余时间完成了LFS6.3,一周看手册,一周动手实践。一个个包编译配置的系统最终成功跑起来,非常的考验耐心,一个小错误就可能导致失败。