现在将要进入 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
设定虚拟根环境中的 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环境下进行的。如果你离开了这个环境 (比如重启), 要确保内核虚拟文件系统挂载,像在 Section 6.2.2, “挂载并填充 /dev 目录” and Section 6.2.3, “挂载虚拟内核文件系统”描述的。 在继续安装之前, 再次进入chroot环境。