注意事项

1.LFS 版本说明

本书采用 LFS10.0 手册的构建流程,纸质书的出版可能无法追上 LFS 版本的半年更新,实际构建的时候可以采用最新版本的 LFS 构建流程。若希望采用本书流程构建,请保持软件包版本与手册一致,不然可能会产生难以预料的问题,自行解决花费的时间成本很高。

2.常见问题的检索和避免

本书整体参考 LFS 的构建顺序,对构建指令也并未做出改动。如果在构建的途中出现一些问题,可以善用搜索引擎快速解决这些问题。一般常见的问题也会在 LFS 的后续的版本中解决和特别说明。 在实际构建中也可以打开 LFS 电子版直接复制其中的指令,以避免输入错误产生的问题。

3.LFS 的目标架构

LFS 当前主要支持 AMD/Intel 的 x86(32 位)和 x86_64(64 位)构架的 CPU。另外,也有一些办法,可以帮助 LFS 顺利地在 Power PC 和 ARM CPU 上运行。 跟随流程构建,只会构建 32 位或 64 位系统中的其中一种,64 位系统并不会兼容 32 位程序。如果有构建兼容 32 位程序的 64 位系统的需求,很多程序需要自行编译两次。

4.SysVinit 和 systemd 的区别

systemd 是 Linux 计算机操作系统之下的一套中央化系统及设置管理程序(init),包括有守护进程、程序库以及应用软件,由 Lennart Poettering 带头开发。其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低 Shell 的系统开销的效果,最终代替现在常用的 System V 与 BSD 风格 init 程序。

systemd 这一名字源于 UNIX 中的一个惯例:在 UNIX 中常以“d”作为系统守护进程(daemon,亦称后台进程)的后缀标识。除此以外,systemd 亦是借代英文术语 D 体系,而这一术语即是用于描述一个人具有快速地适应环境并解决困难的能力。

当前绝大多数的 Linux 发行版都已采用 systemd 代替原来的 System V。LFS 也不例外,提供了两个版本的构建流程 sysv 对应 System V,systemd 对应 systemd。经过几个版本的演变,这两个版本已经很像了,特别是构建过程,只有临近结束的几个软件包的构建顺序有些差异,其他软件包的构建几乎不受影响。不过在配置的时候差距还是很大的,所以 System V 和 systemd 之间的比较,会留到配置阶段结合实践说明。

下面开始构建工作,其中所有的命令以及参数,笔者会在初次遇到的时候详细的介绍一番,在第二次出现的时候就不再作过多解释了。如果你对这方面知识不是特别了解,建议慢慢看下去,如果后面有什么不理解的话就往前面翻翻。如果你觉得这部分很简单,你也可以跳过,直接运行指令即可,指令已经写的非常完善了,在途中不中断的情况下,直接运行指令即可完成构建工作。不过有一点需要注意,本书为了兼顾 LFS 的 System V 和 systemd 两个版本,两个版本本身是不能共存的,所以在某些软件包的构建和个别软件包的构建顺序上会存在些许差异,这些地方需要读者自己考虑,自己抉择。