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.