【目录】
第 一阶段 准备 第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 RP文件构建工具 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 协议服务库(Libmicrod) 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 RP管理工具(RPM) 169 6.7.2 配置RP管理工具 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 结束语
返回顶部