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