用“芯”探索:教你構建龍芯平臺的 Linux 系統

孫海勇

  • 出版商: 人民郵電
  • 出版日期: 2020-12-01
  • 定價: $768
  • 售價: 8.5$653 (限時優惠至 2024-04-21)
  • 語言: 簡體中文
  • 頁數: 575
  • ISBN: 7115558493
  • ISBN-13: 9787115558497
  • 相關分類: Linux
  • 立即出貨(限量) (庫存=5)

  • 用“芯”探索:教你構建龍芯平臺的 Linux 系統-preview-1
  • 用“芯”探索:教你構建龍芯平臺的 Linux 系統-preview-2
用“芯”探索:教你構建龍芯平臺的 Linux 系統-preview-1

買這商品的人也買了...

商品描述

本書通過講解如何在龍芯CPU下製作Linux系統及其發行版來介紹Linux操作系統的組成,同時為讀者提供了一種為非x86架構CPU製作和移植發行版的思路。本書將製作Linux系統的過程分為準備、製作臨時系統、製作目標系統、製作發行版4個階段。準備階段可讓讀者對實際製作過程中用到的技術細節有所瞭解;製作臨時系統階段介紹如何為沒有可用系統的機器製作一個可用的系統;製作目標系統階段介紹如何在一個臨時系統的基礎上將Fedora系統移植到目標機器上;製作發行版階段配合軟件倉庫、安裝系統、包構建管理製作等對目標系統進行擴展,完成一個相對完整的發行版的製作。

作者簡介

孫海勇:高級工程師,長期從事Linux 系統移植、定制和開發工作。
先行製作了運行在龍芯CPU 上的純64 位Linux 系統及發行版,並在龍芯CPU 所用架構下完成了Fedora 21/28/32等版本的發行版移植。
首個Linux 內核級UTF-8 編碼文字顯示補丁的作者。曾發表過多篇LFS 相關的文章,著有《手把手教你構建自己的Linux 系統》。

目錄大綱

一階段準備

01章龍芯CPU和Linu發行版
1.1龍芯CPU 003
1.1.1龍芯CPU的分類003
1.1.2龍芯CPU的指令集架構和微架構004
1.1.3龍芯CPU的兼容性問題005
1.2 GNU/Linu作系統和發行版006
1.2.1 GNU簡介006
1.2.2 Linu簡介007
1.2.3 GNU/Linu的發行版008
1.3基礎發行版和衍生髮行版010
1.3.1基礎發行版010
1.3.2衍生髮行版010
1.3.3如何選擇發行版011
1.4 Linu相關標準012
1.4.1 POSIX標準012
1.4.2 LSB——Linu系統兼容的新起點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 Linu發行版030
2.3.1 Fedora Linu簡介030
2.3.2 Fedora Linu的包管理工具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 Linu實用網站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 SELinu策略庫(Libsepol) 126
6.3 .8 SELinu文件級安全策略庫(LibSELinu) 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解析庫(Epat) 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國際化語言支持工具(Gettet) 143
6.4 .7文本匹配搜索工具(Grep) 144
6.4.8壓縮工具(Gzip) 145
6.4.9文本流編輯工具(Sed) 145
6.4.10 Linu系統常用工具集
(Util-linu) 145
6.4.11 Linu內核模塊管理工具
(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 Et文件系統工具(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信息閱讀工具(Teinfo) 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程序生成工具(Fle) 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 Linu內核176
6.8.5啟動器(GRUB) 179

07章在龍芯上啟動臨時系統
7.1設置臨時系統182
7.2打包臨時系統189
7.3製作基於U盤的啟動系統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哈希密碼函數庫(Libcrypt) 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章包構建管理系統