[6370fa6] | 1 | <sect1 id="ch06-chroot">
|
---|
[2c094d6] | 2 | <title>Entering the chroot environment</title>
|
---|
[a862ce2] | 3 | <?dbhtml filename="chroot.html" dir="chapter06"?>
|
---|
[6370fa6] | 4 |
|
---|
[2c094d6] | 5 | <para>It is time to enter the chroot environment in order to begin installing
|
---|
[44c2fd8] | 6 | the packages we need. Before you can chroot, however, you need to become
|
---|
| 7 | <emphasis>root</emphasis>, since only <emphasis>root</emphasis>
|
---|
| 8 | can execute the <userinput>chroot</userinput> command.</para>
|
---|
| 9 |
|
---|
[e4df1fc] | 10 | <para>Just like earlier, ensure the LFS environment variable is set up properly
|
---|
[4e62907] | 11 | by running <userinput>echo $LFS</userinput> and ensuring it shows the path to
|
---|
| 12 | your LFS partition's mount point, which is
|
---|
[e4df1fc] | 13 | <filename class="directory">/mnt/lfs</filename> if you followed our
|
---|
| 14 | example.</para>
|
---|
| 15 |
|
---|
[44c2fd8] | 16 | <para>Become <emphasis>root</emphasis> and run the following command
|
---|
[2c094d6] | 17 | to enter the chroot environment:</para>
|
---|
[44c2fd8] | 18 |
|
---|
[21ba4e3] | 19 | <screen><userinput>chroot $LFS /tools/bin/env -i \
|
---|
[44c2fd8] | 20 | HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
|
---|
[148bb04] | 21 | PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
|
---|
[21ba4e3] | 22 | /tools/bin/bash --login</userinput></screen>
|
---|
[44c2fd8] | 23 |
|
---|
| 24 | <para>The <userinput>-i</userinput> option given to the
|
---|
[2c094d6] | 25 | <userinput>env</userinput> command will clear all variables of the chroot
|
---|
[44c2fd8] | 26 | environment. After that, only the HOME, TERM, PS1 and PATH variables are
|
---|
| 27 | set again. The TERM=$TERM construct will set the TERM variable inside chroot
|
---|
| 28 | to the same value as outside chroot; this variable is needed for programs
|
---|
[360e2c4] | 29 | like <userinput>vim</userinput> and <userinput>less</userinput> to operate
|
---|
| 30 | properly. If you need other variables present, such as CFLAGS or CXXFLAGS,
|
---|
| 31 | this is a good place to set them again.</para>
|
---|
[e2bd9bf] | 32 |
|
---|
[a07854b] | 33 | <para>From this point on there's no need to use the LFS variable anymore,
|
---|
[44c2fd8] | 34 | because everything you do will be restricted to the LFS file system -- since
|
---|
| 35 | what the shell thinks is <filename class="directory">/</filename> is actually
|
---|
[7fcde5c] | 36 | the value of <filename class="directory">$LFS</filename>, which was passed to
|
---|
| 37 | the chroot command.</para>
|
---|
[44c2fd8] | 38 |
|
---|
[c1a2afc] | 39 | <para>Notice that <filename class="directory">/tools/bin</filename> comes
|
---|
[28618789] | 40 | last in the PATH. This means that a temporary tool will not be used any more
|
---|
| 41 | as soon as its final version is installed. Well, at least when the shell
|
---|
| 42 | doesn't remember the locations of executed binaries -- for this reason hashing
|
---|
| 43 | is switched off a bit further on.</para>
|
---|
| 44 |
|
---|
[44c2fd8] | 45 | <para>You have to make sure all the commands in the rest of this chapter and
|
---|
[2c094d6] | 46 | in the following chapters are run from within the chroot environment.
|
---|
[44c2fd8] | 47 | If you ever leave this environment for any reason (rebooting for example),
|
---|
[1ea50a5] | 48 | you must remember to again enter chroot and mount the proc and devpts
|
---|
| 49 | filesystems (discussed later) before continuing with the installations.</para>
|
---|
[44c2fd8] | 50 |
|
---|
| 51 | <para>Note that the bash prompt will say "I have no name!" This is
|
---|
[c94dd38] | 52 | normal, as the <filename>/etc/passwd</filename> file has not been
|
---|
| 53 | created yet.</para>
|
---|
[7e37742] | 54 |
|
---|
[6370fa6] | 55 | </sect1>
|
---|
[44c2fd8] | 56 |
|
---|