Introduction

In this chapter we will compile and install a minimal Linux system. This system will contain just enough tools to be able to start constructing the final LFS system in the next chapter.

The building of this minimal system is done in two steps: first we build a brand-new and host-independent toolchain (compiler, assembler, linker and libraries), and then use this to build all the other essential tools.

The files compiled in this chapter will be installed under the $LFS/tools directory, to keep them separate from the files installed in the next chapter. Since the packages compiled here are merely temporary, we don't want them to pollute the soon-to-be LFS system.

The key to learning what makes a Linux system work is to know what each package is used for, why the user or the system needs it. For this purpose a short summary of the content of each package is given before the actual installation instructions. For a short description of each program in a package, please refer to the corresponding section in Appendix A.

Several of the packages are patched before compilation, but only when the patch is needed to circumvent a problem. Often the patch is needed in both this and the next chapter, but sometimes in only one of them. So, don't worry when instructions for a downloaded patch seem to be missing.

During the installation of most packages you will see all kinds of compiler warnings scroll by on your screen. These are normal and can be safely ignored. They are just what they say they are: warnings -- mostly about improper, but not illegal, use of the C or C++ syntax. It's just that C standards have changed rather often and some packages still use the older standard, which is not really a problem.

Before continuing, make sure the LFS environment variable is set up properly (if you decided to make use of it) by executing the following:

echo $LFS

Make sure the output shows the path to your LFS partition's mount point, which is /mnt/lfs if you followed our example.