首先,删除已经安装的临时工具文档文件,以防止它们进入最终构建的系统,并节省大约 35 MB:
rm -rf /usr/share/{info,man,doc}/*
其次,在现代 Linux 系统中,libtool 的 .la 文件仅用于 libltdl。LFS 中没有库通过 libltdl 加载,而且已知一些 .la 文件会导致 BLFS 软件包出现异常。现在删除这些文件:
find /usr/{lib,libexec} -name \*.la -delete
当前临时系统使用约 3 GB 空间,但是我们已经不需要其中的 /tools 目录了。该目录使用约 1 GB 存储空间。现在删除它:
rm -rf /tools
现在,已经为系统安装了所有必要的程序和库,且 LFS 系统的当前状态良好。可以将系统备份起来,以便以后重新使用。如果在后续章节发生了无法挽回的错误,通常来说,最好的办法是删除所有东西,然后 (更小心地) 从头开始。不幸的是,这也会删除所有临时工具。为了避免浪费时间对已经构建成功的部分进行返工,可以准备一个备份。
本节中的其余步骤都是可选的。不过,一旦您开始在第 8 章中安装软件包,临时工具就会被覆盖。因此,按照下面描述的步骤备份临时工具可能是个好主意。
以下步骤在 chroot 环境之外进行。这意味着您在进行它们之前必须离开 chroot 环境。这样做是为了访问 chroot
环境之外的文件系统位置,以写入或读取备份档案,备份档案不应存放在 $LFS
目录树中。
现在,如果您决定进行备份,离开 chroot 环境:
exit
以下给出的所有步骤都在宿主系统中以 root
身份执行。请非常小心地执行命令,此处如果在命令中出现错误,则可能损坏您的宿主系统。特别注意环境变量 LFS
会自动为用户 lfs
设定,但可能没有为 root
设定。
无论何时,只要准备以 root
身份执行命令,一定要确认
LFS
变量已经正确设定。
第 2.6 节 “设置 $LFS 环境变量”已经讨论了这个问题。
在进行备份之前,解除内核虚拟文件系统的挂载:
mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm umount $LFS/dev/pts umount $LFS/{sys,proc,run,dev}
确认在 root
的主目录所在的文件系统中,有至少 1 GB
的可用存储空间 (源代码压缩包也会被包含在备份档案中)。
注意以下命令指定的是宿主系统中 root
用户的主目录,它通常在根文件系统中。如果不希望使用 root
的主目录,将 $HOME
替换成您选择的目录。
运行以下命令,创建备份档案:
由于备份档案需要进行压缩,即使您的系统运行速度较快,该命令也会消耗较长的时间 (可能超过 10 分钟)。
cd $LFS tar -cJpf $HOME/lfs-temp-tools-12.2-systemd.tar.xz .
正如下面的 “重要” 提示框所述,在继续进行第 8 章的操作之前,不要忘记重新进入 chroot 环境。
如果您犯下了一些错误,并不得不重新开始构建,您可以使用备份档案还原临时系统,节约一些工作时间。由于源代码在 $LFS
中,它们也包含在备份档案内,因此不需要重新下载它们。在确认 $LFS
设定正确后,可以运行以下命令从备份档案进行还原:
下面的命令非常危险。如果您在没有切换到 $LFS 目录或 LFS
环境变量没有为 root
用户正确设定的情况下运行了
rm -rf ./*
命令,它会完全摧毁宿主系统。后果自负。
cd $LFS
rm -rf ./*
tar -xpf $HOME/lfs-temp-tools-12.2-systemd.tar.xz
再一次复查环境是否配置正确,即可继续构建系统。
如果您在进行备份或从备份进行恢复时退出了 chroot 环境,记得检查内核虚拟文件系统是否仍然处于挂载状态 (可以使用 findmnt | grep $LFS 进行检查)。如果它们尚未挂载,需要按照第 7.3 节 “准备虚拟内核文件系统”的描述重新挂载内核虚拟文件系统,并重新进入 chroot 环境 (参阅第 7.4 节 “进入 Chroot 环境”),再继续进行构建。