现在将要进入 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
,现在是个很好的机会去设定它们。
从这里开始,不再需要环境变量 LFS
了。因为所有的工作都被限制在 LFS
文件系统里面。这是因为已经告诉 Bash shell $LFS
是现在的根目录(/
)。
注意,这里 /tools/bin
位于 PATH
的最后面。也就是说当软件包的最终版本安装之后就不再使用临时工具了。为了使 shell
无法"记住"可执行二进制代码的位置,需要通过使用 +h
参数关闭 bash 的散列功能。
注意此时 bash
提示符会显示:I have no name!
这是正常的,因为
/etc/passwd
还没有创建。
这一章剩下的命令以及后面几章的命令都是在 chroot 环境下进行的。如果你离开了这个环境(比如重启), 要确保内核虚拟文件系统挂载,像在 第 6.2.2 节 “挂载并填充 /dev 目录” 和 第 6.2.3 节 “挂载虚拟内核文件系统” 描述的。在继续安装之前,再次进入 chroot 环境。