Entering the chroot'ed environment

It's time to enter our chroot'ed environment in order to install the rest of the software we need.

Enter the following commands to enter the chroot'ed environment. From this point on there's no need to use the $LFS variable anymore, because everything a user does will be restricted to the LFS partition (since / is actually /mnt/lfs but the shell doesn't know that).

cd $LFS &&
chroot $LFS /usr/bin/env -i HOME=/root \
   TERM=$TERM /bin/bash --login

The -i option will clear all environment variables for as long as you are in the chroot'ed environment and only the HOME and TERM variables are set. The TERM=$TERM construction will set the TERM variable inside chroot to the same value as outside chroot which is needed for programs like vim and less to operate properly. If you need other variables present, such as CFLAGS or CXXFLAGS, you need to set them again.

The reason we do cd $LFS before running the chroot command is that older sh-utils packages have a chroot program which doesn't do the cd by itself, therefore meaning that we have to perform it manually. While this isn't an issue with most modern distributions, it does no harm anyways and ensures that the command works for everyone.

Now that we are inside a chroot'ed environment, we can continue to install all the basic system software. You have to make sure all the following commands in this and following chapters are run from within the chroot'ed environment. If you ever leave this environment for any reason (when rebooting for example) please remember to mount $LFS/proc again and re-enter chroot before continuing with the book.

Note that the bash prompt will contain "I have no name!" This is normal because Glibc hasn't been installed yet.

Dependencies

Chroot needs the following to be installed:


bash: bash
sh-utils: env