source: chapter01/how.xml@ 638a39cb

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 638a39cb was 638a39cb, checked in by Greg Schafer <greg@…>, 21 years ago

Small text rearrangement in Chapter 1 - how.xml.

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