现在我们将进入 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 环境中的所有变量。此后,只有
HOME
、TERM
、PS1
和 PATH
被再次设置。TERM=$TERM
结构会将 chroot 环境内的
TERM
变量设置为与 chroot 环境外相同的值。有了这个变量,像
vim 和 less 这样的程序才能正常工作。如果还要设置其他变量,比如
CFLAGS
或 CXXFLAGS
,现在应该再次设置。(译注:之前使用的 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 环境。