Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • chapter07/chroot.xml

    r490dc153 ra08f031  
    77
    88<sect1 id="ch-tools-chroot">
    9   <?dbhtml filename="chroot.html"?>
     9  <?dbhtml filename="env.html"?>
    1010
    11   <title>Entering the Chroot Environment</title>
     11  <title>Setting up the Environment</title>
    1212
    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>
     13    <para>The current shell is also the <command>init</command> process,
     14    so exiting from it will cause kernel panic.  Prevent exiting from the
     15    shell accidentally:</para>
    2016
    21 <screen role="nodump"><userinput>chroot "$LFS" /usr/bin/env -i   \
     17<screen role="nodump"><userinput>enable -n exit
     18readonly IGNOREEOF=1000</userinput></screen>
     19
     20    <para>The standard I/O streams of the initial shell process is connected
     21    with <filename>/dev/console</filename>.  However, the testsuite of some
     22    packages may expect the standard I/O streams to be connected with a
     23    <quote>real</quote> TTY device node.  Spawn a new shell process on the
     24    TTY device with <command>agetty</command>:</para>
     25
     26<screen role="nodump"><userinput>agetty -n -l /bin/bash <replaceable>tty0</replaceable></userinput></screen>
     27
     28    <para>If you are working via a serial console, replace
     29    <replaceable>tty0</replaceable> with the name of the serial console
     30    device node, for example <literal>ttyS0</literal>.</para>
     31
     32    <para>The command above spawns a new shell process on the TTY device
     33    specified in the command, and the initial shell process will run in
     34    background as an init process with very limited functions. The new shell
     35    process will output:</para>
     36
     37<screen role="nodump"><computeroutput>bash: cannot set terminal process group (-1): Inappropriate ioctl for device
     38bash: no job control in this shell</computeroutput></screen>
     39
     40    <para>This is normal because the shell is not assigned with a
     41    controlling terminal yet.  Now set up controlling terminal and
     42    environment variables:</para>
     43
     44<screen><userinput>exec setsid -c /usr/bin/env -i  \
    2245    HOME=/root                  \
    2346    TERM="$TERM"                \
    24     PS1='(lfs chroot) \u:\w\$ ' \
     47    PS1='(lfs) \u:\w\$ '        \
    2548    PATH=/usr/bin:/usr/sbin     \
    2649    /bin/bash --login</userinput></screen>
    2750
     51    <para>The command replace the current shell process with a new shell
     52    process, with controlling terminal set up.</para>
     53
    2854  <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
     55  command will clear all variables of the environment. After that, only
    3056  the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and
    3157  <envar>PATH</envar> variables are set again. The
    3258  <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
     59  variable to the default value specified by <command>agetty</command>. This variable is
    3460  needed for programs like <command>vim</command> and <command>less</command>
    3561  to operate properly.  If other variables are desired, such as
     
    3763  them again.</para>
    3864
    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>
    44 
    4565  <para>Notice that <filename class="directory">/tools/bin</filename> is not
    4666  in the <envar>PATH</envar>. This means that the cross toolchain will no longer be
    47   used in the chroot environment.</para>
     67  used on the target machine.</para>
    4868
    4969  <para>Note that the <command>bash</command> prompt will say
     
    5171  <filename>/etc/passwd</filename> file has not been created yet.</para>
    5272
     73  <para>Now set up a temporary hostname, which is required by test suite of
     74  some packages:</para>
     75
     76<screen><userinput>hostname lfs</userinput></screen>
     77
    5378  <note>
    5479    <para>It is important that all the commands throughout the remainder of this
    55     chapter and the following chapters are run from within the chroot
    56     environment. If you leave this environment for any reason (rebooting for
     80    chapter and the following chapters are run from within the environment
     81    we've set. If you leave this environment for any reason (rebooting for
    5782    example), ensure that the virtual kernel filesystems are mounted as
    58     explained in <xref linkend="ch-tools-bindmount"/> and <xref
    59     linkend="ch-tools-kernfsmount"/> and enter chroot again before continuing
    60     with the installation.</para>
     83    explained in <xref linkend="ch-tools-kernfsmount"/> and
     84    <xref linkend="ch-tools-devadjust"/> and set up the environment again before
     85    continuing with the installation.</para>
    6186  </note>
    6287
Note: See TracChangeset for help on using the changeset viewer.