1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
<sect1 id="ch-scatter-how">
<title>How things are going to be done</title>
<?dbhtml filename="how.html" dir="chapter01"?>
<para>You are going to build your LFS system by using a previously installed
Linux distribution (such as Debian, Mandrake, Red Hat, or SuSE). This existing
Linux system (the host) will be used as a starting point, because you will need
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 <xref linkend="chapter-making-space"/> you will first create a new
partition and file system, the place where your new LFS system will be compiled
and installed. Then in <xref linkend="chapter-getting-materials"/> you download
all the packages and patches needed to build an LFS system, and store them on
the new file system. In <xref linkend="chapter-preparation"/> you set up a good
environment to work in.</para>
<para><xref linkend="chapter-temporary-tools"/> then discusses the installation
of a number of packages that form the basic development suite used to build the
actual system in <xref linkend="chapter-building-system"/>.</para>
<para>The first thing to be done in <xref linkend="chapter-temporary-tools"/>
is build a first pass of the <emphasis>toolchain</emphasis>, consisting of
Binutils and GCC. The programs from these packages will be linked statically in
order for them to be usable independently of the host system (thus making it
in theory possible to skip the second passes). The second thing to do is build
Glibc, the C library. Glibc will be compiled by the just-built toolchain
programs. The third thing to do is build a second pass of the toolchain, this
time linking it dynamically against the newly built Glibc. The remaining <xref
linkend="chapter-temporary-tools"/> packages are all built using this second
pass toolchain and are 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>You may be thinking that <quote>this seems like a lot of work, just to
get away from my host distribution</quote>. Well, a full technical explanation
is provided at the start of <xref linkend="chapter-temporary-tools"/>,
including some notes on the differences between statically and dynamically
linked programs.</para>
<para>In <xref linkend="chapter-building-system"/> your real LFS system will be
built. The <command>chroot</command> (change root) program is used to enter a
virtual environment and start a new shell whose root directory will be set to
the LFS partition. This is very similar to rebooting and instructing the kernel
to mount the LFS partition as the root partition. The reason that you don't
actually reboot, but instead chroot, is that creating a bootable system
requires additional work which isn't necessary just yet. But the major
advantage is that chrooting allows you to continue using the host while LFS is
being built. While waiting for package compilation to complete, you can simply
switch to a different VC (Virtual Console) or X desktop and continue using the
computer as you normally would.</para>
<para>To finish the installation, the bootscripts are set up in
<xref linkend="chapter-bootscripts"/>, the kernel and bootloader are set up in
<xref linkend="chapter-mixture"/>, and <xref linkend="chapter-finalizing"/>
contains some pointers to help you after you finish the book. Then, finally,
you're ready to reboot your computer into your new LFS system.</para>
<para>This is the process in a nutshell. Detailed information on all the steps
taken is given in the chapters and sections as you progress through them. If
something isn't completely clear now, don't worry, everything will fall into
place soon.</para>
</sect1>
|