How things are going to be done
We are going to build the LFS system by using a previously installed
Linux distribution such as Debian, SuSE, Slackware, Mandrake, RedHat, etc.
We will use the existing Linux system as the development platform, because
we need tools like a compiler, linker, text editor, and other development
tools to build our system. Ordinarily, the required tools are available by
default if we selected "development" as one of our installation options
when we installed a Linux distribution.
After you have downloaded the packages that make up an LFS system,
we will create a new Linux native partition and filesystem. Here is where
the LFS system will be compiled and installed.
The next step, Chapter 5, will discuss the installation of a number of
packages that will form the basic development suite which is used to
build the actual system, or needed to resolve circular dependencies. For
example, you need a compiler to build a new compiler, and you need a shell
in order to install a new shell. The packages in this chapter will be linked
statically.
Static linking describes a method of compiling software so that
it does not require the presence of libraries when building is complete.
The resulting program is able to function on its own. The program is able to
do so because the pieces of the program that would normally remain in the
libraries are copied from the libraries and built right into the program.
Ordinarily, software is built with dynamic linking. This conserves storage
space and increases the efficiency of many programs. We statically link
our software in Chapter 5 because we will, in theory, be moving our
development system to a virtual environment where the already mentioned
libraries will be absent. If the software is built dynamically, our
development suite will not function. Since the libraries we are talking
about are provided by our distribution Linux, the goal of Chapter 5 is to
build a development environment where those libraries are not required
and is therefore independent of the distribution.
In Chapter 6 we will build and install our final system. We will use
the chroot program to enter a virtual environment and start a new shell
whose root directory will be set to the partition where we built all the
Chapter 5 software. This is very similar to rebooting and instructing the
kernel to mount our LFS partition as the root partition. The reason that
we don't actually reboot, but instead chroot, is that creating a bootable
static system requires additional work which simply isn't necessary. As
well, we can continue to use our platform system while we are building LFS.
While software is being compiled and installed you can simply switch to a
different VC (Virtual Console) or X desktop and continue using your
computer normally.
When all the software from Chapter 6 is installed, Chapters 7, 8 and 9
will help us finalize our installation. We will set up our boot
scripts in Chapter 7. In Chapter 8 we will build our final Linux kernel and
set up the Linux boot loader. Chapter 9 has some pointers to help you after
you finish the book. Then finally, you reboot your system and boot into your
new LFS system, and start to really use it.
This is the process in a nutshell. Detailed information on the steps
we 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.
It should become very clear shortly.
Please read Chapter 2 carefully as it explains a few important things
you should be aware of before you begin to work through Chapters 5 and
later.