Version 10.1
[linux_from_scratch.git] / chapter07 / chroot.xml
blob7f85a73e8f3d0c532bf668678cbc97a46c546abb
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4   <!ENTITY % general-entities SYSTEM "../general.ent">
5   %general-entities;
6 ]>
8 <sect1 id="ch-tools-chroot">
9   <?dbhtml filename="chroot.html"?>
11   <title>Entering the Chroot Environment</title>
13   <para>Now that all the packages which are required to build the rest of the
14   needed tools are on the system, it is time to enter the chroot environment to
15   finish installing the remaining temporary tools. This environment will be in
16   use also for installing the final system. As user <systemitem
17   class="username">root</systemitem>, run the following command to enter the
18   environment that is, at the moment, populated with only the temporary
19   tools:</para>
21 <screen role="nodump"><userinput>chroot "$LFS" /usr/bin/env -i   \
22     HOME=/root                  \
23     TERM="$TERM"                \
24     PS1='(lfs chroot) \u:\w\$ ' \
25     PATH=/bin:/usr/bin:/sbin:/usr/sbin \
26     /bin/bash --login +h</userinput></screen>
28   <para>The <parameter>-i</parameter> option given to the <command>env</command>
29   command will clear all variables of the chroot environment. After that, only
30   the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and
31   <envar>PATH</envar> variables are set again. The
32   <parameter>TERM=$TERM</parameter> construct will set the <envar>TERM</envar>
33   variable inside chroot to the same value as outside chroot. This variable is
34   needed for programs like <command>vim</command> and <command>less</command>
35   to operate properly.  If other variables are desired, such as
36   <envar>CFLAGS</envar> or <envar>CXXFLAGS</envar>, this is a good place to set
37   them again.</para>
39   <para>From this point on, there is no need to use the
40   <envar>LFS</envar> variable anymore because all work will be restricted
41   to the LFS file system.  This is because the Bash shell is told that
42   <filename class="directory">$LFS</filename> is now the root
43   (<filename class="directory">/</filename>) directory.</para>
45   <para>Notice that <filename class="directory">/tools/bin</filename> is not
46   in the <envar>PATH</envar>. This means that the cross toolchain will no longer be
47   used in the chroot environment. This occurs when the shell does not
48   <quote>remember</quote> the locations of executed binaries&mdash;for this
49   reason, hashing is switched off by passing the <parameter>+h</parameter> option
50   to <command>bash</command>.</para>
52   <para>Note that the <command>bash</command> prompt will say
53   <computeroutput>I have no name!</computeroutput> This is normal because the
54   <filename>/etc/passwd</filename> file has not been created yet.</para>
56   <note>
57     <para>It is important that all the commands throughout the remainder of this
58     chapter and the following chapters are run from within the chroot
59     environment. If you leave this environment for any reason (rebooting for
60     example), ensure that the virtual kernel filesystems are mounted as
61     explained in <xref linkend="ch-tools-bindmount"/> and <xref
62     linkend="ch-tools-kernfsmount"/> and enter chroot again before continuing
63     with the installation.</para>
64   </note>
66 </sect1>