6.3. 进入 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

-i 选项用于 env 命令,它将清除 chroot 环境的所有变量。之后,只有HOME, TERM, PS1,以及PATH变量会被重新设置。TERM=$TERM 结构将设置TERMchroot 内部的变量与 chroot 外部的值相同。像 vimless 这样的程序需要这个变量才能正常运行。如果需要其他变量,例如CFLAGSCXXFLAGS,这是一个再次设置它们的好地方。

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

注意到/tools/binPATH中排在最后。这意味着一旦安装了最终版本,临时工具将不再被使用。这种情况发生在 shell 不 “记住” 已执行的二进制文件位置时——因此,通过将 +h 选项传递给 bash 来关闭哈希功能。

重要的是,本章和后续章节中的所有命令都必须在 chroot 环境中运行。如果您因任何原因离开此环境(例如,重新启动),请记住首先挂载procdevpts文件系统(在前一节中讨论过),并在继续安装之前再次进入 chroot 环境。

请注意,bash 提示符将显示I have no name!这是正常的,因为/etc/passwd文件尚未创建。