aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06
diff options
context:
space:
mode:
authorGerard Beekmans <gerard@linuxfromscratch.org>2003-05-02 18:20:20 +0000
committerGerard Beekmans <gerard@linuxfromscratch.org>2003-05-02 18:20:20 +0000
commitbc82645e958948a6aefd3147a0d7f712de9eaf6b (patch)
tree4855b70f785c1e6bf04856e97824988120503b05 /chapter06
parent55b50e3f6653cef278bad7e45fe5a378966953a7 (diff)
Integrated Pure LFS - Phase 1
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@2490 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Diffstat (limited to 'chapter06')
-rw-r--r--chapter06/aboutdebug.xml2
-rw-r--r--chapter06/adjustingtoolchain.xml14
-rw-r--r--chapter06/binutils-inst.xml20
-rw-r--r--chapter06/changingowner.xml14
-rw-r--r--chapter06/chapter06.xml11
-rw-r--r--chapter06/chroot.xml9
-rw-r--r--chapter06/coreutils-inst.xml20
-rw-r--r--chapter06/coreutils.xml8
-rw-r--r--chapter06/createfiles.xml32
-rw-r--r--chapter06/dejagnu-inst.xml12
-rw-r--r--chapter06/dejagnu.xml11
-rw-r--r--chapter06/expect-inst.xml15
-rw-r--r--chapter06/expect.xml11
-rw-r--r--chapter06/gcc-2953-inst.xml22
-rw-r--r--chapter06/gcc-2953.xml8
-rw-r--r--chapter06/gcc-inst.xml25
-rw-r--r--chapter06/glibc-inst.xml66
-rw-r--r--chapter06/groff-inst.xml2
-rw-r--r--chapter06/ncurses-inst.xml2
-rw-r--r--chapter06/pwdgroup.xml2
-rw-r--r--chapter06/revisedchroot.xml3
-rw-r--r--chapter06/tcl-inst.xml14
-rw-r--r--chapter06/tcl.xml11
23 files changed, 231 insertions, 103 deletions
diff --git a/chapter06/aboutdebug.xml b/chapter06/aboutdebug.xml
index 3e3a82dc9..d92e0abf9 100644
--- a/chapter06/aboutdebug.xml
+++ b/chapter06/aboutdebug.xml
@@ -39,7 +39,7 @@ software, a lot of disk space can be regained by removing these symbols .</para>
<para>To remove debugging symbols from a binary (which must be an a.out
or ELF binary), run <userinput>strip --strip-debug filename</userinput>.
Wildcards can be used to treat multiple files (use something like
-<userinput>strip --strip-debug $LFS/static/bin/*</userinput>).</para>
+<userinput>strip --strip-debug $LFS/stage1/bin/*</userinput>).</para>
<para>For your convenience, Chapter 9 includes one simple command to strip
all debugging symbols from all programs and libraries on your system.
diff --git a/chapter06/adjustingtoolchain.xml b/chapter06/adjustingtoolchain.xml
new file mode 100644
index 000000000..c269e57ff
--- /dev/null
+++ b/chapter06/adjustingtoolchain.xml
@@ -0,0 +1,14 @@
+<sect1 id="ch06-adjustingtoolchain">
+<title>Adjusting toolchain</title>
+<?dbhtml filename="adjustingtoolchain.html" dir="chapter06"?>
+
+<para><screen><userinput>cd binutils-build
+make -C ld INSTALL=/stage1/bin/install install-data-local
+SPECFILE=/stage1/lib/gcc-lib/i686-pc-linux-gnu/*/specs &&
+cp ${SPECFILE} ./XX &&
+sed 's@/stage1/lib/ld-linux.so.2@/lib/ld-linux.so.2@g' ./XX > ${SPECFILE} &&
+unset SPECFILE &&
+rm -f ./XX</userinput></screen></para>
+
+</sect1>
+
diff --git a/chapter06/binutils-inst.xml b/chapter06/binutils-inst.xml
index 8adbe9dbd..f9c329061 100644
--- a/chapter06/binutils-inst.xml
+++ b/chapter06/binutils-inst.xml
@@ -16,11 +16,16 @@ cd ../binutils-build</userinput></screen></para>
<para>Next, prepare Binutils to be compiled:</para>
-<para><screen><userinput>../binutils-&binutils-version;/configure --prefix=/usr --enable-shared</userinput></screen></para>
+<para><screen><userinput>CFLAGS="-O2 -pipe" \
+&nbsp;&nbsp;&nbsp;&nbsp;../binutils-&binutils-version;/configure \
+&nbsp;&nbsp;&nbsp;&nbsp;--prefix=/usr --mandir=/usr/share/man \
+&nbsp;&nbsp;&nbsp;&nbsp;--infodir=/usr/share/info --enable-shared</userinput></screen></para>
<para>Continue with compiling the package:</para>
-<para><screen><userinput>make tooldir=/usr</userinput></screen></para>
+<para><screen><userinput>make LDFLAGS="-s"</userinput></screen></para>
+
+<para><screen><userinput>make -k check</userinput></screen></para>
<para>Normally, the <emphasis>tooldir</emphasis> (the directory where the
executables end up) is set to $(exec_prefix)/$(target_alias) which expands
@@ -32,16 +37,9 @@ executed on Apple PowerPC machines).</para>
<para>Install the package:</para>
-<para><screen><userinput>make tooldir=/usr install</userinput></screen></para>
-
-<para>Install the info pages:</para>
-
-<para><screen><userinput>make tooldir=/usr install-info</userinput></screen></para>
-
-<para>Some packages require the <emphasis>libiberty</emphasis> header
-in order to build. To honor those packages, install the file:</para>
+<para><screen><userinput>make install</userinput></screen></para>
-<para><screen><userinput>cp ../binutils-&binutils-version;/include/libiberty.h /usr/include</userinput></screen></para>
+<para><screen><userinput>rm /usr/lib/libiberty.a</userinput></screen></para>
</sect2>
diff --git a/chapter06/changingowner.xml b/chapter06/changingowner.xml
index f984f47d6..2b24fecd3 100644
--- a/chapter06/changingowner.xml
+++ b/chapter06/changingowner.xml
@@ -2,17 +2,17 @@
<title>Changing ownership</title>
<?dbhtml filename="changingowner.html" dir="chapter06"?>
-<para>Right now the /static directory is owned by the lfs user. However,
+<para>Right now the /stage1 directory is owned by the lfs user. However,
this user account exists only on the host system. Although you may delete
-the <filename class="directory">/static</filename> directory once you have
+the <filename class="directory">/stage1</filename> directory once you have
finished your LFS system, you might want to keep it around, e.g. for
building more LFS systems. But if you keep the
-<filename class="directory">/static</filename> directory you will end up
+<filename class="directory">/stage1</filename> directory you will end up
with files owned by a user id without a corresponding account. This is
dangerous because a user account created later could get this user id and
-would suddenly own the <filename class="directory">/static</filename>
+would suddenly own the <filename class="directory">/stage1</filename>
directory and all of the files therein. This could open the
-<filename class="directory">/static</filename> directory to manipulation by
+<filename class="directory">/stage1</filename> directory to manipulation by
an untrusted user.</para>
<para>To avoid this issue, you can add the
@@ -20,10 +20,10 @@ an untrusted user.</para>
the <filename>/etc/passwd</filename> file, taking care to assign it the
same user and group id. Alternatively, you can (and the book will assume
you do) run the following command now, to assign the contents of the
-<filename class="directory">/static</filename> directory to user
+<filename class="directory">/stage1</filename> directory to user
<emphasis>root</emphasis> by running the following command:</para>
-<para><screen><userinput>chown -R 0:0 /static</userinput></screen></para>
+<para><screen><userinput>chown -R 0:0 /stage1</userinput></screen></para>
<para>The command uses "0:0" instead of "root:root", because chown is unable
to resolve the name "root" until glibc has been installed.</para>
diff --git a/chapter06/chapter06.xml b/chapter06/chapter06.xml
index 060cd4fe9..f1963a4e9 100644
--- a/chapter06/chapter06.xml
+++ b/chapter06/chapter06.xml
@@ -15,7 +15,10 @@
&c6-kernel;
&c6-manpages;
&c6-glibc;
+&c6-adjustingtoolchain;
+&c6-binutils;
&c6-gcc;
+&c6-coreutils;
&c6-zlib;
&c6-findutils;
&c6-gawk;
@@ -25,12 +28,8 @@
&c6-bison;
&c6-less;
&c6-groff;
-&c6-textutils;
&c6-sed;
&c6-flex;
-&c6-binutils;
-&c6-fileutils;
-&c6-shellutils;
&c6-gettext;
&c6-nettools;
&c6-perl;
@@ -62,6 +61,10 @@
&c6-sysvinit;
&c6-tar;
&c6-utillinux;
+&c6-tcl;
+&c6-expect;
+&c6-dejagnu;
+&c6-gcc-2953;
&c6-kernel-manpages;
&c6-glibc-pass2;
&c6-revisedchroot;
diff --git a/chapter06/chroot.xml b/chapter06/chroot.xml
index f6880b4a5..2cfaa21de 100644
--- a/chapter06/chroot.xml
+++ b/chapter06/chroot.xml
@@ -10,12 +10,15 @@ can execute the <userinput>chroot</userinput> command.</para>
<para>Become <emphasis>root</emphasis> and run the following command
to enter the chroot environment:</para>
-<para><screen><userinput>chroot $LFS /static/bin/env -i \
+<para><screen><userinput>chroot $LFS /stage1/bin/env -i \
&nbsp;&nbsp;&nbsp;&nbsp;HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
-&nbsp;&nbsp;&nbsp;&nbsp;PATH=/bin:/usr/bin:/sbin:/usr/sbin:/static/bin \
-&nbsp;&nbsp;&nbsp;&nbsp;/static/bin/bash --login</userinput></screen>
+&nbsp;&nbsp;&nbsp;&nbsp;PATH=/bin:/usr/bin:/sbin:/usr/sbin:/stage1/bin \
+&nbsp;&nbsp;&nbsp;&nbsp;LDFLAGS="-s" \
+&nbsp;&nbsp;&nbsp;&nbsp;/stage1/bin/bash --login</userinput></screen>
</para>
+<para><screen><userinput>set +h</userinput></screen></para>
+
<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
diff --git a/chapter06/coreutils-inst.xml b/chapter06/coreutils-inst.xml
new file mode 100644
index 000000000..14df0ec19
--- /dev/null
+++ b/chapter06/coreutils-inst.xml
@@ -0,0 +1,20 @@
+<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
+
+<sect2>
+<title>Installation of Coreutils</title>
+
+<para><screen><userinput>/configure --prefix=/usr
+make
+make install
+mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin &&
+mv /usr/bin/{dir,dircolors,du,date,echo,false,head} /bin &&
+mv /usr/bin/{install,ln,ls,mkdir,mkfifo,mknod,mv,pwd} /bin &&
+mv /usr/bin/{rm,rmdir,shred,sync,sleep,stty,su,test} /bin &&
+mv /usr/bin/{touch,true,uname,vdir} /bin
+mv /usr/bin/chroot /usr/sbin
+ln -s test /bin/[
+ln -s ../../bin/install /usr/bin</userinput></screen></para>
+
+
+</sect2>
+
diff --git a/chapter06/coreutils.xml b/chapter06/coreutils.xml
new file mode 100644
index 000000000..612a7643c
--- /dev/null
+++ b/chapter06/coreutils.xml
@@ -0,0 +1,8 @@
+<sect1 id="ch06-coreutils">
+<title>Installing Coreutils-&coreutils-version;</title>
+<?dbhtml filename="coreutils.html" dir="chapter06"?>
+
+&c6-coreutils-inst;
+
+</sect1>
+
diff --git a/chapter06/createfiles.xml b/chapter06/createfiles.xml
index 47ccefb90..1be2246a8 100644
--- a/chapter06/createfiles.xml
+++ b/chapter06/createfiles.xml
@@ -1,17 +1,33 @@
<sect1 id="ch06-createfiles">
-<title>Creating the bash and sh symlinks</title>
+<title>Creating essential symlinks</title>
<?dbhtml filename="createfiles.html" dir="chapter06"?>
<para>Some programs hard-wire paths to programs which don't exist yet. In
-order to satisfy these programs, we create the symbolic links
-<filename>/bin/bash</filename> and <filename>/bin/sh</filename>, both
-pointing to the static <filename>bash</filename> program.</para>
+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>
-<para>Create the <filename>/bin/bash</filename> and <filename>/bin/sh</filename>
-symlinks by running the following commands:</para>
+<para><screen><userinput>ln -sf /stage1/bin/bash /bin
+ln -sf bash /bin/sh
+ln -sf /stage1/bin/pwd /bin
+ln -sf /stage1/bin/perl /usr/bin
+ln -sf /stage1/bin/cat /bin
+ln -sf /stage1/bin/stty /bin
+ln -sf /stage1/bin/msgfmt /usr/bin
+ln -sf /stage1/bin/xgettext /usr/bin
+ln -sf /stage1/bin/msgmerge /usr/bin
+ln -sf /stage1/bin/install /usr/bin
+ln -sf /usr/bin/install /bin
+ln -sf /stage1/bin/echo /bin
+ln -sf /stage1/bin/sed /bin
+ln -sf /stage1/bin/awk /bin
+ln -sf /stage1/bin/rm /bin
+ln -sf /stage1/bin/mv /bin
+ln -sf /stage1/bin/chmod /bin
+ln -sf /stage1/bin/chgrp /bin
+ln -sf /stage1/bin/sort /usr/bin
+ln -sf /stage1/bin/cmp /usr/bin</userinput></screen></para>
-<para><screen><userinput>ln -s /static/bin/bash /bin/bash &amp;&amp;
-ln -s bash /bin/sh</userinput></screen></para>
</sect1>
diff --git a/chapter06/dejagnu-inst.xml b/chapter06/dejagnu-inst.xml
new file mode 100644
index 000000000..4b7adff56
--- /dev/null
+++ b/chapter06/dejagnu-inst.xml
@@ -0,0 +1,12 @@
+<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
+
+<sect2>
+<title>Installation of DejaGNU</title>
+
+<para><screen><userinput>./configure --prefix=/usr
+make
+make install</userinput></screen></para>
+
+
+</sect2>
+
diff --git a/chapter06/dejagnu.xml b/chapter06/dejagnu.xml
new file mode 100644
index 000000000..2105add41
--- /dev/null
+++ b/chapter06/dejagnu.xml
@@ -0,0 +1,11 @@
+<sect1 id="ch06-dejagnu">
+<title>Installing DejaGNU-&dejagnu-version;</title>
+<?dbhtml filename="dejagnu.html" dir="chapter06"?>
+
+<screen>Estimated build time: &dejagnu-time-static;
+Estimated required disk space: &dejagnu-compsize-static;</screen>
+
+&c6-dejagnu-inst;
+
+</sect1>
+
diff --git a/chapter06/expect-inst.xml b/chapter06/expect-inst.xml
new file mode 100644
index 000000000..cd5882a0b
--- /dev/null
+++ b/chapter06/expect-inst.xml
@@ -0,0 +1,15 @@
+<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
+
+<sect2>
+<title>Installation of Expect</title>
+
+<para><screen><userinput>patch -Np1 -i ../expect-&expect-version;.patch
+./configure --prefix=/usr --with-tcl=/stage1/lib \
+&nbsp;&nbsp;&nbsp;&nbsp;--with-x=no --disable-symbols --cache-file=/dev/null
+make
+make test
+make install</userinput></screen></para>
+
+
+</sect2>
+
diff --git a/chapter06/expect.xml b/chapter06/expect.xml
new file mode 100644
index 000000000..6d46ec33e
--- /dev/null
+++ b/chapter06/expect.xml
@@ -0,0 +1,11 @@
+<sect1 id="ch06-expect">
+<title>Installing Expect-&expect-version;</title>
+<?dbhtml filename="expect.html" dir="chapter06"?>
+
+<screen>Estimated build time: &expect-time-static;
+Estimated required disk space: &expect-compsize-static;</screen>
+
+&c6-expect-inst;
+
+</sect1>
+
diff --git a/chapter06/gcc-2953-inst.xml b/chapter06/gcc-2953-inst.xml
new file mode 100644
index 000000000..2a45a5908
--- /dev/null
+++ b/chapter06/gcc-2953-inst.xml
@@ -0,0 +1,22 @@
+<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
+
+<sect2>
+<title>Installation of GCC</title>
+
+<para>This package is known to behave badly when you have changed its
+default optimization flags (including the -march and -mcpu options).
+Therefore, if you have defined any environment variables that override
+default optimizations, such as CFLAGS and CXXFLAGS, we recommend unsetting
+or modifying them when building GCC.</para>
+
+<para><screen><userinput>patch -Np1 -i ../gcc-2.95.3-2.patch
+echo timestamp > gcc/cstamp-h.in
+mkdir ../gcc-2-build
+cd ../gcc-2-build
+../gcc-2.95.3/configure --prefix=/opt/gcc-2.95.3 \
+&nbsp;&nbsp;&nbsp;&nbsp;--enable-shared --enable-languages=c
+make bootstrap
+make install</userinput></screen></para>
+
+</sect2>
+
diff --git a/chapter06/gcc-2953.xml b/chapter06/gcc-2953.xml
new file mode 100644
index 000000000..c65b09684
--- /dev/null
+++ b/chapter06/gcc-2953.xml
@@ -0,0 +1,8 @@
+<sect1 id="ch06-gcc-2953">
+<title>Installing GCC-2.95.3</title>
+<?dbhtml filename="gcc-2953.html" dir="chapter06"?>
+
+&c6-gcc-2953-inst;
+
+</sect1>
+
diff --git a/chapter06/gcc-inst.xml b/chapter06/gcc-inst.xml
index 1ec2c780f..6f16a3b3e 100644
--- a/chapter06/gcc-inst.xml
+++ b/chapter06/gcc-inst.xml
@@ -14,6 +14,9 @@ need to unpack both the gcc-core and gcc-g++ tarballs. Other compilers are
available in the full gcc package; instructions for building them may be
found at <ulink url="&blfs-root;view/cvs/general/gcc.html"/>.</para>
+<para><screen><userinput>patch -Np1 -i ../gcc-&gcc-version;-no_fixedincludes.patch
+patch -Np1 -i ../gcc-&gcc-version;-mmap_test.patch</userinput></screen></para>
+
<para>It is recommended by the GCC installation documentation to build GCC
in a dedicated directory outside of the source tree. Create the build
directory:</para>
@@ -23,9 +26,13 @@ cd ../gcc-build</userinput></screen></para>
<para>Prepare GCC to be compiled:</para>
-<para><screen><userinput>../gcc-&gcc-version;/configure --prefix=/usr --enable-shared \
-&nbsp;&nbsp;&nbsp;&nbsp;--enable-threads=posix --with-slibdir=/lib \
-&nbsp;&nbsp;&nbsp;&nbsp;--enable-__cxa_atexit --enable-clocale=gnu</userinput></screen></para>
+<para><screen><userinput>CFLAGS="-O2 -pipe" CXXFLAGS="-O2 -pipe" \
+&nbsp;&nbsp;&nbsp;&nbsp;../gcc-&gcc-version;/configure --prefix=/usr \
+&nbsp;&nbsp;&nbsp;&nbsp;--enable-shared --enable-threads=posix \
+&nbsp;&nbsp;&nbsp;&nbsp;--enable-__cxa_atexit --enable-clocale=gnu \
+&nbsp;&nbsp;&nbsp;&nbsp;--enable-version-specific-runtime-libs \
+&nbsp;&nbsp;&nbsp;&nbsp;--mandir=/usr/share/man \
+&nbsp;&nbsp;&nbsp;&nbsp;--infodir=/usr/share/info</userinput></screen></para>
<para>The meanings of the configure options are:</para>
@@ -48,16 +55,14 @@ is implemented.</para></listitem>
<para>Continue with compiling the package:</para>
-<para><screen><userinput>make bootstrap</userinput></screen></para>
+<para><screen><userinput>make BOOT_LDFLAGS="-s" BOOT_CFLAGS="-O2 -pipe" \
+&nbsp;&nbsp;&nbsp;&nbsp;STAGE1_CFLAGS="-pipe" bootstrap</userinput></screen></para>
-<para>The <emphasis>bootstrap</emphasis> target doesn't just compile GCC, but
-it compiles GCC multiple times. It uses the first compiled programs to
-compile itself a second and third time to make sure the compiler was compiled
-properly.</para>
+<para><screen><userinput>make -k check</userinput></screen></para>
<para>Finish installing the package:</para>
-<para><screen><userinput>make install-no-fixedincludes</userinput></screen></para>
+<para><screen><userinput>make install</userinput></screen></para>
<para>Some packages expect the C PreProcessor to be installed in the
<filename>/lib</filename> and <filename>/usr/lib</filename> directories.
@@ -72,4 +77,6 @@ symlink:</para>
<para><screen><userinput>ln -s gcc /usr/bin/cc</userinput></screen></para>
+<para><screen><userinput>rm /usr/lib/libiberty.a</userinput></screen></para>
+
</sect2>
diff --git a/chapter06/glibc-inst.xml b/chapter06/glibc-inst.xml
index d9c7bbc93..8f1924dc7 100644
--- a/chapter06/glibc-inst.xml
+++ b/chapter06/glibc-inst.xml
@@ -3,63 +3,6 @@
<sect2>
<title>Glibc installation</title>
-<para>Before starting to install Glibc, you must <userinput>cd</userinput>
-into the <filename>glibc-&glibc-version;</filename> directory and unpack
-Glibc-linuxthreads in that directory, not in <filename>/usr/src</filename> as
-you would normally do.</para>
-
-<para>This package is known to behave badly when you have changed its
-default optimization flags (including the -march and -mcpu options).
-Therefore, if you have defined any environment variables that override
-default optimizations, such as CFLAGS and CXXFLAGS, we recommend unsetting
-them when building Glibc.</para>
-
-<para>Basically, compiling Glibc in any other way than the book suggests
-is putting your system at a very high risk.</para>
-
-<para>We'll start by applying a patch that does the following:</para>
-
-<itemizedlist>
-<listitem><para>It converts all occurrences of <emphasis>$(PERL)</emphasis>
-to <emphasis>/usr/bin/perl</emphasis> in the
-<filename>malloc/Makefile</filename> file. This is done because Glibc
-can't autodetect the location of <filename>perl</filename> because the Perl
-package hasn't been installed yet. And if Glibc thinks Perl isn't installed, the
-perl program <filename>mtrace</filename> won't be installed
-either.</para></listitem>
-
-<listitem><para>It replaces all occurrences of <emphasis>root</emphasis>
-with <emphasis>0</emphasis> in the <filename>login/Makefile</filename>
-file. This is done because Glibc itself isn't installed yet and therefore
-username-to-userid resolving isn't working yet, so a
-<userinput>chown root file</userinput> would fail. Using numeric IDs (as in
-<userinput>chown 0 file</userinput>) works fine.</para></listitem>
-
-</itemizedlist>
-
-<para><screen><userinput>patch -Np1 -i ../glibc-&glibc-rootperl-patch-version;-root-perl.patch</userinput></screen></para>
-
-<para>There is a potential problem that causes statically linked binaries
-to crash that were linked against Glibc-2.2 or older libraries. Even though
-static binaries have all the necessary parts of Glibc built-in, they still
-rely on one external library set: Glibc's NSS libraries. These libraries,
-among other things, tell programs where the system's password database is
-(in <filename>/etc/password</filename>, NIS, or whatever other scheme has
-been configured).</para>
-
-<para>Glibc has undergone some changes since version 2.2.x and the new NSS
-code is incompatible with the old one. So when Glibc is installed it will
-install its new NSS libraries, and static programs will load these new NSS
-libraries and will abort with a <emphasis>segmentation fault</emphasis>
-error. This patch undoes some of the changes to overcome the problem.</para>
-
-<para>If you started chapter 5 with a host system that uses Glibc-2.2.x
-or older, you must apply the following patch. We will install Glibc again at
-the end of this chapter to remove this patch so you'll have a pristine Glibc
-as the developers intended it.</para>
-
-<para><screen><userinput>patch -Np1 -i ../glibc-&glibc-libnss-patch-version;-libnss.patch</userinput></screen></para>
-
<para>Glibc will check for the <filename>/etc/ld.so.conf</filename> file
and abort with an error if the file is missing, so we must create it:</para>
@@ -73,9 +16,12 @@ cd ../glibc-build</userinput></screen></para>
<para>Next, prepare Glibc to be compiled:</para>
-<para><screen><userinput>../glibc-&glibc-version;/configure --prefix=/usr \
+<para><screen><userinput>CFLAGS="-O2 -pipe" \
+&nbsp;&nbsp;&nbsp;&nbsp;../glibc-&glibc-version;/configure --prefix=/usr \
&nbsp;&nbsp;&nbsp;&nbsp;--disable-profile --enable-add-ons \
-&nbsp;&nbsp;&nbsp;&nbsp;--libexecdir=/usr/bin</userinput></screen></para>
+&nbsp;&nbsp;&nbsp;&nbsp;--libexecdir=/usr/bin \
+&nbsp;&nbsp;&nbsp;&nbsp;--with-headers=/usr/include \
+&nbsp;&nbsp;&nbsp;&nbsp;--mandir=/usr/share/man --infodir=/usr/share/info</userinput></screen></para>
<para>The meaning of the configure options are:</para>
@@ -130,6 +76,8 @@ working Perl installation. We'll install Perl later on in this chapter,
and the man pages will be installed when Glibc is installed for the second
time at the end of this chapter.</para>
+<para><screen><userinput>make check</userinput></screen></para>
+
<para><screen><userinput>make install</userinput></screen></para>
<para>The locales (used by Glibc to make your Linux system talk in a different
diff --git a/chapter06/groff-inst.xml b/chapter06/groff-inst.xml
index 4c2e6d4ef..6c95604d7 100644
--- a/chapter06/groff-inst.xml
+++ b/chapter06/groff-inst.xml
@@ -5,7 +5,7 @@
<para>Prepare Groff to be compiled:</para>
-<para><screen><userinput>./configure --prefix=/usr</userinput></screen></para>
+<para><screen><userinput>PAGE=letter ./configure --prefix=/usr</userinput></screen></para>
<para>Continue with compiling the package:</para>
diff --git a/chapter06/ncurses-inst.xml b/chapter06/ncurses-inst.xml
index c264776dc..0bac4e69b 100644
--- a/chapter06/ncurses-inst.xml
+++ b/chapter06/ncurses-inst.xml
@@ -3,6 +3,8 @@
<sect2>
<title>Installation of Ncurses</title>
+<para><screen><userinput>patch -Np1 -i ../ncurses-&ncurses-version;-etip.patch</userinput></screen></para>
+
<para>Prepare Ncurses to be compiled:</para>
<para><screen><userinput>./configure --prefix=/usr --with-shared</userinput></screen></para>
diff --git a/chapter06/pwdgroup.xml b/chapter06/pwdgroup.xml
index caa57280f..103ba579a 100644
--- a/chapter06/pwdgroup.xml
+++ b/chapter06/pwdgroup.xml
@@ -40,5 +40,7 @@ the LSB (<ulink url="http://www.linuxbase.org"/>) recommends only a group
chosen freely by the user, as well-written packages don't depend on GID
numbers but use the group's name.</para>
+<para><screen><userinput>exec /stage1/bin/bash --login</userinput></screen></para>
+
</sect1>
diff --git a/chapter06/revisedchroot.xml b/chapter06/revisedchroot.xml
index 9ec574a91..696c441cf 100644
--- a/chapter06/revisedchroot.xml
+++ b/chapter06/revisedchroot.xml
@@ -17,7 +17,10 @@ class="directory">/static</filename> directory anymore.</para>
<para><screen><userinput>chroot $LFS /usr/bin/env -i \
&nbsp;&nbsp;&nbsp;&nbsp;HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
&nbsp;&nbsp;&nbsp;&nbsp;PATH=/bin:/usr/bin:/sbin:/usr/sbin \
+&nbsp;&nbsp;&nbsp;&nbsp;LDFLAGS="-s" \
&nbsp;&nbsp;&nbsp;&nbsp;/bin/bash --login</userinput></screen></para>
+<para><screen><userinput>set +h</userinput></screen></para>
+
</sect1>
diff --git a/chapter06/tcl-inst.xml b/chapter06/tcl-inst.xml
new file mode 100644
index 000000000..30534a8f2
--- /dev/null
+++ b/chapter06/tcl-inst.xml
@@ -0,0 +1,14 @@
+<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
+
+<sect2>
+<title>Installation of TCL</title>
+
+<para><screen><userinput>cd unix
+./configure --prefix=/usr
+MAKE
+make test
+make install
+ln -s tclsh8.4 /usr/bin/tclsh</userinput></screen></para>
+
+</sect2>
+
diff --git a/chapter06/tcl.xml b/chapter06/tcl.xml
new file mode 100644
index 000000000..d37c3094e
--- /dev/null
+++ b/chapter06/tcl.xml
@@ -0,0 +1,11 @@
+<sect1 id="ch06-tcl">
+<title>Installing TCL-&tcl-version;</title>
+<?dbhtml filename="tcl.html" dir="chapter06"?>
+
+<screen>Estimated build time: &tcl-time-static;
+Estimated required disk space: &tcl-compsize-static;</screen>
+
+&c6-tcl-inst;
+
+</sect1>
+