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