为便于理解,全书使用若干惯例。以下是一些示例:
./configure --prefix=/usr
此形式的文本应完全按所示键入,除非周围文本另有说明。它也用于标识对特定命令的引用。
install-info: unknown option
`--dir-file=/mnt/lfs/usr/info/dir'
此形式的文本(蓝色等宽字体)显示屏幕输出,可能是执行命令的结果。
/boot/grub/grub.conf
此形式的文本(等宽字体)用于显示文件名。
请将浏览器配置为使用良好的等宽字体显示等宽文本,以便清晰区分 Il1 或
O0 的字形。
强调
此形式的文本有多种用途,但主要用于强调重点,或提供应键入内容的示例。
https://www.linuxfromscratch.org/
此形式的文本用于指向书外的超链接,例如 HowTo、下载位置、网站等。
此形式的文本用于指向书内的链接,例如描述其他软件包的另一章节。
cat > $LFS/etc/group << "EOF"
root:x:0:
bin:x:1:
......
EOF
此样式主要用于创建配置文件。第一条命令(粗体)告诉系统从后续行中键入的内容创建文件
$LFS/etc/group,直到遇到 EOF 序列为止。因此,通常完全按所示键入整个部分。请记住,复制和粘贴是您的好帮手!
<替换文本>
此形式的文本用于封装应修改的文本,不应按所示键入或复制粘贴。尖括号不是字面文本的一部分,而是替换的一部分。
root
此形式的文本用于在说明中显示特定的系统用户或组引用。
当新软件包被创建时,软件作者依赖于先前的工作。为了在 BLFS 中构建一个软件包,必须在编译目标软件包之前构建这些依赖项。对于每个软件包,先决条件列在一个或多个独立部分中:必需、推荐和可选。
这些依赖项是构建软件包所需的最低要求。LFS 中的软件包以及这些必需依赖项的必需依赖项均从此列表中省略。请始终记得检查嵌套依赖项。如果某个依赖项被说明为“运行时”,则构建软件包时不需要它,而仅在安装后使用它时才需要。
这些是 BLFS 编辑者确定对于赋予软件包合理功能很重要的依赖项。如果推荐依赖项未被说明为“运行时”,则软件包安装说明假定它已安装。如果未安装,则可能需要修改说明以适应缺失的软件包。推荐“运行时”依赖项不需要在构建软件包之前安装,但必须在之后构建,以便以合理功能运行软件包。
这些是软件包可能使用的依赖项。可选依赖项的集成可能由软件包自动完成,或者可能需要 BLFS 未提供的额外步骤。可选依赖项有时会在没有明确 BLFS 说明的情况下列出。在这种情况下,您必须自行确定如何执行安装。
某些软件包需要特定的内核配置选项。其通用布局如下:
Master section ---> Subsection ---> [*] Required parameter [REQU_PAR] <*> Required parameter (not as module) [REQU_PAR_NMOD] <*/M> Required parameter (could be a module) [REQU_PAR_MOD] <M> Required parameter (as a module) [REQU_PAR_MOD_ONLY] < /*/M> Optional parameter [OPT_PAR] < /M> Optional parameter (as a module if enabled) [OPT_PAR_MOD_ONLY] [ ] Incompatible parameter [INCOMP_PAR] < > Incompatible parameter (even as module) [INCOMP_PAR_MOD]
[…] 右侧给出选项的符号名称,以便您轻松检查它是否已在 .config
文件中设置。请注意,.config 文件在所有符号名称前都包含
CONFIG_ 前缀。各项条目的含义如下:
Master section 顶级菜单项 Subsection 子菜单项 Required parameter 该选项可以内建或未选中:必须选中 Required parameter (not as module) 该选项可以内建、作为模块或未选中:必须以内建方式选中 Required parameter (could be a module) 该选项可以内建、作为模块或未选中:必须选中,内建或作为模块均可 Required parameter (as a module) 该选项可以内建、作为模块或未选中:必须作为模块选中;以内建方式选中可能导致不良影响 Optional parameter 该选项可以内建、作为模块或未选中:如果您需要它来驱动硬件或可选内核特性,可以将其选为模块或内建 Optional parameter (as a module if enabled) 该选项可以内建、作为模块或未选中:如果您需要它来驱动硬件或可选内核特性,可以将其选为模块,但以内建方式选中可能导致不良影响 Incompatible parameter 该选项可以内建或未选中:必须不选中 Incompatible parameter (even as module) 该选项可以内建、作为模块或未选中:必须不选中
请注意,根据其他选择,配置菜单中的尖括号(<>)可能显示为大括号({})(如果该选项无法取消选中),甚至显示为破折号(-*- 或 -M-)(当选择被强制时)。描述该选项的帮助文本会说明该选项所依赖的其他选择,以及这些其他选择是如何设置的。
以蓝色显示的字母是该选项的热键。如果您运行 make menuconfig,可以按一个键快速遍历屏幕上以该键为热键的所有选项。
与 LFS 中一样,BLFS 中的每个软件包都有一个以标准构建单位(SBU)列出的构建时间。这些时间相对于在 LFS 中构建 binutils 所需的时间,旨在提供一些关于构建一个软件包所需时间的参考。所列出的大多数时间都是使用单处理器或单核心构建软件包的时间。在某些情况下,在多核心系统上测试的大型、长时间运行的构建,其 SBU 时间会附带诸如“(并行度=4)”之类的注释。这些值表明测试使用了多个核心。请注意,虽然这能在具有适当硬件的系统上加快构建速度,但加速并非线性,且在某种程度上取决于具体的软件包和所使用的具体硬件。
对于使用 ninja(即任何使用 meson 的软件包)或 rust 的软件包,默认使用所有核心;即使构建时间很短,此类软件包上也会出现类似的注释。
即使并行构建耗时超过 15 SBU,在某些机器上时间可能明显更长,即使构建过程中未使用交换分区。尤其是不同的微架构会以不同的相对速度构建某些文件,这可能导致当某些 make 目标等待另一个文件创建时产生延迟。当大型构建使用大量 C++ 文件时,具有同步多线程的处理器将共享浮点单元,其耗时可能比使用四个“主”核心(在 Intel i7 上使用 taskset 并使其他核心空闲时测得)长 45%。
某些软件包不支持并行构建;对于这些软件包,make 命令必须指定 -j1。已知受此类限制的软件包会在正文中注明。