现在可以切换到 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 将会把 TERM 设定成 chroot 外环境相同的值。许多程序需要这个变量才能正常工作,比如
vim 和 less。如果还需设定其他变量,如 CFLAGS 或 CXXFLAGS,正好在这一起设置了。
在这之后,LFS 变量就不再需要了,因为后面所有工作都将被限定在 LFS
文件系统中。因为我们已经告诉 Bash 终端 $LFS
就是当前的根目录(/)目录。
注意要将 /tools/bin 放在 PATH 变量的最后。意思是在每个软件的最后版本编译安装好后就不再使用临时工具了。这还需要让 shell
不要「记住」每个可执行文件的位置——这样的话,还要给 bash 加上 +h 选项来关闭其哈希功能。
注意一下 bash 的提示符是
I have no name! 这是正常的,因为这个时候
/etc/passwd 文件还没有被创建。
非常重要,从本章开始,后续章节中的命令都要在 chroot 环境下运行。如果因为某种原因(比如说重启)离开了这个环境,请保证要按照 第 6.2.2 节 「挂载和激活 /dev」 和 第 6.2.3 节 「挂载虚拟文件系统」 中所说的那样挂载虚拟内核文件系统,并在继续构建之前重新运行 chroot 进入环境。