Adding some markup and doing miscellaneous shuffles.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@3029 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
Alex Gronenwoud 2003-10-22 22:26:46 +00:00
parent 1612f40eb9
commit 360e2c43cd
18 changed files with 79 additions and 71 deletions

View File

@ -99,26 +99,33 @@
<listitem><para>October 22nd, 2003 [gerard] Chapter 2: Added notes how to <listitem><para>October 22nd, 2003 [gerard] Chapter 2: Added notes how to
create installation dependency lists.</para></listitem> create installation dependency lists.</para></listitem>
<listitem><para>October 22nd, 2003 [alex]: Chapter 6 - Gawk and Shadow:
Adjusted the text. And added some markup elsewhere.</para></listitem>
<listitem><para>October 22nd, 2003 [alex]: Chapter 6 - Entering the chroot
environment: Dropped the <userinput>set +h</userinput> command, as it is
pointless there: it's redone several sections later.</para></listitem>
<listitem><para>October 15th, 2003 [greg]: Chapter 9: Reworked final strip <listitem><para>October 15th, 2003 [greg]: Chapter 9: Reworked final strip
command. Relocated paragraphs about directory removal from Chapter command. Relocated paragraphs about directory removal from Chapter
6.</para></listitem> 6.</para></listitem>
<listitem><para>October 14th, 2003 [greg]: Chapter 8 - Making the LFS system <listitem><para>October 14th, 2003 [greg]: Chapter 8 - Making the LFS system
bootable: Expand Grub details and add a warning.</para></listitem> bootable: Expanded Grub details and added a warning.</para></listitem>
<listitem><para>October 14th, 2003 [alex]: Appendix A - Updating the contents <listitem><para>October 14th, 2003 [alex]: Appendix A - Updated the contents
of Perl and Procps.</para></listitem> of Perl and Procps.</para></listitem>
<listitem><para>October 14th, 2003 [alex]: Chapter 4 and 5 - Added suggestion <listitem><para>October 14th, 2003 [alex]: Chapter 4 and 5 - Added a suggestion
to use $LFS/sources as the working and storage place.</para></listitem> to use $LFS/sources as the working and storage place.</para></listitem>
<listitem><para>October 13th, 2003 [greg]: Chapter 9 - Rebooting the system: <listitem><para>October 13th, 2003 [greg]: Chapter 9 - Rebooting the system:
Reworked umount commands.</para></listitem> Reworked umount commands.</para></listitem>
<listitem><para>October 11h, 2003 [alex]: Adapted the required disk space <listitem><para>October 11th, 2003 [alex]: Adapted the required disk space
values and SBUs, as posted by Bruce Dubbs.</para></listitem> values and SBUs, as posted by Bruce Dubbs.</para></listitem>
<listitem><para>October 11h, 2003 [alex]: Chapter 5 - Toolchain technical <listitem><para>October 11th, 2003 [alex]: Chapter 5 - Toolchain technical
notes: Added and changed some markup.</para></listitem> notes: Added and changed some markup.</para></listitem>
<listitem><para>October 9th, 2003 [gerard]: Upgraded to <listitem><para>October 9th, 2003 [gerard]: Upgraded to

View File

@ -34,7 +34,7 @@ to the new dynamic linker. A simple sed will accomplish this:</para>
<screen><userinput>SPECFILE=/tools/lib/gcc-lib/*/*/specs &amp;&amp; <screen><userinput>SPECFILE=/tools/lib/gcc-lib/*/*/specs &amp;&amp;
sed -e 's@/lib/ld-linux.so.2@/tools/lib/ld-linux.so.2@g' \ sed -e 's@/lib/ld-linux.so.2@/tools/lib/ld-linux.so.2@g' \
&nbsp;&nbsp;&nbsp;&nbsp;$SPECFILE > tempspecfile &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;$SPECFILE &gt; tempspecfile &amp;&amp;
mv -f tempspecfile $SPECFILE &amp;&amp; mv -f tempspecfile $SPECFILE &amp;&amp;
unset SPECFILE</userinput></screen> unset SPECFILE</userinput></screen>
@ -63,7 +63,7 @@ following commands to eliminate this possibility:</para>
functions (compiling and linking) of the new toolchain are working as expected. functions (compiling and linking) of the new toolchain are working as expected.
For this we are going to perform a simple sanity check:</para> For this we are going to perform a simple sanity check:</para>
<screen><userinput>echo 'main(){}' > dummy.c <screen><userinput>echo 'main(){}' &gt; dummy.c
gcc dummy.c gcc dummy.c
readelf -l a.out | grep ': /tools'</userinput></screen> readelf -l a.out | grep ': /tools'</userinput></screen>

View File

@ -7,7 +7,7 @@
the /tools directory. This is fixed by altering the configure script:</para> the /tools directory. This is fixed by altering the configure script:</para>
<screen><userinput>cp configure configure.backup <screen><userinput>cp configure configure.backup
sed "s@/usr/include@/tools/include@g" configure.backup > configure</userinput> </screen> sed "s@/usr/include@/tools/include@g" configure.backup &gt; configure</userinput> </screen>
<para>Prepare Util-linux for compilation:</para> <para>Prepare Util-linux for compilation:</para>

View File

@ -44,7 +44,7 @@ this:</para>
<screen><userinput>SPECFILE=/tools/lib/gcc-lib/*/*/specs &amp;&amp; <screen><userinput>SPECFILE=/tools/lib/gcc-lib/*/*/specs &amp;&amp;
sed -e 's@/tools/lib/ld-linux.so.2@/lib/ld-linux.so.2@g' \ sed -e 's@/tools/lib/ld-linux.so.2@/lib/ld-linux.so.2@g' \
&nbsp;&nbsp;&nbsp;&nbsp;$SPECFILE > newspecfile &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;$SPECFILE &gt; newspecfile &amp;&amp;
mv -f newspecfile $SPECFILE &amp;&amp; mv -f newspecfile $SPECFILE &amp;&amp;
unset SPECFILE</userinput></screen> unset SPECFILE</userinput></screen>
@ -65,7 +65,7 @@ name of your platform's dynamic linker in the above commands. Refer back to
basic functions (compiling and linking) of the adjusted toolchain are working basic functions (compiling and linking) of the adjusted toolchain are working
as expected. For this we are going to perform a simple sanity check:</para> as expected. For this we are going to perform a simple sanity check:</para>
<screen><userinput>echo 'main(){}' > dummy.c <screen><userinput>echo 'main(){}' &gt; dummy.c
gcc dummy.c gcc dummy.c
readelf -l a.out | grep ': /lib'</userinput></screen> readelf -l a.out | grep ': /lib'</userinput></screen>

View File

@ -24,8 +24,9 @@ user <emphasis>root</emphasis> by running the following command:</para>
<screen><userinput>chown -R 0:0 /tools</userinput></screen> <screen><userinput>chown -R 0:0 /tools</userinput></screen>
<para>The command uses "0:0" instead of "root:root", because chown is unable <para>The command uses "0:0" instead of "root:root", because
to resolve the name "root" until the password file has been created.</para> <userinput>chown</userinput> is unable to resolve the name "root" until the
password file has been created.</para>
</sect1> </sect1>

View File

@ -21,20 +21,14 @@ to enter the chroot environment:</para>
&nbsp;&nbsp;&nbsp;&nbsp;PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ &nbsp;&nbsp;&nbsp;&nbsp;PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
&nbsp;&nbsp;&nbsp;&nbsp;/tools/bin/bash --login</userinput></screen> &nbsp;&nbsp;&nbsp;&nbsp;/tools/bin/bash --login</userinput></screen>
<screen><userinput>set +h</userinput></screen>
<para>The <userinput>-i</userinput> option given to the <para>The <userinput>-i</userinput> option given to the
<userinput>env</userinput> command will clear all variables of the chroot <userinput>env</userinput> command will clear all variables of the chroot
environment. After that, only the HOME, TERM, PS1 and PATH variables are 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 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 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, like <userinput>vim</userinput> and <userinput>less</userinput> to operate
such as CFLAGS or CXXFLAGS, this is a good place to set them again.</para> 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, <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 because everything you do will be restricted to the LFS file system -- since

View File

@ -1,12 +1,13 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2> <sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2><title>Configuring Shadow Password Suite</title> <sect2><title>Configuring Shadow</title>
<para>This package contains utilities to modify users' passwords, add <para>This package contains utilities to modify users' passwords, add
or delete users and groups, and the like. We're not going to explain what or delete users and groups, and the like. We're not going to explain what
'password shadowing' means. A full explanation can be found in the doc/HOWTO 'password shadowing' means. A full explanation can be found in the
file within the unpacked shadow password suite's source tree. There's one <filename>doc/HOWTO</filename>
thing to keep in mind if you decide to use shadow support: programs that file within the unpacked Shadow source tree. There's one
thing to keep in mind if you decide to use Shadow support: programs that
need to verify passwords (for example xdm, ftp daemons, pop3 daemons) need need to verify passwords (for example xdm, ftp daemons, pop3 daemons) need
to be 'shadow-compliant', that is they need to be able to work with to be 'shadow-compliant', that is they need to be able to work with
shadowed passwords.</para> shadowed passwords.</para>

View File

@ -7,7 +7,7 @@ order to satisfy these programs, we create a number of symbolic links which
will be replaced by real files throughout the course of this chapter when will be replaced by real files throughout the course of this chapter when
we're installing all the software.</para> we're installing all the software.</para>
<screen><userinput>ln -s /tools/bin/{bash,pwd,cat,stty} /bin <screen><userinput>ln -s /tools/bin/{bash,cat,pwd,stty} /bin
ln -s /tools/bin/perl /usr/bin ln -s /tools/bin/perl /usr/bin
ln -s /tools/lib/libgcc_s.so.1 /usr/lib ln -s /tools/lib/libgcc_s.so.1 /usr/lib
ln -s bash /bin/sh</userinput></screen> ln -s bash /bin/sh</userinput></screen>

View File

@ -23,7 +23,8 @@ mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}}</userinput></screen>
<para>Directories are, by default, created with permission mode 755, but this <para>Directories are, by default, created with permission mode 755, but this
isn't desirable for all directories. We will make two changes: one to the home isn't desirable for all directories. We will make two changes: one to the home
directory of root, and another to the directories for temporary files.</para> directory of <emphasis>root</emphasis>, and another to the directories for
temporary files.</para>
<screen><userinput>chmod 0750 /root <screen><userinput>chmod 0750 /root
chmod 1777 /tmp /var/tmp</userinput></screen> chmod 1777 /tmp /var/tmp</userinput></screen>

View File

@ -30,7 +30,7 @@ the system GCC already installed in <filename class="directory">/usr</filename>
<screen><userinput>patch -Np1 -i ../&gcc-2953-patch; <screen><userinput>patch -Np1 -i ../&gcc-2953-patch;
patch -Np1 -i ../&gcc-2953-no-fixinc-patch; patch -Np1 -i ../&gcc-2953-no-fixinc-patch;
patch -Np1 -i ../&gcc-2953-returntype-fix-patch; patch -Np1 -i ../&gcc-2953-returntype-fix-patch;
echo timestamp > gcc/cstamp-h.in</userinput></screen> echo timestamp &gt; gcc/cstamp-h.in</userinput></screen>
<para>The GCC documentation recommends building GCC outside of the source <para>The GCC documentation recommends building GCC outside of the source
directory in a dedicated build directory:</para> directory in a dedicated build directory:</para>

View File

@ -3,11 +3,11 @@
<sect2> <sect2>
<title>Creating devices</title> <title>Creating devices</title>
<para>Please note that unpacking the MAKEDEV-&makedev-version;.bz2 file <para>Note that unpacking the <filename>MAKEDEV-&makedev-version;.bz2</filename>
doesn't create a directory for you to <userinput>cd</userinput> into, as file doesn't create a directory for you to <userinput>cd</userinput> into, as
the file only contains a single shell script.</para> the file contains only a shell script.</para>
<para>Install the MAKEDEV script:</para> <para>Install the <userinput>MAKEDEV</userinput> script:</para>
<screen><userinput>bzcat MAKEDEV-&makedev-version;.bz2 &gt; /dev/MAKEDEV <screen><userinput>bzcat MAKEDEV-&makedev-version;.bz2 &gt; /dev/MAKEDEV
chmod 754 /dev/MAKEDEV</userinput></screen> chmod 754 /dev/MAKEDEV</userinput></screen>
@ -17,22 +17,23 @@ chmod 754 /dev/MAKEDEV</userinput></screen>
<screen><userinput>cd /dev <screen><userinput>cd /dev
./MAKEDEV -v generic-nopty</userinput></screen> ./MAKEDEV -v generic-nopty</userinput></screen>
<para>The meaning of the option:</para> <para>The meaning of the arguments:</para>
<itemizedlist> <itemizedlist>
<listitem><para><userinput>-v generic-nopty</userinput>: The <listitem><para><userinput>-v</userinput>: This tells the script to run in
<userinput>-v</userinput> parameter tells the MAKEDEV script to run in verbose verbose mode.</para></listitem>
mode. The <userinput>generic-nopty</userinput> parameter instructs MAKEDEV to
create a generic selection of commonly used device special files, except for the <listitem><para><userinput>generic-nopty</userinput>: This instructs
ptyXX and ttyXX range of files. We don't need those files because we are going <userinput>MAKEDEV</userinput> to create a generic selection of commonly used
to use Unix98 PTYs via the <emphasis>devpts</emphasis> file device special files, except for the ptyXX and ttyXX range of files. We don't
system.</para></listitem> need those files because we are going to use Unix98 PTYs via the
<emphasis>devpts</emphasis> file system.</para></listitem>
</itemizedlist> </itemizedlist>
<para>If a device you need is missing, try running <para>If it turns out that some special device <filename>zzz</filename> that
<userinput>./MAKEDEV -v &lt;device&gt;</userinput>. Alternatively, you may you need is missing, try running <userinput>./MAKEDEV -v zzz</userinput>.
create devices via the <emphasis>mknod</emphasis> program. Please refer to Alternatively, you may create devices via the <userinput>mknod</userinput>
the man and info pages of <emphasis>mknod</emphasis> if you need more program. Please refer to its man and info pages if you need more
information.</para> information.</para>
<para>Additionally, if you were unable to mount the devpts filesystem earlier in <para>Additionally, if you were unable to mount the devpts filesystem earlier in

View File

@ -5,7 +5,7 @@
<para>In order for certain programs to function properly, the <para>In order for certain programs to function properly, the
<emphasis>proc</emphasis> and <emphasis>devpts</emphasis> file systems must be <emphasis>proc</emphasis> and <emphasis>devpts</emphasis> file systems must be
available within the chroot environment. A file system can be mounted as many available within the chroot environment. A file system can be mounted as many
times and in as many places as you like, thus it's not a problem that the these times and in as many places as you like, thus it's not a problem that these
file systems are already mounted on your host system -- especially so because file systems are already mounted on your host system -- especially so because
they are virtual file systems.</para> they are virtual file systems.</para>
@ -44,7 +44,7 @@ now the most common way for pseudo terminals (PTYs) to be implemented.</para>
<para>The most likely cause is that your host system's kernel was compiled <para>The most likely cause is that your host system's kernel was compiled
without support for the devpts file system. You can check which file systems without support for the devpts file system. You can check which file systems
your kernel supports by peeking into its internals with a command such as your kernel supports by peeking into its internals with a command such as
<userinput>cat /proc/filesystems</userinput>. If for some reason, devpts is <userinput>cat /proc/filesystems</userinput>. If for some reason devpts is
listed there but the mount still doesn't work, check instead for a different listed there but the mount still doesn't work, check instead for a different
file system variety called <emphasis>devfs</emphasis>. If devfs is listed then file system variety called <emphasis>devfs</emphasis>. If devfs is listed then
we'll be able to work around the problem by mounting the host's devfs file we'll be able to work around the problem by mounting the host's devfs file

View File

@ -22,7 +22,7 @@ checks to ensure it built correctly. Should you choose to run it, you first
have to create a basic <filename>/etc/hosts</filename> file, needed by a have to create a basic <filename>/etc/hosts</filename> file, needed by a
couple of tests to resolve the name <emphasis>localhost</emphasis>:</para> couple of tests to resolve the name <emphasis>localhost</emphasis>:</para>
<screen><userinput>echo "127.0.0.1 localhost $(hostname)" > /etc/hosts</userinput></screen> <screen><userinput>echo "127.0.0.1 localhost $(hostname)" &gt; /etc/hosts</userinput></screen>
<para>Now run the tests, if you wish:</para> <para>Now run the tests, if you wish:</para>

View File

@ -49,6 +49,11 @@ the <quote>I have no name!</quote> prompt.</para>
<screen><userinput>exec /tools/bin/bash --login +h</userinput></screen> <screen><userinput>exec /tools/bin/bash --login +h</userinput></screen>
<para>Note the use of the <userinput>+h</userinput> directive. This tells
<userinput>bash</userinput> not to use its internal path hashing. Without this
directive, <userinput>bash</userinput> would remember the paths to binaries it
has executed. Since as we go through this chapter, we want to use our newly
compiled binaries as soon as they are installed, we turn off this function.</para>
</sect1> </sect1>

View File

@ -1,18 +1,15 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2> <sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2> <sect2>
<title>Installation of Shadow Password Suite</title> <title>Installation of Shadow</title>
<para>The <userinput>login</userinput>, <userinput>getty</userinput> and <para>The <userinput>login</userinput>, <userinput>getty</userinput> and
<userinput>init</userinput> programs (and some others) maintain a number <userinput>init</userinput> programs (and some others) maintain a number
of logfiles to record who are and who were logged in to the system. These of logfiles to record who are and who were logged in to the system. These
programs, however, don't create these logfiles when they don't exist, so if programs, however, don't create these logfiles when they don't exist, so if
you want this logging to occur you will have to create the files yourself. you want this logging to occur you will have to create the files yourself.
To let the Shadow package (that is installed next) detect these files in their The Shadow package needs to detect these files in their proper place, so we
proper place, create them now, with their proper permissions:</para> create them now, with their proper permissions:</para>
<para>Create these files with their proper permissions by running the
following commands:</para>
<screen><userinput>touch /var/run/utmp /var/log/{btmp,lastlog,wtmp} <screen><userinput>touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}</userinput></screen> chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}</userinput></screen>
@ -35,9 +32,9 @@ the package incorrectly assumes it is going to be located at
<screen><userinput>touch /usr/bin/passwd</userinput></screen> <screen><userinput>touch /usr/bin/passwd</userinput></screen>
<para>The current shadow suite has a problem in the newgrp command which causes <para>The current Shadow suite has a problem that causes in the
it to fail. The following patch (also appearing in Shadow's CVS code) fixes <userinput>newgrp</userinput> command to fail. The following patch (also
this problem.</para> appearing in Shadow's CVS code) fixes this problem:</para>
<screen><userinput>patch -Np1 -i ../&shadow-patch;</userinput></screen> <screen><userinput>patch -Np1 -i ../&shadow-patch;</userinput></screen>

View File

@ -32,12 +32,13 @@ end of the line should be replaced with <emphasis>0 0</emphasis>, as such a
partition does not need to be dumped or checked</para> partition does not need to be dumped or checked</para>
<para>The <filename>/dev/shm</filename> mount point for tmpfs is included to <para>The <filename>/dev/shm</filename> mount point for tmpfs is included to
enable POSIX shared memory. Your kernel must have the required support built allow enabling POSIX shared memory. Your kernel must have the required support
into it for this to work. More about this in the next section. Please note that built into it for this to work -- more about this in the next section. Please
currently, very little software actually uses POSIX shared memory. Therefore you note that currently very little software actually uses POSIX shared memory.
can consider the <filename>/dev/shm</filename> mount optional. For more Therefore you can consider the <filename>/dev/shm</filename> mount point
information, see <filename>Documentation/filesystems/tmpfs.txt</filename> in the optional. For more information, see
kernel source tree.</para> <filename>Documentation/filesystems/tmpfs.txt</filename> in the kernel source
tree.</para>
<para>There are other lines which you may consider adding to your <para>There are other lines which you may consider adding to your
<filename>fstab</filename> file. One example is a line to use if you intend to <filename>fstab</filename> file. One example is a line to use if you intend to

View File

@ -25,7 +25,7 @@ Insert a blank floppy diskette and run the following commands:</para>
dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1</userinput></screen> dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1</userinput></screen>
<para>Remove the diskette and store it somewhere safe. Now we'll run the <para>Remove the diskette and store it somewhere safe. Now we'll run the
<userinput>grub</userinput> shell.</para> <userinput>grub</userinput> shell:</para>
<screen><userinput>grub</userinput></screen> <screen><userinput>grub</userinput></screen>
@ -54,8 +54,8 @@ files -- you can use Tab everywhere to make Grub show the alternatives:</para>
Don't run the command if this is not what you want. For example, you may be Don't run the command if this is not what you want. For example, you may be
using a third party boot manager to manage your MBR (Master Boot Record). In using a third party boot manager to manage your MBR (Master Boot Record). In
this scenario, it would probably make more sense to install Grub into the this scenario, it would probably make more sense to install Grub into the
"boot sector" of the LFS partition, in which case the command would become "boot sector" of the LFS partition, in which case the command would become:
<userinput>setup (hd0,3)</userinput>:</para></warning> <userinput>setup (hd0,3)</userinput>.</para></warning>
<!-- HACK - Force some whitespace to appease tidy --> <!-- HACK - Force some whitespace to appease tidy -->
<literallayout></literallayout> <literallayout></literallayout>
@ -70,8 +70,8 @@ this scenario, it would probably make more sense to install Grub into the
<screen><userinput>quit</userinput></screen> <screen><userinput>quit</userinput></screen>
<para>Now we need to create the <filename>menu.lst</filename> file, which <para>Now we need to create a "menu list" file, defining Grub's boot
defines Grub's boot menu:</para> menu:</para>
<screen><userinput>cat &gt; /boot/grub/menu.lst &lt;&lt; "EOF"</userinput> <screen><userinput>cat &gt; /boot/grub/menu.lst &lt;&lt; "EOF"</userinput>
# Begin /boot/grub/menu.lst # Begin /boot/grub/menu.lst

View File

@ -50,13 +50,13 @@ chroot $LFS /tools/bin/env -i \
recognized. Most of these are scripts instead of binaries. These warnings can recognized. Most of these are scripts instead of binaries. These warnings can
be safely ignored.</para> be safely ignored.</para>
<para>It's a good idea to create an /etc/lfs file. By <para>It's a good idea to create an <filename>/etc/lfs</filename> file. By
having this file it is very easy for you (and for us if you are going to ask having this file it is very easy for you (and for us if you are going to ask
for help with something at some point) to find out which LFS version for help with something at some point) to find out which LFS version
you have installed on your system. Create the /etc/lfs file by you have installed on your system. Create the <filename>/etc/lfs</filename>
running the following command:</para> file by running the following command:</para>
<screen><userinput>echo &version; > /etc/lfs</userinput></screen> <screen><userinput>echo &version; &gt; /etc/lfs</userinput></screen>
</sect1> </sect1>