《用芯探索:教你構建龍芯平台的LINUX系統》是2021年人民郵電出版社出版的圖書。
基本介紹
- 中文名:用芯探索:教你構建龍芯平台的LINUX系統
- 作者:孫海勇
- 出版時間:2021年2月1日
- 出版社:人民郵電出版社
- ISBN:9787115558497
- 類別:計算機
- 開本:128 開
- 裝幀:平裝-膠訂
內容簡介,作者簡介,圖書目錄,
內容簡介
本書通過講解如何在龍芯CPU下製作Linux系統及其發行版來介紹Linux作業系統的組成,同時為讀者提供了一種為非x86架構CPU製作和移植髮行版的思路。本書將製作Linux系統的過程分為準備、製作臨時系統、製作目標系統、製作發行版4個階段。準備階段可讓讀者對實際製作過程中用到的技術細節有所了解;製作臨時系統階段介紹如何為沒有可用系統的機器製作一個可用的系統;製作目標系統階段介紹如何在一個臨時系統的基礎上將Fedora系統移植到目標機器上;製作發行版階段配合軟體倉庫、安裝系統、包構建管理製作等對目標系統進行擴展,完成一個相對完整的發行版的製作。
作者簡介
孫海勇:高級工程師,長期從事Linux 系統移植、定製和開發工作。先行製作了運行在龍芯CPU 上的純64 位Linux 系統及發行版,並在龍芯CPU 所用架構下完成了Fedora 21/28/32等版本的發行版移植。Linux 核心級UTF-8 編碼文字顯示補丁的作者。曾發表過多篇LFS 相關的文章,著有《手把手教你構建自己的Linux 系統》。
圖書目錄
第 一階段 準備
第01章 龍芯CPU和Linux發行版
1.1 龍芯CPU 003
1.1.1 龍芯CPU的分類 003
1.1.2 龍芯CPU的指令集架構和微架構 004
1.1.3 龍芯CPU的兼容性問題 005
1.2 GNU/Linux作業系統和發行版 006
1.2.1 GNU簡介 006
1.2.2 Linux簡介 007
1.2.3 GNU/Linux的發行版 008
1.3 基礎發行版和衍生髮行版 010
1.3.1 基礎發行版 010
1.3.2 衍生髮行版 010
1.3.3 如何選擇發行版 011
1.4 Linux相關標準 012
1.4.1 POSIX標準 012
1.4.2 LSB——Linux系統兼容的新起點 012
1.4.3 FHS——檔案存放標準 013
1.5 本書的目標 013
1.6 著作權,關於開源協定 014
第02章 基礎知識
2.1 方案選擇 017
2.1.1 初始系統與目標系統 017
2.1.2 初始系統的基本要求 017
2.1.3 目標系統的製作方法 018
2.1.4 本地編譯和交叉編譯 018
2.2 交叉編譯的原理 020
2.2.1 了解CPU 020
2.2.2 交叉編譯的定義 021
2.2.3 交叉編譯的適用範圍 022
2.2.4 常用術語解釋 022
2.2.5 交叉編譯目標系統 023
2.2.6 Sysroot與DESTDIR 027
2.3 Fedora Linux發行版 030
2.3.1 Fedora Linux簡介 030
2.3.2 Fedora Linux的包管理工具 031
2.3.3 DNF軟體倉庫工具 031
2.3.4 RPM檔案簡介 035
2.3.5 操作包檔案的命令 037
2.3.6 RPM包檔案構建工具 041
2.3.7 SPEC描述檔案介紹 043
2.3.8 Fedora Linux實用網站 045
2.4 軟體包配置常見參數 046
2.4.1 安裝路徑設定 046
2.4.2 程式名稱定義 047
2.4.3 平台系統定義 047
2.4.4 功能開關選項和軟體設定選項 048
2.4.5 環境變數 049
第03章 製作方案設計
3.1 外援階段 051
3.1.1 選擇製作系統平台 051
3.1.2 交叉編譯臨時系統 051
3.1.3 階段要領 052
3.2 可啟動階段 053
3.2.1 移動介質啟動系統 053
3.2.2 安裝臨時系統 054
3.2.3 階段要領 054
3.3 自立階段 054
3.3.1 臨時系統完善階段 055
3.3.2 RPM打包環境階段 055
3.3.3 工具鏈製作階段 056
3.3.4 臨時系統替換階段 056
3.3.5 重構系統階段 057
3.4 補充階段 057
3.5 完成階段 057
3.6 準備開工 058
第二階段 製作臨時系統
第04章 創作基地
4.1 搭建初始系統 061
4.1.1 安裝一個系統環境 061
4.1.2 配置初始系統 062
4.1.3 下載全部原始碼 063
4.1.4 登錄初始系統 064
4.1.5 配置軟體倉庫 065
4.2 創作基地的搭建和設定 067
4.2.1 設定環境變數 067
4.2.2 建立創作基地目錄 068
4.2.3 創建必要的目錄 068
4.2.4 創建製作用戶 069
4.2.5 設定製作用戶 070
第05章 交叉工具鏈
5.1 準備工作 076
5.1.1 交叉工具鏈製作的目的 076
5.1.2 交叉工具鏈中軟體的編譯方法 076
5.1.3 安裝交叉工具鏈所需的原始碼包 077
5.2 開始製作 078
5.2.1 核心頭檔案 078
5.2.2 Binutils交叉工具 080
5.2.3 任意精度算法庫(GMP) 084
5.2.4 高精度浮點數算法庫(MPFR) 084
5.2.5 任意高精度的複數計算庫(LibMPC) 085
5.2.6 集合和關係的數學算法庫(ISL) 086
5.2.7 多面體數據轉換程式庫(CLooG) 086
5.2.8 GCC交叉工具(僅支持C語言) 087
5.2.9 目標系統的Glibc 091
5.2.10 GCC交叉工具(支持C語言和C 語言) 096
5.2.11 測試交叉工具鏈 098
5.2.12 Pkgconf軟體包 101
5.2.13 Grub軟體包 103
第06章 製作一個臨時系統
6.1 準備工作 107
6.1.1 製作環境設定 107
6.1.2 準備軟體包 110
6.2 臨時系統的工具鏈 111
6.2.1 任意精度算法庫(GMP) 111
6.2.2 高精度浮點數算法庫(MPFR) 112
6.2.3 任意高精度的複數計算庫(LibMPC) 113
6.2.4 集合和關係算法庫(ISL) 113
6.2.5 多面體參數算法庫(CLooG) 114
6.2.6 ZIP格式支持庫(Zlib) 114
6.2.7 彙編工具集(Binutils) 115
6.2.8 編譯器(GCC) 117
6.3 基礎庫軟體包 120
6.3.1 文本環境互動函式館(Ncurses) 120
6.3.2 壓縮工具(Bzip2) 121
6.3.3 壓縮工具(XZ) 124
6.3.4 行編輯支持庫(Readline) 124
6.3.5 加密算法支持庫(OpenSSL) 125
6.3.6 正則表達式處理庫(PCRE) 126
6.3.7 SELinux策略庫(Libsepol) 126
6.3.8 SELinux檔案級安全策略庫(LibSELinux) 127
6.3.9 小型資料庫(GDBM) 127
6.3.10 攜帶型多功能庫(NSPR) 128
6.3.11 SQL資料庫(SQLite) 129
6.3.12 網路安全服務(NSS) 130
6.3.13 命令行參數解析庫(Popt) 132
6.3.14 多種歸檔格式庫(Libarchive) 133
6.3.15 伯克利資料庫(LibDB) 133
6.3.16 許可權管理庫(Libcap) 134
6.3.17 HTTP協定服務庫(Libmicrohttpd) 135
6.3.18 傳輸數據協定庫(CURL) 136
6.3.19 ELF格式支持工具(ELFUtils) 136
6.3.20 壓縮工具(LZ4) 137
6.3.21 壓縮工具(Zstd) 138
6.3.22 XML解析庫(Expat) 138
6.4 基本命令軟體包 139
6.4.1 用戶互動環境工具(Bash) 139
6.4.2 常用命令工具集(Coreutils) 141
6.4.3 檔案類型查詢工具(File) 141
6.4.4 檔案查找工具(Findutils) 142
6.4.5 文本處理工具(Gawk) 142
6.4.6 國際化語言支持工具(Gettext) 143
6.4.7 文本匹配搜尋工具(Grep) 144
6.4.8 壓縮工具(Gzip) 145
6.4.9 文本流編輯工具(Sed) 145
6.4.10 Linux系統常用工具集
(Util-linux) 145
6.4.11 Linux核心模組管理工具
(Kmod) 146
6.4.12 文本編輯器(VIM) 148
6.4.13 命令路徑查詢工具(Which) 150
6.4.14 網路管理工具(IPRoute) 150
6.4.15 網路地址自動獲取工具
(DHCPCD) 151
6.4.16 驗證工具(FIPSCheck) 152
6.4.17 主機互聯工具(OpenSSH) 152
6.4.18 提權執行工具(Sudo) 153
6.5 檔案系統工具 155
6.5.1 Ext檔案系統工具(E2fsprogs) 155
6.5.2 Xfs檔案系統工具(Xfsprogs) 156
6.5.3 Dos檔案系統工具(Dosfstools) 157
6.6 開發相關工具 158
6.6.1 語法分析工具(Bison) 158
6.6.2 測試工具(Check) 158
6.6.3 檔案比較工具(Diffutils) 159
6.6.4 編譯過程控制工具(Make) 159
6.6.5 補丁檔案使用工具(Patch) 160
6.6.6 檔案打包工具(Tar) 160
6.6.7 信息閱讀工具(Texinfo) 161
6.6.8 宏處理工具(M4) 161
6.6.9 軟體包安裝信息讀取工具
(Pkgconf) 162
6.6.10 自動化配置腳本生成工具
(Autoconf) 163
6.6.11 自動化編譯腳本生成工具
(Automake) 164
6.6.12 GNU通用庫支持工具(Libtool) 164
6.6.13 程式生成工具(Flex) 165
6.6.14 腳本語言(TCL) 166
6.6.15 程式語言(Lua) 167
6.6.16 檔案打包工具(Cpio) 167
6.6.17 用戶互動環境工具(TCSH) 168
6.7 包管理工具 169
6.7.1 RPM包管理工具(RPM) 169
6.7.2 配置RPM包管理工具 171
6.8 系統啟動的支持 172
6.8.1 啟動管理器(Systemd) 172
6.8.2 訊息匯流排系統(D-Bus) 174
6.8.3 密碼管理工具(Shadow-Utils) 175
6.8.4 Linux核心 176
6.8.5 啟動器(GRUB) 179
第07章 在龍芯上啟動臨時系統
7.1 設定臨時系統 182
7.2 打包臨時系統 189
7.3 製作基於隨身碟的啟動系統 190
7.4 遺漏的軟體包 195
7.5 安裝臨時系統 196
7.6 啟動龍芯機器 203
第三階段 製作目標系統
第08章 目標系統工具鏈
8.1 為編譯做準備 209
8.2 完善臨時系統 211
8.2.1 腳本語言工具(Perl) 212
8.2.2 腳本語言(Python3) 214
8.2.3 版本管理工具(Git) 215
8.2.4 檔案下載工具(Wget) 215
8.2.5 文本匹配搜尋工具(Grep) 216
8.2.6 程式調試工具(GDB) 216
8.2.7 DWARF調試信息工具(DWZ) 217
8.2.8 進程查詢工具(Procps-ng) 218
8.3 編譯第 一個RPM原始碼包 218
8.3.1 編譯方法 218
8.3.2 軟體版本和修訂版本 220
8.3.3 SPEC描述檔案的修改 220
8.3.4 使用SPEC描述檔案進行編譯 221
8.3.5 重新製作RPM原始碼包 222
8.3.6 RPM檔案的安裝 222
8.4 RPM檔案製作環境完善 225
8.4.1 RPM擴展包
(Redhat-Rpm-Config) 225
8.4.2 修改原始碼包 225
8.4.3 強制編譯原始碼包 226
8.5 發行版信息包 228
8.5.1 發行版倉庫源信息包
(Fedora-Repos) 228
8.5.2 發行版版本信息包
(Fedora-Release) 228
8.5.3 安裝循環依賴 229
8.6 循環依賴 231
8.6.1 什麼是循環依賴 231
8.6.2 依賴條件的類型 232
8.6.3 破壞與還原 233
8.6.4 循環依賴解決建議 237
8.7 標準化系統軟體包 239
8.7.1 ISO代碼標準(ISO-Codes) 239
8.7.2 基礎配置檔案集合(Setup) 239
8.7.3 根目錄結構(Filesystem) 240
8.7.4 基礎系統虛包(Basesystem) 243
8.8 目標系統的工具鏈 243
8.8.1 核心頭檔案(Kernel-Header) 244
8.8.2 基礎C庫(Glibc) 247
8.8.3 調整工具鏈 253
8.8.4 ZIP格式支持庫(Zlib) 255
8.8.5 哈希密碼函式館(Libxcrypt) 257
8.8.6 彙編工具集(Binutils) 259
8.8.7 任意精度算法庫(GMP) 264
8.8.8 高精度浮點數算法庫(MPFR) 267
8.8.9 任意高精度的複數計算庫
(LibMPC) 267
8.8.10 集合和關係的數學算法庫(ISL) 268
8.8.11 壓縮工具(XZ) 269
8.8.12 壓縮工具(LZ4) 269
8.8.13 壓縮工具(ZSTD) 269
8.8.14 編譯器(GCC) 270
8.8.15 重新編譯工具鏈 278
第09章 殘破的目標系統
9.1 製作階段須知 286
9.1.1 多庫支持(Multilib) 286
9.1.2 修改SRPM檔案 286
9.1.3 自舉(BootStrap) 287
9.1.4 循環依賴 288
9.1.5 補丁檔案 289
9.1.6 製作順序 289
9.1.7 軟體包的測試 289
9.2 基礎目標系統 290
9.2.1 系統互動環境 290
9.2.2 常用系統工具 293
9.2.3 系統基礎軟體包 303
9.2.4 圖形相關軟體包 317
9.2.5 文檔相關軟體包 326
9.2.6 系統安全組件 336
9.2.7 包管理工具 348
9.2.8 啟動相關軟體包 355
9.2.9 配置和重啟系統 372
第 10章 完善目標系統
10.1 臨時軟體倉庫 376
10.1.1 倉庫管理工具 376
10.1.2 創建本地倉庫 383
10.1.3 倉庫配置檔案 384
10.1.4 倉庫索引檔案 386
10.1.5 使用本地倉庫 387
10.2 堅硬的自依賴 395
10.2.1 逆交叉工具鏈 396
10.2.2 回歸創作基地 407
10.2.3 解決自依賴 411
10.3 家族類軟體包 416
10.3.1 循環構建腳本 416
10.3.2 準備循環構建環境 418
10.3.3 Perl家族類軟體包 419
10.3.4 Python家族類軟體包 424
10.4 圖形桌面互動環境 427
10.4.1 圖形桌面基礎軟體包 427
10.4.2 Xwindow圖形系統 440
10.4.3 登錄管理器 444
10.4.4 圖形桌面環境 448
10.4.5 中文支持 463
10.4.6 聲音支持 467
10.4.7 主題和圖示 473
10.4.8 啟動桌面 478
10.5 再次編譯 479
10.5.1 準備工作 479
10.5.2 重構軟體包 481
10.5.3 分散式編譯 485
10.5.4 重構當前系統 492
10.5.5 構建全部軟體包 495
第四階段 製作發行版
第 11章 軟體倉庫
11.1 分組檔案 507
11.1.1 下載分組檔案 507
11.1.2 分組檔案的內容 507
11.1.3 分組檔案的修改 508
11.1.4 分組檔案的使用 508
11.1.5 分組檔案的驗證 509
11.2 簽名 510
11.2.1 簽名的作用 510
11.2.2 生成密鑰對 510
11.2.3 密鑰簽名配置 512
11.2.4 RPM檔案簽名 513
11.2.5 軟體倉庫簽名 514
11.2.6 發布公鑰 514
11.2.7 驗證安裝簽名軟體 516
11.3 發布軟體倉庫 517
11.3.1 安裝Web服務 517
11.3.2 配置軟體倉庫 519
11.3.3 動態倉庫地址 521
11.3.4 同步軟體倉庫 527
11.3.5 維護軟體倉庫 529
第 12章 製作安裝鏡像
12.1 啟動鏡像製作工具 532
12.1.1 相關準備 532
12.1.2 製作啟動鏡像檔案 534
12.1.3 使用啟動鏡像檔案 536
12.2 作業系統的安裝 538
12.2.1 相關準備 538
12.2.2 圖形桌面的Live系統 539
12.2.3 安裝作業系統 541
12.3 查看和修改Live系統 544
第 13章 包構建管理系統
13.1 包構建工具 546
13.1.1 Mock的工作原理 546
13.1.2 Mock的安裝 547
13.1.3 Mock的配置 547
13.1.4 Mock的初始化 549
13.1.5 Mock的使用 550
13.2 包管理系統 551
13.2.1 了解Koji 551
13.2.2 Koji的安裝 552
13.2.3 Koji的使用 568
結束語