7.13. 清理和备份临时系统

7.13.1. 清理

首先,删除已经安装的临时工具文档文件,以防止它们进入最终构建的系统,并节省大约 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

7.13.2. 备份

现在,已经为系统安装了所有必要的程序和库,且 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-r12.2-28-systemd.tar.xz .
[注意]

注意

正如下面的 重要 提示框所述,在继续进行第 8 章的操作之前,不要忘记重新进入 chroot 环境。

7.13.3. 还原

如果您犯下了一些错误,并不得不重新开始构建,您可以使用备份档案还原临时系统,节约一些工作时间。由于源代码在 $LFS 中,它们也包含在备份档案内,因此不需要重新下载它们。在确认 $LFS 设定正确后,可以运行以下命令从备份档案进行还原:

[警告]

警告

下面的命令非常危险。如果您在没有切换到 $LFS 目录或 LFS 环境变量没有为 root 用户正确设定的情况下运行了 rm -rf ./* 命令,它会完全摧毁宿主系统。后果自负。

cd $LFS
rm -rf ./*
tar -xpf $HOME/lfs-temp-tools-r12.2-28-systemd.tar.xz

再一次复查环境是否配置正确,即可继续构建系统。

[重要]

重要

如果您在进行备份或从备份进行恢复时退出了 chroot 环境,记得检查内核虚拟文件系统是否仍然处于挂载状态 (可以使用 findmnt | grep $LFS 进行检查)。如果它们尚未挂载,需要按照第 7.3 节 “准备虚拟内核文件系统”的描述重新挂载内核虚拟文件系统,并重新进入 chroot 环境 (参阅第 7.4 节 “进入 Chroot 环境”),再继续进行构建。