1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <sect1 id="ch06-chroot">
- <title>Entering the chroot environment</title>
- <?dbhtml filename="chroot.html" dir="chapter06"?>
- <para>It is time to enter the chroot environment in order to begin installing
- the packages we need. Before you can chroot, however, you need to become
- <emphasis>root</emphasis>, since only <emphasis>root</emphasis>
- can execute the <userinput>chroot</userinput> command.</para>
- <para>Just like earlier, ensure the LFS environment variable is set up properly
- by running <userinput>echo $LFS</userinput> and ensuring it shows the path to
- your LFS partition's mount point, which is
- <filename class="directory">/mnt/lfs</filename> if you followed our
- example.</para>
- <para>Become <emphasis>root</emphasis> and run the following command
- to enter the chroot environment:</para>
- <para><screen><userinput>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</userinput></screen></para>
- <para><screen><userinput>set +h</userinput></screen></para>
- <para>The <userinput>-i</userinput> option given to the
- <userinput>env</userinput> command will clear all variables of the chroot
- environment. After that, only the HOME, TERM, PS1 and PATH variables are
- set again. The TERM=$TERM construct will set the TERM variable inside chroot
- to the same value as outside chroot; this variable is needed for programs
- like vim and less to operate properly. If you need other variables present,
- such as CFLAGS or CXXFLAGS, this is a good place to set them again.</para>
- <para>Also note the use of the set +h directive. This tells bash to not use
- its internal path hashing. Without this directive, bash will remember paths
- to binaries. Since as we go thru chapter 6, we want to use our newly compiled
- binaries as soon as they are installed, we turn off this function.</para>
- <para>From this point on there's no need to use the LFS variable anymore,
- because everything you do will be restricted to the LFS file system -- since
- what the shell thinks is <filename class="directory">/</filename> is actually
- the value of <filename class="directory">$LFS</filename>, which was passed to
- the chroot command.</para>
- <para>You have to make sure all the commands in the rest of this chapter and
- in the following chapters are run from within the chroot environment.
- If you ever leave this environment for any reason (rebooting for example),
- you must remember to again enter chroot and mount the proc and devpts
- filesystems (discussed later) before continuing with the installations.</para>
- <para>Note that the bash prompt will say "I have no name!" This is
- normal, as the <filename>/etc/passwd</filename> file has not been
- created yet.</para>
- </sect1>
|