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
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
command. Relocated paragraphs about directory removal from Chapter
6.</para></listitem>
<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>
<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>
<listitem><para>October 13th, 2003 [greg]: Chapter 9 - Rebooting the system:
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>
<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>
<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;
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;
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.
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
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>
<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>

View File

@ -44,7 +44,7 @@ this:</para>
<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' \
&nbsp;&nbsp;&nbsp;&nbsp;$SPECFILE > newspecfile &amp;&amp;
&nbsp;&nbsp;&nbsp;&nbsp;$SPECFILE &gt; newspecfile &amp;&amp;
mv -f newspecfile $SPECFILE &amp;&amp;
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
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
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>
<para>The command uses "0:0" instead of "root:root", because chown is unable
to resolve the name "root" until the password file has been created.</para>
<para>The command uses "0:0" instead of "root:root", because
<userinput>chown</userinput> is unable to resolve the name "root" until the
password file has been created.</para>
</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;/tools/bin/bash --login</userinput></screen>
<screen><userinput>set +h</userinput></screen>
<para>The <userinput>-i</userinput> option given to the
<userinput>env</userinput> command will clear all variables of the chroot
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
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,
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>
like <userinput>vim</userinput> and <userinput>less</userinput> to operate
properly. If you need other variables present, such as CFLAGS or CXXFLAGS,
this is a good place to set them again.</para>
<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

View File

@ -1,12 +1,13 @@
<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
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
file within the unpacked shadow password suite's source tree. There's one
thing to keep in mind if you decide to use shadow support: programs that
'password shadowing' means. A full explanation can be found in the
<filename>doc/HOWTO</filename>
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
to be 'shadow-compliant', that is they need to be able to work with
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
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/lib/libgcc_s.so.1 /usr/lib
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
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
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;
patch -Np1 -i ../&gcc-2953-no-fixinc-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
directory in a dedicated build directory:</para>

View File

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

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
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>

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>
<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>

View File

@ -1,18 +1,15 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Installation of Shadow Password Suite</title>
<title>Installation of Shadow</title>
<para>The <userinput>login</userinput>, <userinput>getty</userinput> and
<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
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.
To let the Shadow package (that is installed next) detect these files in their
proper place, create them now, with their proper permissions:</para>
<para>Create these files with their proper permissions by running the
following commands:</para>
The Shadow package needs to detect these files in their proper place, so we
create them now, with their proper permissions:</para>
<screen><userinput>touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
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>
<para>The current shadow suite has a problem in the newgrp command which causes
it to fail. The following patch (also appearing in Shadow's CVS code) fixes
this problem.</para>
<para>The current Shadow suite has a problem that causes in the
<userinput>newgrp</userinput> command to fail. The following patch (also
appearing in Shadow's CVS code) fixes this problem:</para>
<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>
<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
into it for this to work. More about this in the next section. Please note that
currently, very little software actually uses POSIX shared memory. Therefore you
can consider the <filename>/dev/shm</filename> mount optional. For more
information, see <filename>Documentation/filesystems/tmpfs.txt</filename> in the
kernel source tree.</para>
allow enabling POSIX shared memory. Your kernel must have the required support
built into it for this to work -- more about this in the next section. Please
note that currently very little software actually uses POSIX shared memory.
Therefore you can consider the <filename>/dev/shm</filename> mount point
optional. For more information, see
<filename>Documentation/filesystems/tmpfs.txt</filename> in the kernel source
tree.</para>
<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

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>
<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>
@ -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
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
"boot sector" of the LFS partition, in which case the command would become
<userinput>setup (hd0,3)</userinput>:</para></warning>
"boot sector" of the LFS partition, in which case the command would become:
<userinput>setup (hd0,3)</userinput>.</para></warning>
<!-- HACK - Force some whitespace to appease tidy -->
<literallayout></literallayout>
@ -70,8 +70,8 @@ this scenario, it would probably make more sense to install Grub into the
<screen><userinput>quit</userinput></screen>
<para>Now we need to create the <filename>menu.lst</filename> file, which
defines Grub's boot menu:</para>
<para>Now we need to create a "menu list" file, defining Grub's boot
menu:</para>
<screen><userinput>cat &gt; /boot/grub/menu.lst &lt;&lt; "EOF"</userinput>
# 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
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
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
running the following command:</para>
you have installed on your system. Create the <filename>/etc/lfs</filename>
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>