aboutsummaryrefslogtreecommitdiffstats
path: root/chapter01/how.xml
blob: 1181abb3e618dbc605dceb78bd3486ce71162a9e (plain)
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
66
67
68
69
70
71
72
73
74
75
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>
<sect1 id="ch-scatter-how">
<title>How things are going to be done</title>
<?dbhtml filename="how.html"?>

<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-partitioning"/> 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 <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-final-preps"/> 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 will form the basic development suite (or <emphasis>toolchain</emphasis>) which is
used to build the actual system in <xref linkend="chapter-building-system"/>. 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 <xref linkend="chapter-temporary-tools"/> is build a
first pass of the toolchain, made up 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. The second thing to do is build Glibc, the
C library. Glibc will be compiled by the toolchain programs just built in
the first 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 <xref linkend="chapter-temporary-tools"/> 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>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
chroot (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 <quote>chrooting</quote> 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-bootable"/>, 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 the steps you 
will take are discussed in the chapters and package descriptions as you 
progress through them. If something isn't completely clear now, don't worry, 
everything will fall into place soon.</para>

<para>Please read <xref linkend="chapter-final-preps"/> carefully as it explains
 a few important things you should be aware of before you begin to work through
<xref linkend="chapter-temporary-tools"/> and beyond.</para>

</sect1>