现在到了进入 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 环境中的所有环境变量。 随后,只重新设定
HOME
、TERM
、
PS1
和 PATH
变量。
参数 TERM=$TERM
将 chroot 环境中的
TERM
变量设为和 chroot 环境外相同的值,
许多程序需要这个变量才能正常工作,例如 vim
和 less。如果需要设定其他变量,例如
CFLAGS
或 CXXFLAGS
, 在这里顺便设定比较合适。
从现在开始,就不再需要使用 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 。