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
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-scatter-how">
<title>How to Build an LFS System</title>
<?dbhtml filename="how.html"?>
<para>The LFS system will be built by using an existing running
Linux distribution (such as Debian, Mandrake, Red Hat, or SuSE). This
existing Linux system (the host) will be used as a starting point to
provide necessary programs, including a compiler, linker, and shell,
to build the new system. Select the <quote>development</quote> option
during the distribution installation to be able to access these
tools.</para>
<para>As an alternative to installing an entire separate distribution onto your
machine, you may wish to use the Linux From Scratch LiveCD. The CD works well as
a host system, providing all the tools you need to successfully follow the
instructions in this book. Additionally, it contains all the source packages,
patches and a copy of this book. So once you have the CD, no network connection
or additional downloads are necessary. For more information about the LFS LiveCD
or to download a copy, visit <ulink url="&livecd-root;"/>.</para>
<para><xref linkend="chapter-partitioning"/> of this book describes how
to create a new Linux native partition and file system, the place
where the new LFS system will be compiled and installed. <xref
linkend="chapter-getting-materials"/> explains which packages and
patches need to be downloaded to build an LFS system and how to store
them on the new file system. <xref linkend="chapter-final-preps"/>
discusses the setup for an appropriate working environment. Please read
<xref linkend="chapter-final-preps"/> carefully as it explains several
important issues the developer should be aware of before beginning to
work through <xref linkend="chapter-temporary-tools"/> and
beyond.</para>
<para><xref linkend="chapter-temporary-tools"/> explains the
installation of a number of packages that will form the basic
development suite (or toolchain) 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><xref linkend="chapter-temporary-tools"/> also shows the user how
to build a first pass of the toolchain, including Binutils and GCC
(first pass basically means these two core packages will be
re-installed a second time). The next step is to build Glibc, the C library.
Glibc will be compiled by the toolchain programs built in the first pass. Then,
a second pass of the toolchain will be built. This time, the toolchain will be
dynamically linked against the newly built Glibc. The remaining
<xref linkend="chapter-temporary-tools"/> packages are built using this second
pass toolchain. 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>While this may initially seem like a lot of work to isolate the new system
from the host distribution, a full technical explanation is provided at the
beginning of <xref linkend="chapter-temporary-tools"/>.</para>
<para>In <xref linkend="chapter-building-system"/>, the full LFS system is
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
system does not actually reboot, but instead <command>chroot</command>'s because creating a
bootable system requires additional work which is not necessary just
yet. The major advantage is that <quote>chrooting</quote> allows the
builder to continue using the host while LFS is being built. While
waiting for package compilation to complete, a user can switch to a
different virtual console (VC) or X desktop and continue using the
computer as normal.</para>
<para>To finish the installation, the LFS-Bootscripts are set up in <xref
linkend="chapter-bootscripts"/>, and the kernel and boot loader are set
up in <xref linkend="chapter-bootable"/>. <xref
linkend="chapter-finalizing"/> contains information on furthering the
LFS experience beyond this book. After the steps in this book have
been implemented, the computer will be ready to reboot into the new
LFS system.</para>
<para>This is the process in a nutshell. Detailed information on each
step is discussed in the following chapters and package descriptions.
Items that may seem complicated will be clarified, and everything will
fall into place as the reader embarks on the LFS adventure.</para>
</sect1>
|