预购商品
书目分类
特别推荐
本書通過講解如何在龍芯CPU下製作Linux系統及其發行版本來介紹Linux作業系統的組成,同時為讀者提供了一種為非x86架構CPU製作和移植發行版本的思路。 本書將製作Linux系統的過程分為準備、製作臨時系統、製作目標系統、製作發行版本4個階段。準備階段可讓讀者對實際製作過程中用到的技術細節有所瞭解;製作臨時系統階段介紹如何為沒有可用系統的機器製作一個可用的系統;製作目標系統階段介紹如何在一個臨時系統的基礎上將Fedora系統移植到目的機器上;製作發行版本階段配合軟體倉庫、安裝系統、包構建管理製作等對目標系統進行擴展,完成一個相對完整的發行版本的製作。
第一階段 準備 第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 製作基於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 雜湊密碼函式程式庫(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 結束語
孫海勇:高級工程師,長期從事Linux 系統移植、定制和開發工作。先行製作了運行在龍芯CPU 上的純64 位元Linux 系統及發行版本,並在龍芯CPU 所用架構下完成了Fedora 21/28/32等版本的發行版本移植。Linux 內核級UTF-8 編碼文字顯示補丁的作者。曾發表過多篇LFS 相關的文章,著有《手把手教你構建自己的Linux 系統》。
最近浏览商品
客服公告
热门活动
订阅电子报