Changes in / [985d253:af944eb]


Ignore:
Files:
6 deleted
31 edited

Legend:

Unmodified
Added
Removed
  • chapter01/how.xml

    r985d253 raf944eb  
    99  <?dbhtml filename="how.html"?>
    1010
    11   <title>How to Cross Build an LFS System</title>
     11  <title>How to Build an LFS System</title>
    1212
    1313  <para>The LFS system will be built by using an already installed
    14   UNIX-like system (such as Debian Linux or Mac OS X). This
    15   existing UNIX-like system (the host) will be used as a starting point to
     14  Linux distribution (such as Debian, OpenMandriva, Fedora, or openSUSE). This
     15  existing Linux system (the host) will be used as a starting point to
    1616  provide necessary programs, including a compiler, linker, and shell,
    1717  to build the new system. Select the <quote>development</quote> option
     
    5454  cross-compile basic utilities using the just built cross-toolchain.</para>
    5555
    56   <para><xref linkend="chapter-chroot-temporary-tools"/> then boots the
    57   minimal Linux environment on the target machine,
    58   where we use the new tools to build all
    59   the rest of the tools needed to create the LFS system.
    60   Note that in the book the minimal Linux environment may be
    61   referred as <quote>chroot environment</quote> only to keep the consistency
    62   with the original LFS book.</para>
     56  <para><xref linkend="chapter-chroot-temporary-tools"/> then enters a
     57  "chroot" environment, where we use the new tools to build all
     58  the rest of the tools needed to create the LFS system.</para>
    6359
    6460  <para>This effort to isolate the new system from the host distribution may
     
    6763
    6864  <para>In <xref linkend="chapter-building-system"/> the
    69   full LFS system is built.</para>
     65  full-blown LFS system is built. Another advantage provided by the chroot
     66  environment is that it allows you to continue using the host system
     67  while LFS is being built. While waiting for package compilations to
     68  complete, you can continue using your computer as usual.</para>
    7069
    7170  <para>To finish the installation, the basic system configuration is set up in
  • chapter02/aboutlfs.xml

    r985d253 raf944eb  
    1515  throughout the LFS build process. It should be set to the name of the
    1616  directory where you will be building your LFS system - we will use
    17   <filename class="directory">/mnt/lfs</filename> as an example, but the
    18   choose any directory name you want. Choose a directory location and set the
    19   variable with the following command:</para>
     17  <filename class="directory">/mnt/lfs</filename> as an example, but you may
     18  choose any directory name you want. If you are building LFS on a separate
     19  partition, this directory will be the mount point for the partition.
     20  Choose a directory location and set the variable with the
     21  following command:</para>
    2022
    2123<screen role="nodump"><userinput>export LFS=<replaceable>/mnt/lfs</replaceable></userinput></screen>
     
    2628  <quote>/mnt/lfs</quote> (or whatever value the variable was set to) when it
    2729  processes the command line.</para>
    28 
    29   <para>Create the directory:</para>
    30 
    31 <screen role="nodump"><userinput>mkdir -pv $LFS</userinput></screen>
    32 
    33   <para>If you don't have much space in the partition holding the directory,
    34   you can mount another partition on it.</para>
    3530
    3631  <caution>
  • chapter02/chapter02.xml

    r985d253 raf944eb  
    1515  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hostreqs.xml"/>
    1616  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="stages.xml"/>
     17  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="creatingpartition.xml"/>
     18  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="creatingfilesystem.xml"/>
    1719  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="aboutlfs.xml"/>
     20  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mounting.xml"/>
    1821
    1922</chapter>
  • chapter02/hostreqs.xml

    r985d253 raf944eb  
    3636
    3737    <listitem>
    38       <!-- needed to cross build the kernel in chapter 6 -->
    39       <para><emphasis role="strong">Bc-1.07.0</emphasis></para>
    40     </listitem>
    41 
    42     <listitem>
    4338      <para><emphasis role="strong">Bison-2.7</emphasis> (/usr/bin/yacc
    4439      should be a link to bison or a small script that executes bison)</para>
     
    7671    <listitem>
    7772      <para><emphasis role="strong">Gzip-1.3.12</emphasis></para>
     73    </listitem>
     74
     75    <listitem>
     76      <para><emphasis role="strong">Linux Kernel-&min-kernel;</emphasis></para>
     77
     78      <para>The reason for the kernel version requirement is that we specify
     79      that version when building <application>glibc</application> in
     80      <xref linkend="chapter-cross-tools"/> and
     81      <xref linkend="chapter-building-system"/>,
     82      at the recommendation of the developers.  It is also required by
     83      udev.</para>
     84
     85      <para>If the host kernel is earlier than &min-kernel; you will need to replace
     86      the kernel with a more up-to-date version. There are two ways
     87      you can go about this. First, see if your Linux vendor provides a &min-kernel;
     88      or later kernel package. If so, you may wish to install it. If your
     89      vendor doesn't offer an acceptable kernel package, or you would prefer not to
     90      install it, you can compile a kernel yourself. Instructions for
     91      compiling the kernel and configuring the boot loader (assuming the host
     92      uses GRUB) are located in <xref linkend="chapter-bootable"/>.</para>
     93
    7894    </listitem>
    7995
     
    145161unset MYSH
    146162
    147 bc --version | head -n1
    148163echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
    149164bison --version | head -n1
  • chapter02/stages.xml

    r985d253 raf944eb  
    6565    <itemizedlist>
    6666      <listitem>
    67         <para>You must boot the temporary system on the target machine.</para>
     67         <para>The /mnt/lfs partition must be mounted.</para>
    6868      </listitem>
    6969
    7070      <listitem>
    71         <para>A few operations, from
    72         <quote>Preparing Virtual Kernel File Systems</quote> to
    73         <quote>Setting up Environment</quote>, must be done.</para>
     71        <para>A few operations, from <quote>Changing Ownership</quote> to
     72        <quote>Entering the Chroot Environment</quote>, must be done as the
     73        <systemitem class="username">root</systemitem> user, with the LFS
     74        environment variable set for the &root; user.</para>
    7475      </listitem>
    7576
    7677      <listitem>
    77         <para>The operations in <xref linkend="ch-tools-lo"/> must be done
    78         before starting or continuing from
    79         <xref linkend="chapter-building-system"/>.</para>
     78         <para> When entering chroot, the LFS environment variable must be set
     79         for <systemitem class="username">root</systemitem>. The LFS
     80         variable is not used after the chroot environment has been entered.</para>
    8081      </listitem>
    8182
     83      <listitem>
     84         <para> The virtual file systems must be mounted.  This can be done
     85         before or after entering chroot by changing to a host virtual terminal
     86         and, as <systemitem class="username">root</systemitem>, running the
     87         commands in
     88         <xref linkend='ch-tools-bindmount'/> and
     89         <xref linkend='ch-tools-kernfsmount'/>.</para>
     90      </listitem>
    8291    </itemizedlist>
    8392  </sect2>
  • chapter04/aboutsbus.xml

    r985d253 raf944eb  
    3838
    3939  <note>
    40     <para>In the cross edition, the SBUs are kept same as the original LFS
    41     book.  They should only be considered as a reference. It obviously does
    42     not make sense to predict the building time in Chapter 7 or 8 with
    43     <quote>1 SBU</quote> measured in Chapter 5, as the target machine and
    44     the machine running the host distro may be completely different.</para>
    45   </note>
    46 
    47   <note>
    4840    <para>For many modern systems with multiple processors (or cores) the
    4941    compilation time for a package can be reduced by performing a "parallel
  • chapter04/addinguser.xml

    r985d253 raf944eb  
    8181  <systemitem class="username">lfs</systemitem> the owner:</para>
    8282
    83 <screen><userinput>chown -v lfs $LFS/{usr{,/*},lib*,boot,var,etc,bin,sbin,tools}</userinput></screen>
     83<screen><userinput>chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools}
     84case $(uname -m) in
     85  x86_64) chown -v lfs $LFS/lib64 ;;
     86esac</userinput></screen>
    8487
    8588<note><para>In some host systems, the following <command>su</command> command does not complete
  • chapter04/creatingminlayout.xml

    r985d253 raf944eb  
    2222  <systemitem class="username">root</systemitem>:</para>
    2323
    24 <screen><userinput>mkdir -pv $LFS/{boot,etc,var} $LFS/usr/{bin,lib,sbin}
     24<screen><userinput>mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
    2525
    2626for i in bin lib sbin; do
    2727  ln -sv usr/$i $LFS/$i
    28 done</userinput></screen>
     28done
    2929
    30   <para>Some targets (for example, x86_64) needs
    31   <filename class="directory">/lib64</filename> directory.  If you are
    32   building for one of those targets, create it as
    33   <systemitem class="username">root</systemitem>:</para>
    34 
    35 <screen><userinput>mkdir -pv $LFS/lib64</userinput></screen>
     30case $(uname -m) in
     31  x86_64) mkdir -pv $LFS/lib64 ;;
     32esac</userinput></screen>
    3633
    3734  <para>Programs in <xref linkend="chapter-temporary-tools"/> will be compiled
  • chapter04/settingenviron.xml

    r985d253 raf944eb  
    4444LFS=/mnt/lfs
    4545LC_ALL=POSIX
    46 LFS_TGT=<replaceable>x86_64</replaceable>-lfs-linux-gnu
     46LFS_TGT=$(uname -m)-lfs-linux-gnu
    4747PATH=/usr/bin
    4848if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
     
    105105
    106106    <varlistentry>
    107       <term><parameter>LFS_TGT=<replaceable>x86_64</replaceable>-lfs-linux-gnu</parameter></term>
     107      <term><parameter>LFS_TGT=(uname -m)-lfs-linux-gnu</parameter></term>
    108108      <listitem>
    109109  <para>The <envar>LFS_TGT</envar> variable sets a non-default, but compatible machine
    110110  description for use when building our cross-compiler and linker and when
    111111  cross-compiling our temporary toolchain. More information is provided by
    112   <xref linkend="ch-tools-toolchaintechnotes" role=""/>.
    113   If you are not building for 64-bit x86, replace
    114   <replaceable>x86_64</replaceable> with some value suitable for your target
    115   machine, for example <literal>i686</literal> for 32-bit x86.</para>
     112  <xref linkend="ch-tools-toolchaintechnotes" role=""/>.</para>
    116113      </listitem>
    117114    </varlistentry>
  • chapter05/gcc-pass1.xml

    r985d253 raf944eb  
    6363mv -v mpc-&mpc-version; mpc</userinput></screen>
    6464
    65     <para>For x86_64 target, set the default directory name for
    66     64-bit libraries to <quote>lib</quote>.  The command is unnecessary,
    67     but harmless for 32-bit x86.  If you are building for another target,
    68     you may need to adjust the command for your target.</para>
    69 
    70 <screen><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
    71     -i.orig gcc/config/i386/t-linux64</userinput></screen>
     65    <para>On x86_64 hosts, set the default directory name for
     66    64-bit libraries to <quote>lib</quote>:</para>
     67
     68<screen><userinput remap="pre">case $(uname -m) in
     69  x86_64)
     70    sed -e '/m64=/s/lib64/lib/' \
     71        -i.orig gcc/config/i386/t-linux64
     72 ;;
     73esac</userinput></screen>
    7274
    7375    <para>The GCC documentation recommends building GCC
  • chapter05/glibc.xml

    r985d253 raf944eb  
    4646    <para>First, create a symbolic link for LSB compliance. Additionally,
    4747    for x86_64, create a compatibility symbolic link required for proper
    48     operation of the dynamic library loader.  It's needed to adjust the
    49     command if you are building LFS for a target other than 32-bit or
    50     64-bit x86.</para>
    51 
    52 <screen><userinput remap="pre">case $LFS_TGT in
    53     i?86*)   ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
     48    operation of the dynamic library loader:</para>
     49
     50<screen><userinput remap="pre">case $(uname -m) in
     51    i?86)   ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
    5452    ;;
    55     x86_64*) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
    56              ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
     53    x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
     54            ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
    5755    ;;
    5856esac</userinput></screen>
     
    9795      --host=$LFS_TGT                    \
    9896      --build=$(../scripts/config.guess) \
    99       --enable-kernel=&linux-major-version;.&linux-minor-version;               \
     97      --enable-kernel=&min-kernel;                \
    10098      --with-headers=$LFS/usr/include    \
    10199      libc_cv_slibdir=/usr/lib</userinput></screen>
     
    114112
    115113      <varlistentry>
    116         <term><parameter>--enable-kernel=&linux-major-version;.&linux-minor-version;</parameter></term>
    117         <listitem>
    118           <para>This option tells the build system that this glibc may
    119           be used with kernels as old as
    120           &linux-major-version;.&linux-minor-version;. This means generating
    121           workarounds in case a system call introduced in a later version
    122           cannot be used.</para>
     114        <term><parameter>--enable-kernel=&min-kernel;</parameter></term>
     115        <listitem>
     116          <para>This tells Glibc to compile the library with support
     117          for &min-kernel; and later Linux kernels.  Workarounds for older
     118          kernels are not enabled.</para>
    123119        </listitem>
    124120      </varlistentry>
  • chapter05/linux-headers.xml

    r985d253 raf944eb  
    5757    be available. The headers are first placed in
    5858    <filename class="directory">./usr</filename>, then copied to the needed
    59     location.  Replace <replaceable>x86</replaceable> with a value suitable
    60     for your target machine if it's not a 32-bit or 64-bit x86:</para>
    61 
    62 <screen><userinput remap="make">make headers ARCH=<replaceable>x86</replaceable>
     59    location.</para>
     60
     61<screen><userinput remap="make">make headers
    6362find usr/include -type f ! -name '*.h' -delete
    6463</userinput><userinput remap="install">cp -rv usr/include $LFS/usr</userinput></screen>
  • chapter06/chapter06.xml

    r985d253 raf944eb  
    3232  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gcc-pass2.xml"/>
    3333
    34   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="util-linux.xml"/>
    35   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="grub.xml"/>
    36   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="kernel.xml"/>
    37   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="grub-cfg.xml"/>
    38 
    3934</chapter>
  • chapter06/gcc-pass2.xml

    r985d253 raf944eb  
    5858mv -v mpc-&mpc-version; mpc</userinput></screen>
    5959
    60     <para>For x86_64 target, set the default directory name for
    61     64-bit libraries to <quote>lib</quote>.  The command is unnecessary,
    62     but harmless for 32-bit x86.  If you are building for another target,
    63     you may need to adjust the command for your target.</para>
     60    <para>If building on x86_64, change the default directory name for 64-bit
     61    libraries to <quote>lib</quote>:</para>
    6462
    65 <screen><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
    66     -i.orig gcc/config/i386/t-linux64</userinput></screen>
     63<screen><userinput remap="pre">case $(uname -m) in
     64  x86_64)
     65    sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
     66  ;;
     67esac</userinput></screen>
    6768
    6869    <para>Override the building rule of libgcc and libstdc++ headers, to
  • chapter07/chapter07.xml

    r985d253 raf944eb  
    1010  <?dbhtml filename="chapter07.html"?>
    1111
    12   <title>Booting the Target System and Building Additional Temporary Tools</title>
     12  <title>Entering Chroot and Building Additional Temporary Tools</title>
    1313
    1414  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
    15   <!--xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="changingowner.xml"/-->
     15  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="changingowner.xml"/>
    1616  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="kernfs.xml"/>
    1717  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="chroot.xml"/>
     
    2424  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="texinfo.xml"/>
    2525  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="util-linux.xml"/>
    26   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="iproute2.xml"/>
    2726
    2827<!--
  • chapter07/chroot.xml

    r985d253 raf944eb  
    77
    88<sect1 id="ch-tools-chroot">
    9   <?dbhtml filename="env.html"?>
     9  <?dbhtml filename="chroot.html"?>
    1010
    11   <title>Setting up the Environment</title>
     11  <title>Entering the Chroot Environment</title>
    1212
    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>
     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 and
     15  finish installing the temporary tools. This environment will also be
     16  used to install 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 nothing but temporary
     19  tools:</para>
    1620
    17 <screen role="nodump"><userinput>enable -n exit
    18 readonly 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
    38 bash: 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  \
     21<screen role="nodump"><userinput>chroot "$LFS" /usr/bin/env -i   \
    4522    HOME=/root                  \
    4623    TERM="$TERM"                \
    47     PS1='(lfs) \u:\w\$ '        \
     24    PS1='(lfs chroot) \u:\w\$ ' \
    4825    PATH=/usr/bin:/usr/sbin     \
    4926    /bin/bash --login</userinput></screen>
    5027
    51     <para>The command replace the current shell process with a new shell
    52     process, with controlling terminal set up.</para>
    53 
    5428  <para>The <parameter>-i</parameter> option given to the <command>env</command>
    55   command will clear all the variables in the environment. After that, only
     29  command will clear all the variables in the chroot environment. After that, only
    5630  the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and
    5731  <envar>PATH</envar> variables are set again. The
    58   <parameter>TERM=$TERM</parameter> construct will set the <envar>TERM</envar>
    59   variable to the default value specified by <command>agetty</command>. This variable is
     32  <parameter>TERM=$TERM</parameter> construct sets the <envar>TERM</envar>
     33  variable inside chroot to the same value as outside chroot. This variable is
    6034  needed so programs like <command>vim</command> and <command>less</command>
    6135  can operate properly.  If other variables are desired, such as
    6236  <envar>CFLAGS</envar> or <envar>CXXFLAGS</envar>, this is a good place to set
    6337  them.</para>
     38
     39  <para>From this point on, there is no need to use the
     40  <envar>LFS</envar> variable any more because all work will be restricted
     41  to the LFS file system; the <command>chroot</command> command runs the
     42  Bash shell with the root
     43  (<filename class="directory">/</filename>) directory set to
     44  <filename class='directory'>$LFS</filename>.</para>
    6445
    6546  <para>Notice that <filename class="directory">/tools/bin</filename> is not
     
    7152  <filename>/etc/passwd</filename> file has not been created yet.</para>
    7253
    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 
    7854  <note>
    7955    <para>It is important that all the commands throughout the remainder of this
    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
     56    chapter and the following chapters are run from within the chroot
     57    environment. If you leave this environment for any reason (rebooting for
    8258    example), ensure that the virtual kernel filesystems are mounted as
    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>
     59    explained in <xref linkend="ch-tools-bindmount"/> and <xref
     60    linkend="ch-tools-kernfsmount"/> and enter chroot again before continuing
     61    with the installation.</para>
    8662  </note>
    8763
  • chapter07/cleanup.xml

    r985d253 raf944eb  
    5858
    5959    <para>
    60        If you are making a backup, mount the partition for backup:
     60      The following steps are performed from outside the chroot
     61      environment. That means you have to leave the chroot environment
     62      first before continuing. The reason for that is to
     63      get access to file system locations outside of the chroot
     64      environment to store/read the backup archive, which ought
     65      not be placed within the
     66      <filename class="directory">$LFS</filename> hierarchy.
    6167    </para>
    6268
    63 <screen role="nodump"><userinput>mount -v /dev/sda<replaceable>4</replaceable> /mnt</userinput></screen>
     69    <para>
     70       If you have decided to make a backup, leave the chroot environment:
     71    </para>
     72
     73<screen role="nodump"><userinput>exit</userinput></screen>
     74
     75    <important>
     76      <para>
     77        All of the following instructions are executed by
     78        <systemitem class="username">root</systemitem> on your host system.
     79        Take extra care about the commands you're going to run as mistakes
     80        made here can modify your host system. Be aware that the
     81        environment variable <envar>LFS</envar>
     82        is set for user <systemitem class="username">lfs</systemitem> by default
     83        but may <emphasis>not</emphasis> be set for
     84        <systemitem class="username">root</systemitem>.
     85     </para>
     86     <para>
     87        Whenever commands are to be executed by <systemitem class="username">root</systemitem>,
     88        make sure you have set <envar>LFS</envar>.
     89     </para>
     90     <para>
     91        This has been discussed in <xref linkend='ch-partitioning-aboutlfs'/>.
     92      </para>
     93    </important>
     94
     95    <para>Before making a backup, unmount the virtual file systems:</para>
     96
     97<screen role="nodump"><userinput>mountpoint -q $LFS/dev/shm &amp;&amp; umount $LFS/dev/shm
     98umount $LFS/dev/pts
     99umount $LFS/{sys,proc,run,dev}</userinput></screen>
    64100
    65101    <para>
    66102      Make sure you have at least 1 GB free disk space (the source tarballs
    67       will be included in the backup archive) in the partition prepared for
    68       backup.
     103      will be included in the backup archive) on the file system containing
     104      the directory where you create the backup archive.
    69105    </para>
    70106
     
    89125    </note>
    90126
    91 <screen role="nodump"><userinput>cd /
    92 tar -cJpf /mnt/lfs-temp-tools-&version;.tar.xz . \
    93     --exclude="dev/*" --exclude="proc/*"
    94     --exclude="sys/*" --exclude="run/*"
    95     --exclude="mnt/*"</userinput></screen>
     127<screen role="nodump"><userinput>cd $LFS
     128tar -cJpf $HOME/lfs-temp-tools-&version;.tar.xz .</userinput></screen>
    96129
    97     <para>Unmount the partition containing the backup:</para>
    98 
    99 <screen role="nodump"><userinput>umount /mnt</userinput></screen>
     130    <note>
     131      <para>
     132        If continuing to chapter 8, don't forget to reenter the chroot
     133        environment as explained in the <quote>Important</quote> box below.
     134      </para>
     135    </note>
    100136
    101137  </sect2>
     
    107143      In case some mistakes have been made and you need to start over, you can
    108144      use this backup to restore the system and save some recovery time.
    109       Since the sources are included in the
    110       backup archive as well, so they do not need to be downloaded again.
     145      Since the sources are located under
     146      <filename class="directory">$LFS</filename>, they are included in the
     147      backup archive as well, so they do not need to be downloaded again. After
     148      checking that <envar>$LFS</envar> is set properly, you can
     149      restore the backup by executing the following commands:
    111150    </para>
    112 
    113     <warning><para>
    114       Power off the target system and reconnect the disk containing LFS
    115       temporary system to the host for restoring the backup.  It's necessary
    116       to avoid overwriting some binaries being used.  Because the package
    117       providing <command>shutdown</command> command is not built yet, the
    118       system can't be shut down cleanly.  Issue <command>sync</command> to
    119       ensure all filesystem writes cached in memory to be really written
    120       into the disk, then power off the system physically (for example,
    121       unplug the AC cord).
    122     </para></warning>
    123 
    124     <para>Mount the LFS partition and the backup partition on
    125     <emphasis role="bold">the host system</emphasis>:</para>
    126151
    127152<!-- Make the following look different so users don't blindly run the
    128153     restore when they don't need to. -->
    129154
    130 <screen role="nodump"><computeroutput>mkdir -pv /mnt/lfs-{target,backup}
    131 mount -v -t ext4 <replaceable>/dev/sdx</replaceable>3 /mnt/lfs-target
    132 mount -v -t ext4 <replaceable>/dev/sdx4</replaceable> /mnt/lfs-backup</computeroutput></screen>
    133 
    134 
    135155    <warning><para>The following commands are extremely dangerous.  If
    136156    you run <command>rm -rf ./*</command> as the &root; user and you
    137     do not change to the <filename>lfs-target</filename> directory,
    138     it will destroy your entire host system.
    139     YOU ARE WARNED.</para></warning>
     157    do not change to the $LFS directory or the <envar>LFS</envar>
     158    environment variable is not set for the &root; user, it will destroy
     159    your entire host system.  YOU ARE WARNED.</para></warning>
    140160
    141 <screen role="nodump"><computeroutput>cd /mnt/lfs-target
     161<screen role="nodump"><computeroutput>cd $LFS
    142162rm -rf ./*
    143 tar -xpf /mnt/lfs-backup/lfs-temp-tools-&version;.tar.xz</computeroutput></screen>
     163tar -xpf $HOME/lfs-temp-tools-&version;.tar.xz</computeroutput></screen>
    144164
    145165    <para>
    146        Again, unmount the two partitions, reconnect the device to the target
    147        machine, boot it and continue building the rest of system:
     166       Again, double check that the environment has been set up properly
     167       and continue building the rest of the system.
    148168    </para>
    149 
    150 <screen role="nodump"><computeroutput>umount /mnt/lfs-{target,backup}</computeroutput></screen>
    151169
    152170    <important>
    153171      <para>
    154          If you reboot your target machine and restart
    155          building using a restore, remount the virtual filesystems now as
    156          described in <xref linkend='ch-tools-kernfs'/> and re-enter the build
     172         If you left the chroot environment to create a backup or restart
     173         building using a restore, remember to check that the virtual
     174         file systems are still mounted (<command>findmnt | grep
     175         $LFS</command>).  If they are not mounted, remount them now as
     176         described in <xref linkend='ch-tools-kernfs'/> and re-enter the chroot
    157177         environment (see <xref linkend='ch-tools-chroot'/>) before continuing.
    158178       </para>
  • chapter07/introduction.xml

    r985d253 raf944eb  
    1111  <title>Introduction</title>
    1212
    13   <warning>
    14     <para>Please make sure the temporary system is already booted on the
    15     target machine.  All commands in this chapter and the following chapters
    16     should be executed on the target machine instead of the host distro,
    17     unless the book explicitly says a command is for the host.  Running a
    18     command for the temporary system on the host can completely destroy the
    19     host distro.</para>
    20   </warning>
    21 
    2213  <para>This chapter shows how to build the last missing bits of the temporary
    2314  system: the tools needed to build the various packages.  Now
    24   that all circular dependencies have been resolved and the temporary system
    25   is already bootable, we can boot it on the target machine and it would be
    26   completely isolated from the host operating system.  Then we can continue
    27   to build on the target machine.</para>
     15  that all circular dependencies have been resolved, a <quote>chroot</quote>
     16  environment, completely isolated from the host operating system (except for
     17  the running kernel), can be used for the build.</para>
    2818
    29   <para>For proper operation of the temporary system, some communication
    30   with the running kernel must be established. This is done through the
     19  <para>For proper operation of the isolated environment, some communication
     20  with the running kernel must be established. This is done via the
    3121  so-called <emphasis>Virtual Kernel File Systems</emphasis>, which will be
    32   mounted as soon as possible after boot. You may want to check
    33   that they are mounted by issuing <command>mount</command>.</para>
     22  mounted before entering the chroot environment. You may want to verify
     23  that they are mounted by issuing the <command>findmnt</command> command.</para>
    3424
    35   <para>All commands in this and following chapters are run as &root; on the
    36   target system, fortunately without access to the host system.
    37   Be careful anyway, as if the storage devices of your target system already
    38   contain some important data, it's possible to destroy them with bad
    39   commands.</para>
     25  <para>Until <xref linkend="ch-tools-chroot"/>, the commands must be
     26  run as <systemitem class="username">root</systemitem>, with the
     27  <envar>LFS</envar> variable set. After entering chroot, all commands
     28  are run as &root;, fortunately without access to the OS of the computer
     29  you built LFS on. Be careful anyway, as it is easy to destroy the whole
     30  LFS system with bad commands.</para>
    4031
    4132</sect1>
  • chapter07/kernfs.xml

    r985d253 raf944eb  
    1919    with the kernel itself. These file systems are virtual: no disk
    2020    space is used for them. The content of these file systems resides in
    21     memory.</para>
     21    memory. These file systems must be mounted in the $LFS directory tree
     22    so the applications can find them in the chroot environment.</para>
    2223
    2324    <para>Begin by creating the directories on which these virtual file systems will be
    2425    mounted:</para>
    2526
    26 <screen><userinput>mkdir -pv /{proc,sys,run}</userinput></screen>
     27<screen><userinput>mkdir -pv $LFS/{dev,proc,sys,run}</userinput></screen>
     28
     29  <sect2 id="ch-tools-bindmount">
     30    <title>Mounting and Populating /dev</title>
     31
     32      <para>During a normal boot of an LFS system, the kernel automatically
     33      mounts the <systemitem class="filesystem">devtmpfs</systemitem>
     34      file system on the
     35      <filename class="directory">/dev</filename> directory; the kernel
     36      creates device nodes on that virtual file system during the boot process,
     37      or when a device is first detected or accessed. The udev daemon may
     38      change the ownership or permissions of the device nodes created by the
     39      kernel, and create new device nodes or symlinks, to ease the work of
     40      distro maintainers and system administrators.  (See
     41      <xref linkend='ch-config-udev-device-node-creation'/> for details.)
     42      If the host kernel supports &devtmpfs;, we can simply mount a
     43      &devtmpfs; at <filename class='directory'>$LFS/dev</filename> and rely
     44      on the kernel to populate it.</para>
     45
     46      <para>But some host kernels lack &devtmpfs; support; these
     47      host distros use different methods to create the content of
     48      <filename class="directory">/dev</filename>.
     49      So the only host-agnostic way to populate the
     50      <filename class="directory">$LFS/dev</filename> directory is
     51      by bind mounting the host system's
     52      <filename class="directory">/dev</filename> directory. A bind mount is
     53      a special type of mount that makes a directory subtree or a file
     54      visible at some other location. Use the following
     55      command to do this.</para>
     56
     57<screen><userinput>mount -v --bind /dev $LFS/dev</userinput></screen>
     58
     59  </sect2>
    2760
    2861  <sect2 id="ch-tools-kernfsmount">
    2962    <title>Mounting Virtual Kernel File Systems</title>
    3063
    31     <para>The kernel has already mounted
    32     <systemitem class="filesystem">devtmpfs</systemitem>.
    33     Mount the remaining virtual kernel file systems:</para>
     64      <para>Now mount the remaining virtual kernel file systems:</para>
    3465
    35 <screen><userinput>mkdir -pv /dev/{pts,shm}
    36 mount -vt devpts /dev/pts /dev/pts -o gid=5,mode=620
    37 mount -vt proc  proc  /proc
    38 mount -vt sysfs sysfs /sys
    39 mount -vt tmpfs tmpfs /run
    40 mount -vt tmpfs tmpfs /dev/shm -o nosuid,nodev</userinput></screen>
    41 
     66<screen><userinput>mount -v --bind /dev/pts $LFS/dev/pts
     67mount -vt proc proc $LFS/proc
     68mount -vt sysfs sysfs $LFS/sys
     69mount -vt tmpfs tmpfs $LFS/run</userinput></screen>
     70<!--
    4271    <variablelist>
    4372      <title>The meaning of the mount options for devpts:</title>
     
    6796
    6897    </variablelist>
     98-->
     99      <para>In some host systems, <filename>/dev/shm</filename> is a
     100      symbolic link to <filename class="directory">/run/shm</filename>.
     101      The /run tmpfs was mounted above so in this case only a
     102      directory needs to be created.</para>
    69103
    70   </sect2>
     104      <para>In other host systems <filename>/dev/shm</filename> is a mount point
     105      for a tmpfs. In that case the mount of /dev above will only create
     106      /dev/shm as a directory in the chroot environment. In this situation
     107      we must explicitly mount a tmpfs:</para>
    71108
    72   <sect2 id="ch-tools-devadjust">
    73     <title>Adjusting devtmpfs</title>
    74 
    75     <para>Now <systemitem class='filesystem'>proc</systemitem> filesystem
    76     is mounted, we can replace the device nodes for standard I/O streams
    77     with symlinks to pseudo files in
    78     <filename class="directory">/proc/self/fd</filename> (which are symlinks
    79     to the files connected to the standard I/O streams for the current
    80     process).  And, create another symlink recommended by the kernel
    81     documentation.  These are necessary for I/O redirection in the building
    82     system of some packages to function properly:</para>
    83 
    84 <screen><userinput>ln -sfv /proc/self/fd/0 /dev/stdin
    85 ln -sfv /proc/self/fd/1 /dev/stdout
    86 ln -sfv /proc/self/fd/2 /dev/stderr
    87 ln -sv  /proc/self/fd   /dev</userinput></screen>
     109<screen><userinput>if [ -h $LFS/dev/shm ]; then
     110  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
     111else
     112  mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
     113fi</userinput></screen>
    88114
    89115  </sect2>
  • chapter08/coreutils.xml

    r985d253 raf944eb  
    110110    meant to be run as user <systemitem class="username">root</systemitem>:</para>
    111111
    112     <!-- CLFS note: "su -c" to set the supplementary group IDs.
    113          For a normal LFS build, they are already set by 'login' or 'su'.
    114          But for CLFS there is no such tool available at the beginning of
    115          chapter 7.  Currently coreutils is the only package of which the
    116          test suite needs the supplementary GIDs set up.  -->
    117 <screen><userinput remap="test">su -c 'make NON_ROOT_USERNAME=tester check-root'</userinput></screen>
     112<screen><userinput remap="test">make NON_ROOT_USERNAME=tester check-root</userinput></screen>
    118113
    119114    <para>We're going to run the remainder of the tests as the
  • chapter08/gcc.xml

    r985d253 raf944eb  
    5555    <screen><userinput remap="pre">patch -Np1 -i ../&gcc-upstream-fixes-patch;</userinput></screen>
    5656-->
    57 
    58     <para>For x86_64 target, set the default directory name for
    59     64-bit libraries to <quote>lib</quote>.  The command is unnecessary,
    60     but harmless for 32-bit x86.  If you are building for another target,
    61     you may need to adjust the command for your target.</para>
    62 
    63 <screen><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
    64     -i.orig gcc/config/i386/t-linux64</userinput></screen>
     57    <para>If building on x86_64, change the default directory name for 64-bit
     58    libraries to <quote>lib</quote>:</para>
     59
     60<screen><userinput remap="pre">case $(uname -m) in
     61  x86_64)
     62    sed -e '/m64=/s/lib64/lib/' \
     63        -i.orig gcc/config/i386/t-linux64
     64  ;;
     65esac</userinput></screen>
    6566
    6667    <para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
  • chapter08/glibc.xml

    r985d253 raf944eb  
    7272<screen><userinput remap="configure">../configure --prefix=/usr                            \
    7373             --disable-werror                         \
    74              --enable-kernel=&linux-major-version;.&linux-minor-version;                     \
     74             --enable-kernel=&min-kernel;                      \
    7575             --enable-stack-protector=strong          \
    7676             --with-headers=/usr/include              \
     
    8989
    9090      <varlistentry>
    91         <term><parameter>--enable-kernel=&linux-major-version;.&linux-minor-version;</parameter></term>
     91        <term><parameter>--enable-kernel=&min-kernel;</parameter></term>
    9292        <listitem>
    9393          <para>This option tells the build system that this Glibc may
    94           be used with kernels as old as
    95           &linux-major-version;.&linux-minor-version;. This means generating
     94          be used with kernels as old as &min-kernel;. This means generating
    9695          workarounds in case a system call introduced in a later version
    9796          cannot be used.</para>
  • chapter10/fstab.xml

    r985d253 raf944eb  
    2626#                                                              order
    2727
    28 /dev/<replaceable>sda</replaceable>3      /            ext4     defaults            1     1
    29 /dev/<replaceable>sda</replaceable>2      /boot        ext4     defaults            0     2
     28/dev/<replaceable>&lt;xxx&gt;</replaceable>     /            <replaceable>&lt;fff&gt;</replaceable>    defaults            1     1
     29/dev/<replaceable>&lt;yyy&gt;</replaceable>     swap         swap     pri=1               0     0
    3030proc           /proc        proc     nosuid,noexec,nodev 0     0
    3131sysfs          /sys         sysfs    nosuid,noexec,nodev 0     0
     
    4444#                                                              order
    4545
    46 /dev/<replaceable>sda</replaceable>3      /            ext4     defaults            1     1
    47 /dev/<replaceable>sda</replaceable>2      /boot        ext4     defaults            0     2
     46/dev/<replaceable>&lt;xxx&gt;</replaceable>     /            <replaceable>&lt;fff&gt;</replaceable>    defaults            1     1
     47/dev/<replaceable>&lt;yyy&gt;</replaceable>     swap         swap     pri=1               0     0
    4848
    4949# End /etc/fstab</literal>
    5050EOF</userinput></screen>
    5151
    52   <para>Replace <replaceable>sda</replaceable> to the name of the device
    53   node for your disk where LFS is being built.  For details on the six
     52  <para>Replace <replaceable>&lt;xxx&gt;</replaceable>,
     53  <replaceable>&lt;yyy&gt;</replaceable>, and <replaceable>&lt;fff&gt;</replaceable>
     54  with the values appropriate for the system, for example, <filename
     55  class="partition">sda2</filename>, <filename
     56  class="partition">sda5</filename>, and <systemitem
     57  class="filesystem">ext4</systemitem>. For details on the six
    5458  fields in this file, see <command>man 5 fstab</command>.</para>
    5559
  • chapter10/grub.xml

    r985d253 raf944eb  
    7777    is /boot/grub/.</para>
    7878
    79     <para>For the following example, it is assumed that the root
    80     partition is <filename class="partition">sda3</filename>, and the
    81     seperate boot partition is
    82     <filename class="partition">sda2</filename>.  Replace
    83     <replaceable>sda</replaceable> to the name of the device node for your
    84     disk where LFS is being built.</para>
     79    <para>The location of the boot partition is a choice of the user that
     80    affects the configuration.  One recommendation is to have a separate small
     81    (suggested size is 200 MB) partition just for boot information.  That way
     82    each build, whether LFS or some commercial distro, can access the same boot
     83    files and access can be made from any booted system.  If you choose to do
     84    this, you will need to mount the separate partition, move all files in the
     85    current <filename class="directory">/boot</filename> directory (e.g. the
     86    Linux kernel you just built in the previous section) to the new partition.
     87    You will then need to unmount the partition and remount it as <filename
     88    class="directory">/boot</filename>.  If you do this, be sure to update
     89    <filename>/etc/fstab</filename>.</para>
     90
     91    <para>Leaving <filename class="directory">/boot</filename> on
     92    the current LFS partition will also work, but configuration
     93    for multiple systems is more difficult.</para>
     94
     95    <para>Using the above information, determine the appropriate
     96    designator for the root partition (or boot partition, if a separate
     97    one is used). For the following example, it is assumed that the root
     98    (or separate boot) partition is <filename
     99    class="partition">sda2</filename>.</para>
    85100
    86101    <para>Install the GRUB files into <filename
     
    131146
    132147menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
    133         linux   /vmlinuz-&linux-version;-lfs-&version; root=/dev/sda3 ro
     148        linux   /boot/vmlinuz-&linux-version;-lfs-&version; root=/dev/sda2 ro
    134149}</literal>
    135150EOF</userinput></screen>
  • chapter10/kernel.xml

    r985d253 raf944eb  
    336336
    337337    <caution>
    338       <para>As the cross-built LFS system has a separate &boot-dir;
    339       partition, the files copied below should go there. The easiest way to
     338      <para>If you've decided to use a separate &boot-dir; partition for the
     339      LFS system (maybe sharing a &boot-dir; partition with the host
     340      distro) , the files copied below should go there. The easiest way to
    340341      do that is to create the entry for &boot-dir; in &fstab; first (read
    341342      the previous section for details), then issue the following command
    342       as the &root; user:</para>
     343      as the &root; user in the
     344      <emphasis>chroot environment</emphasis>:</para>
    343345
    344346<screen role="nodump"><userinput>mount /boot</userinput></screen>
    345347
    346       <para>We don't need to specify the path to the device node, as it's
    347       already given in <filename>/etc/fstab</filename>.</para>
     348      <para>The path to the device node is omitted in the command because
     349      <command>mount</command> can read it from &fstab;.</para>
    348350    </caution>
    349351
  • chapter11/afterlfs.xml

    r985d253 raf944eb  
    7474
    7575  <sect3>
     76  <title>Work from the LFS host in chroot</title>
     77
     78    <para>
     79      This method provides a complete graphical environment where a full
     80      featured browser and copy/paste capabilities are available. This method
     81      allows using applications like the host's version of wget to download
     82      package sources to a location available when working in the chroot
     83      envirnment.
     84    </para>
     85
     86    <para>
     87       In order to properly build packages in chroot, you will also need to
     88       remember to mount the virtual file systems if they are not already
     89       mounted. One way to do this is to create a script on the
     90       <emphasis role="bold">HOST</emphasis> system:
     91    </para>
     92
     93<screen><command>cat &gt; ~/mount-virt.sh &lt;&lt; "EOF"
     94#!/bin/bash
     95
     96function mountbind
     97{
     98   if ! mountpoint $LFS/$1 >/dev/null; then
     99     $SUDO mount --bind /$1 $LFS/$1
     100     echo $LFS/$1 mounted
     101   else
     102     echo $LFS/$1 already mounted
     103   fi
     104}
     105
     106function mounttype
     107{
     108   if ! mountpoint $LFS/$1 >/dev/null; then
     109     $SUDO mount -t $2 $3 $4 $5 $LFS/$1
     110     echo $LFS/$1 mounted
     111   else
     112     echo $LFS/$1 already mounted
     113   fi
     114}
     115
     116if [ $EUID -ne 0 ]; then
     117  SUDO=sudo
     118else
     119  SUDO=""
     120fi
     121
     122if [ x$LFS == x ]; then
     123  echo "LFS not set"
     124  exit 1
     125fi
     126
     127mountbind dev
     128mounttype dev/pts devpts devpts -o gid=5,mode=620
     129mounttype proc    proc   proc
     130mounttype sys     sysfs  sysfs
     131mounttype run     tmpfs  run
     132if [ -h $LFS/dev/shm ]; then
     133  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
     134else
     135  mounttype dev/shm tmpfs tmpfs -o nosuid,nodev
     136fi
     137
     138#mountbind usr/src
     139#mountbind boot
     140#mountbind home
     141EOF</command></screen>
     142
     143    <para>
     144       Note that the last three commands in the script are commented out. These
     145       are useful if those directories are mounted as separate partitions on the
     146       host system and will be mounted when booting the completed LFS/BLFS system.
     147    </para>
     148
     149    <para>
     150        The script can be run with <command>bash ~/mount-virt.sh</command> as
     151        either a regular user (recommended) or as &root;. If run as a regular
     152        user, sudo is required on the host system.
     153    </para>
     154
     155    <para>
     156        Another issue pointed out by the script is where to store downloaded
     157        package files. This location is arbitrary. It can be in a regular
     158        user's home directory such as ~/sources or in a global location like
     159        /usr/src. Our recommendation is not to mix BLFS sources and LFS sources
     160        in (from the chroot environment) /sources. In any case, the packages
     161        must be accessible inside the chroot environment.
     162    </para>
     163
     164    <para>
     165        A last convenience feature presented here is to streamline the process
     166        of entering the chroot environment. This can be done with an alias
     167        placed in a user's ~/.bashrc file on the host system:
     168    </para>
     169
     170<screen><command>alias lfs='sudo /usr/sbin/chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM="$TERM" PS1="\u:\w\\\\$ "
     171PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login'</command></screen>
     172
     173     <para>
     174       This alias is a little tricky because of the quoting and levels of
     175       backslash characters. It must be all on a single line. The above command
     176       has been split in two for presentation purposes.
     177    </para>
     178
     179  </sect3>
     180
     181  <sect3>
    76182  <title>Work remotely via ssh</title>
    77183
     
    81187        <ulink url="&blfs-book;postlfs/openssh.html">sshd</ulink> and
    82188        <ulink url="&blfs-book;basicnet/wget.html">wget</ulink>
    83        on the LFS system, usually in the LFS command line. It also requires
    84        a second computer.
     189       on the LFS system, usually in chroot. It also requires a second
     190       computer. This method has the advantage of being simple by not requiring
     191       the complexity of the chroot environment. It also uses your LFS built
     192       kernel for all additional packages and still provides a complete system
     193       for installing packages.
    85194    </para>
    86195
     
    99208        <ulink url="&blfs-book;basicnet/links.html">links</ulink>
    100209        (or <ulink url="&blfs-book;basicnet/lynx.html">lynx</ulink>)
    101        after rebooting into the new LFS system.  You may need a removable
    102        stroage device to copy these packages into the target system. At this
     210       in chroot and then rebooting into the new LFS system. At this
    103211       point the default system has six virtual consoles. Switching
    104212       consoles is as easy as using the
  • chapter11/reboot.xml

    r985d253 raf944eb  
    9999
    100100  <para>Now that we have said that, let's move on to booting our shiny new LFS
    101   installation for the first time!</para>
     101  installation for the first time! <emphasis>First exit from the chroot
     102  environment</emphasis>:</para>
    102103
    103   <para>Unmount the boot partition:</para>
     104<screen><userinput>logout</userinput></screen>
     105<!-- We need to show the user the details...-->
    104106
    105 <screen role="nodump"><userinput>umount /boot</userinput></screen>
     107  <para>Then unmount the virtual file systems:</para>
    106108
    107   <para>Synchronize cached writes to prevent data loss on reboot without a
    108   fully functional <command>init</command> process:</para>
     109<screen><userinput>umount -v $LFS/dev/pts
     110mountpoint -q $LFS/dev/shm &amp;&amp; umount $LFS/dev/shm
     111umount -v $LFS/dev
     112umount -v $LFS/run
     113umount -v $LFS/proc
     114umount -v $LFS/sys</userinput></screen>
    109115
    110 <screen role="nodump"><userinput>sync</userinput></screen>
     116  <para>If multiple partitions were created, unmount the other
     117  partitions before unmounting the main one, like this:</para>
    111118
    112   <para>Now, reboot the system:</para>
     119<screen role="nodump"><userinput>umount -v $LFS/home
     120umount -v $LFS</userinput></screen>
    113121
    114 <screen role="nodump"><userinput>reboot -ff</userinput></screen>
     122  <para>Unmount the LFS file system itself:</para>
    115123
    116   <para><parameter>-ff</parameter> option allows to reboot the system
    117   without support from the <command>init</command> process.</para>
     124<screen role="nodump"><userinput>umount -v $LFS</userinput></screen>
     125
     126  <para>Now, reboot the system.</para>
     127
     128<!-- Commented out because we don't have a host system requirement on
     129     its init, and different init system may recommend different commands
     130     for reboot.  -->
     131<!--<screen role="nodump"><userinput>shutdown -r now</userinput></screen>-->
    118132
    119133  <para>Assuming the GRUB boot loader was set up as outlined earlier, the menu
  • git-version.sh

    r985d253 raf944eb  
    5050sha="$(git describe --abbrev=1)"
    5151rev=$(echo "$sha" | sed 's/-g[^-]*$//')
    52 version="cross-$rev"
    53 versiond="cross-$rev-systemd"
     52version="$rev"
     53versiond="$rev-systemd"
    5454
    5555if [ "$(git diff HEAD | wc -l)" != "0" ]; then
  • packages.ent

    r985d253 raf944eb  
    307307<!ENTITY grub-fin-du "159 MB">
    308308<!ENTITY grub-fin-sbu "0.7 SBU">
    309 <!ENTITY grub-tmp-du "158 MB">
    310 <!ENTITY grub-tmp-sbu "0.7 SBU">
    311309
    312310<!ENTITY gzip-version "1.12">
     
    352350<!ENTITY iproute2-fin-du "16 MB">
    353351<!ENTITY iproute2-fin-sbu "0.2 SBU">
    354 <!ENTITY iproute2-tmp-du "15 MB">
    355 <!ENTITY iproute2-tmp-sbu "less than 0.1 SBU">
    356352
    357353<!ENTITY jinja2-version "3.1.2">
     
    441437<!ENTITY linux-knl-du "1200 - 8800 MB (typically about 1700 MB)">
    442438<!ENTITY linux-knl-sbu "1.5 - 130.0 SBU (typically about 12 SBU)">
    443 <!ENTITY linux-tmp-du "1200 MB">
    444 <!ENTITY linux-tmp-sbu "1.5 SBU">
    445439
    446440<!ENTITY linux-headers-tmp-du "1.4 GB">
     
    719713<!ENTITY util-linux-md5 "cd11456f4ddd31f7fbfdd9488c0c0d02">
    720714<!ENTITY util-linux-home "https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/">
    721 
    722715<!ENTITY util-linux-tmp-du "149 MB">
    723716<!ENTITY util-linux-tmp-sbu "0.6 SBU">
    724717<!ENTITY util-linux-fin-du "283 MB">
    725718<!ENTITY util-linux-fin-sbu "1.0 SBU">
    726 <!ENTITY mount-setsid-du "85 MB">
    727 <!ENTITY mount-setsid-sbu "less than 0.1 SBU">
    728719
    729720<!ENTITY vim-version "9.0.1060">
  • prologue/architecture.xml

    r985d253 raf944eb  
    1313<para>The primary target architectures of LFS are the AMD/Intel x86 (32-bit)
    1414and x86_64 (64-bit) CPUs.  On the other hand, the instructions in this book are
    15 also known to work, with some modifications, with the Power PC and ARM
    16 CPUs.</para>
     15also known to work, with some modifications, with the Power PC and ARM CPUs. To
     16build a system that utilizes one of these alternative CPUs, the main prerequisite, in
     17addition to those on the next page, is an existing Linux system such as an
     18earlier LFS installation, Ubuntu, Red Hat/Fedora, SuSE, or some other distribution
     19that targets that architecture. (Note that a 32-bit
     20distribution can be installed and used as a host system on a 64-bit AMD/Intel
     21computer.)</para>
    1722
    1823<para>The gain from building on a 64-bit system, as
  • prologue/preface.xml

    r985d253 raf944eb  
    1616  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="architecture.xml"/>
    1717  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="prerequisites.xml"/>
    18   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="cross.xml"/>
    1918  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="standards.xml"/>
    2019  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="why.xml"/>
Note: See TracChangeset for help on using the changeset viewer.