aboutsummaryrefslogtreecommitdiffstats
path: root/chapter01/how.xml
diff options
context:
space:
mode:
authorGreg Schafer <greg@linuxfromscratch.org>2003-10-07 00:41:12 +0000
committerGreg Schafer <greg@linuxfromscratch.org>2003-10-07 00:41:12 +0000
commitf57e3d1ad9e6bfe96ebf823be19da0e07d81d52b (patch)
treea5712a4b851f5cbdfaa4774de45e908006dcd896 /chapter01/how.xml
parent04a335156f4e0a83bf7d1bf3173cff3bd55f9695 (diff)
Rearrange "How things are going to be done" section. Simplify seds in "Locking in Glibc" and "Re-adjusting the toolchain" sections. Miscellaneous other fixes.
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@2931 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Diffstat (limited to 'chapter01/how.xml')
-rw-r--r--chapter01/how.xml54
1 files changed, 18 insertions, 36 deletions
diff --git a/chapter01/how.xml b/chapter01/how.xml
index 18af3ebc2..9622937a9 100644
--- a/chapter01/how.xml
+++ b/chapter01/how.xml
@@ -9,15 +9,15 @@ programs like a compiler, linker and shell to build the new system. Normally
all the required tools are available if you selected <quote>development</quote>
as one of the options when you installed your distribution.</para>
-<para>In Chapter 3 you will first create a new Linux native partition and
-filesystem, the place where your new LFS system will be compiled and installed.
-Then in Chapter 4 you download all the packages and patches required to build
-an LFS system, and store them on the new filesystem.</para>
+<para>In Chapter 3 you will first create a new Linux native partition and file
+system, the place where your new LFS system will be compiled and installed. Then
+in Chapter 4 you download all the packages and patches required to build an LFS
+system, and store them on the new file system.</para>
-<para>Chapter 5 will then discuss the installation of a number of packages that
-will form the basic development suite (or tool-set) which is used to build the
-actual system in Chapter 6. Some of these packages are needed to resolve
-circular dependencies. For example, to compile a compiler you need a
+<para>Chapter 5 will then discuss the installation of a number of packages that
+will form the basic development suite (or toolchain) which is used to build the
+actual system in Chapter 6. Some of these packages are needed to resolve
+circular dependencies. For example, to compile a compiler you need a
compiler.</para>
<para>The first thing to be done in Chapter 5 is build a first pass of the
@@ -25,35 +25,17 @@ toolchain, which is made up of Binutils and GCC. The programs from these
packages will be linked statically in order for them to be used independently
of the host system. The second thing to do is build Glibc, the C library. Glibc
will be compiled by the toolchain programs we just built in the first
-pass.</para>
+pass. The third thing to do is build a second pass of the toolchain. This time
+the toolchain will be dynamically linked against the newly built Glibc. The
+remaining Chapter 5 packages are all built using this second pass toolchain and
+dynamically linked against the new host-independent Glibc. When this is done,
+the LFS installation process will no longer depend on the host distribution,
+with the exception of the running kernel.</para>
-<para>The third thing to do is build a second pass of the toolchain. This time
-the toolchain will be dynamically linked against the newly built Glibc. The
-remaining Chapter 5 packages are all built using this second pass toolchain and
-dynamically linked against the new host-independent Glibc. When this is done,
-the LFS installation process will no longer depend on the host distribution,
-with the exception of the running kernel. This is known as <quote>self
-contained</quote> and <quote>self hosted</quote>. There is a discussion of the
-differences between statically and dynamically linked programs at the beginning
-of Chapter 5.</para>
-
-<para>You may be asking yourself <quote>that seems like a lot of work, just to
-get away from my host distribution</quote>. Let us take a few minutes to
-discuss this question. The work involved in building the packages in Chapter 5
-is to ensure that as little information as possible from your host makes it into
-your brand new LFS system. When you build the first two packages in Chapter 5,
-Binutils and GCC, they will be compiled statically. This means that the
-version of the C library on your host distribution will be embedded inside all
-the binary programs you just compiled. This has the potential to cause
-problems for you down the road. The host's Glibc is usually an unknown
-quantity and might even contain bugs or anything else we don't know about
-until it is too late. A well known issue is that statically linked binaries
-compiled on a Glibc-2.2.x based system that contain calls to the
-<emphasis>getpwuid()</emphasis> function crash when run on a Glibc-2.3.x based
-system. Seeing as we are about to build a Glibc-2.3.x based system, we need to
-shield ourselves from problems of this nature. The procedure employed in
-Chapter 5 achieves this goal. With all these things in mind, you can see that
-the extra effort to compile Binutils and GCC twice is well worth it.</para>
+<para>You may be asking yourself <quote>that seems like a lot of work, just to
+get away from my host distribution?</quote>. A full technical and in-depth
+explanation is provided at the start of Chapter 5, including some notes on the
+differences between statically and dynamically linked programs.</para>
<para>In Chapter 6 your real LFS system will be built. The chroot (change root)
program is used to enter a virtual environment and start a new shell whose root