6.4. 进入 Chroot 环境

现在我们将进入 chroot 环境开始构建和安装最终的 LFS 系统。作为 root 用户,运行以下命令进入现在之存在临时工具的空间:

chroot "$LFS" /tools/bin/env -i \
    HOME=/root                  \
    TERM="$TERM"                \
    PS1='\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,现在应该再次设置。(译注:之前使用的 MAKEFLAGS 也应当重新设置。)

从这里开始就不再需要使用 LFS 变量了,因为所有的工作都被限制在 LFS 文件系统中。这是因为 Bash shell 被告知 $LFS 现在是根 (/) 目录。

注意 /tools/bin 位于 PATH 的最后。这意味着一旦有最终版本安装,临时工具就不会再被使用。这只在 shell 不会 记住 运行过的二进制的位置时生效——因此,通过给 bash 传递一个 +h 选项来关闭哈希。

注意 bash 的提示符会说 I have no name! (我还没有名字!)。这很正常,因为 /etc/passwd 文件还没有创建。

[注意]

注意

本章和接下来几章中的命令在 chroot 环境中运行十分重要。如果你出于任何原因 (例如重启) 离开这个环境,确保按照第 6.2.2 节 “挂载并填充 /dev”第 6.2.3 节 “挂载虚拟内核文件系统”中的方式挂载虚拟内核文件系统并在继续之前进入 chroot 环境。