现在已经准备好了所有继续构建其余工具时必要的软件包,可以进入 chroot
环境并完成剩余临时工具的安装。在安装最终的系统时,会继续使用这个 chroot 环境。以 root
用户身份,运行以下命令以进入当前只包含临时工具的 chroot 环境:
chroot "$LFS" /usr/bin/env -i \ HOME=/root \ TERM="$TERM" \ PS1='(lfs chroot) \u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ LFS_MIPS_GCC_EXTRA_OPTIONS="$LFS_MIPS_GCC_EXTRA_OPTIONS" \ /bin/bash --login +h
通过传递 -i
选项给 env 命令,可以清除 chroot
环境中的所有环境变量。随后,只重新设定 HOME
,TERM
,PS1
,以及 PATH
变量。参数 TERM=$TERM
将 chroot 环境中的 TERM
变量设为和 chroot 环境外相同的值。一些程序需要这个变量才能正常工作,例如
vim 和 less。如果需要设定其他变量,例如 CFLAGS
或 CXXFLAGS
,也可以在这里设定。
从现在开始,就不再需要使用 LFS
环境变量,因为所有工作都被局限在 LFS
文件系统内。这是由于 Bash 被告知 $LFS
现在是根目录
(/
)。
注意 /tools/bin
不在 PATH
中。这意味着交叉工具链在 chroot 环境中不被再使用。这还需要保证 shell
不“记忆”执行过的程序的位置
—— 因此需要传递 +h
参数给 bash 以关闭散列功能。
注意 bash 的提示符会包含
I have no name!
。这是正常的,因为现在还没有创建
/etc/passwd
文件。
本章剩余部分和后续各章中的命令都要在 chroot 环境中运行。如果您因为一些原因 (如重新启动计算机) 离开了该环境,必须确认虚拟内核文件系统如第 7.3.2 节 “挂载和填充 /dev”和第 7.3.3 节 “挂载虚拟内核文件系统”所述挂载好,然后重新进入 chroot 环境,才能继续安装 LFS。