source: chapter01/how.xml@ 04a3351

10.0 10.0-rc1 10.1 10.1-rc1 11.0 11.0-rc1 11.0-rc2 11.0-rc3 11.1 11.1-rc1 11.2 11.2-rc1 11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 6.0 6.1 6.1.1 6.3 6.4 6.5 6.6 6.7 6.8 7.0 7.1 7.2 7.3 7.4 7.5 7.5-systemd 7.6 7.6-systemd 7.7 7.7-systemd 7.8 7.8-systemd 7.9 7.9-systemd 8.0 8.1 8.2 8.3 8.4 9.0 9.1 arm bdubbs/gcc13 ml-11.0 multilib renodr/libudev-from-systemd s6-init trunk v5_0 v5_1 v5_1_1 xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since 04a3351 was 35c2fa60, checked in by Alex Gronenwoud <alex@…>, 21 years ago

More miscellaneous adjustments.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@2919 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 5.0 KB
Line 
1<sect1 id="ch01-how">
2<title>How things are going to be done</title>
3<?dbhtml filename="how.html" dir="chapter01"?>
4
5<para>You are going to build your LFS system by using a previously installed
6Linux distribution (such as Debian, Mandrake, Red Hat, or SuSE). This existing
7Linux system (the host) will be used as a starting point, because you will need
8programs like a compiler, linker and shell to build the new system. Normally
9all the required tools are available if you selected <quote>development</quote>
10as one of the options when you installed your distribution.</para>
11
12<para>In Chapter 3 you will first create a new Linux native partition and
13filesystem, the place where your new LFS system will be compiled and installed.
14Then in Chapter 4 you download all the packages and patches required to build
15an LFS system, and store them on the new filesystem.</para>
16
17<para>Chapter 5 will then discuss the installation of a number of packages that
18will form the basic development suite (or tool-set) which is used to build the
19actual system in Chapter 6. Some of these packages are needed to resolve
20circular dependencies. For example, to compile a compiler you need a
21compiler.</para>
22
23<para>The first thing to be done in Chapter 5 is build a first pass of the
24toolchain, which is made up of Binutils and GCC. The programs from these
25packages will be linked statically in order for them to be used independently
26of the host system. The second thing to do is build Glibc, the C library. Glibc
27will be compiled by the toolchain programs we just built in the first
28pass.</para>
29
30<para>The third thing to do is build a second pass of the toolchain. This time
31the toolchain will be dynamically linked against the newly built Glibc. The
32remaining Chapter 5 packages are all built using this second pass toolchain and
33dynamically linked against the new host-independent Glibc. When this is done,
34the LFS installation process will no longer depend on the host distribution,
35with the exception of the running kernel. This is known as <quote>self
36contained</quote> and <quote>self hosted</quote>. There is a discussion of the
37differences between statically and dynamically linked programs at the beginning
38of Chapter 5.</para>
39
40<para>You may be asking yourself <quote>that seems like a lot of work, just to
41get away from my host distribution</quote>. Let us take a few minutes to
42discuss this question. The work involved in building the packages in Chapter 5
43is to ensure that as little information as possible from your host makes it into
44your brand new LFS system. When you build the first two packages in Chapter 5,
45Binutils and GCC, they will be compiled statically. This means that the
46version of the C library on your host distribution will be embedded inside all
47the binary programs you just compiled. This has the potential to cause
48problems for you down the road. The host's Glibc is usually an unknown
49quantity and might even contain bugs or anything else we don't know about
50until it is too late. A well known issue is that statically linked binaries
51compiled on a Glibc-2.2.x based system that contain calls to the
52<emphasis>getpwuid()</emphasis> function crash when run on a Glibc-2.3.x based
53system. Seeing as we are about to build a Glibc-2.3.x based system, we need to
54shield ourselves from problems of this nature. The procedure employed in
55Chapter 5 achieves this goal. With all these things in mind, you can see that
56the extra effort to compile Binutils and GCC twice is well worth it.</para>
57
58<para>In Chapter 6 your real LFS system will be built. The chroot (change root)
59program is used to enter a virtual environment and start a new shell whose root
60directory will be set to the LFS partition. This is very similar to rebooting
61and instructing the kernel to mount the LFS partition as the root partition.
62The reason that you don't actually reboot, but instead chroot, is that creating
63a bootable system requires additional work which isn't necessary just yet.
64Another advantage is that chrooting allows you to continue using the host while
65LFS is being built. While waiting for package compilation to complete, you can
66simply switch to a different VC (Virtual Console) or X desktop and continue
67using the computer as you normally would.</para>
68
69<para>When all the software from Chapter 6 is installed, the temporary tools
70built in Chapter 5 are removed. In Chapters 7, 8 and 9 the installation will
71then be finalized. The bootscripts are set up in Chapter 7, the kernel and
72bootloader are set up in Chapter 8, and Chapter 9 has some pointers to help
73you after you finish the book. Then, finally, you're ready to reboot your
74computer into your new LFS system.</para>
75
76<para>This is the process in a nutshell. Detailed information on the steps you
77will take are discussed in the chapters and package descriptions as you
78progress through them. If something isn't completely clear now, don't worry,
79everything will fall into place soon.</para>
80
81<para>Please read Chapter 2 carefully as it explains a few important things you
82should be aware of before you begin to work through Chapters 5 and
83beyond.</para>
84
85</sect1>
86
Note: See TracBrowser for help on using the repository browser.