6.4. 进入 Chroot 环境

现在到了进入 chroot 环境,并开始构建和安装最终的 LFS 系统的时候。 以 root 身份, 执行以下命令,进入这个目前只包含临时工具的空间:

chroot "$LFS" /tools/bin/env -i \
    HOME=/root                  \
    TERM="$TERM"                \
    PS1='(lfs chroot) \u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
    /tools/bin/bash --login +h

传递给 env-i 参数会清除 chroot 环境中的所有环境变量。 随后,只重新设定 HOMETERMPS1PATH 变量。 参数 TERM=$TERM 将 chroot 环境中的 TERM 变量设为和 chroot 环境外相同的值, 许多程序需要这个变量才能正常工作,例如 vimless。如果需要设定其他变量,例如 CFLAGSCXXFLAGS, 在这里顺便设定比较合适。

从现在开始,就不再需要使用 LFS 环境变量, 因为所有工作都被局限在 LFS 文件系统内。这是由于 Bash 被告知 $LFS 现在是根目录 (/)。

注意到 /tools/bin 处于 PATH 的末尾, 这意味着一旦安装了某个工具的最终版本,就不再使用对应的临时工具。 这还需要保证 shell 不 记忆 执行过的程序的位置 —— 因此需要传递 +h 参数给 bash 以关闭散列功能。

注意 bash 的提示符会包含 I have no name! 。 这是正常的,因为现在还没有创建 /etc/passwd 文件。

[注意]

注意

本章剩余部分和后续各章中的命令都要在 chroot 环境中运行。 如果您因为一些原因(如重新启动计算机)离开了该环境, 必须确认虚拟内核文件系统如 第 6.2.2 节 “挂载和填充 /dev”第 6.2.3 节 “挂载虚拟内核文件系统” 所述挂载好, 然后重新进入 chroot 环境,才能继续安装 LFS 。