how.xml 5.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <sect1 id="ch01-how">
  2. <title>How things are going to be done</title>
  3. <?dbhtml filename="how.html" dir="chapter01"?>
  4. <para>You are going to build your LFS system by using a previously installed
  5. Linux distribution (such as Debian, Mandrake, Red Hat, or SuSE). This existing
  6. Linux system (the host) will be used as a starting point, because you will need
  7. programs like a compiler, linker and shell to build the new system. Normally
  8. all the required tools are available if you selected <quote>development</quote>
  9. as one of the options when you installed your distribution.</para>
  10. <para>In Chapter 3 you will first create a new Linux native partition and
  11. filesystem, the place where your new LFS system will be compiled and installed.
  12. Then in Chapter 4 you download all the packages and patches required to build
  13. an LFS system, and store them on the new filesystem.</para>
  14. <para>Chapter 5 will then discuss the installation of a number of packages that
  15. will form the basic development suite (or tool-set) which is used to build the
  16. actual system in Chapter 6. Some of these packages are needed to resolve
  17. circular dependencies. For example, to compile a compiler you need a
  18. compiler.</para>
  19. <para>The first thing to be done in Chapter 5 is build a first pass of the
  20. toolchain, which is made up of Binutils and GCC. The programs from these
  21. packages will be linked statically in order for them to be used independently
  22. of the host system. The second thing to do is build Glibc, the C library. Glibc
  23. will be compiled by the toolchain programs we just built in the first
  24. pass.</para>
  25. <para>The third thing to do is build a second pass of the toolchain. This time
  26. the toolchain will be dynamically linked against the newly built Glibc. The
  27. remaining Chapter 5 packages are all built using this second pass toolchain and
  28. dynamically linked against the new host-independent Glibc. When this is done,
  29. the LFS installation process will no longer depend on the host distribution,
  30. with the exception of the running kernel. This is known as <quote>self
  31. contained</quote> and <quote>self hosted</quote>. There is a discussion of the
  32. differences between statically and dynamically linked programs at the beginning
  33. of Chapter 5.</para>
  34. <para>You may be asking yourself <quote>that seems like a lot of work, just to
  35. get away from my host distribution</quote>. Let us take a few minutes to
  36. discuss this question. The work involved in building the packages in Chapter 5
  37. is to ensure that as little information as possible from your host makes it into
  38. your brand new LFS system. When you build the first two packages in Chapter 5,
  39. Binutils and GCC, they will be compiled statically. This means that the
  40. version of the C library on your host distribution will be embedded inside all
  41. the binary programs you just compiled. This has the potential to cause
  42. problems for you down the road. The host's Glibc is usually an unknown
  43. quantity and might even contain bugs or anything else we don't know about
  44. until it is too late. A well known issue is that statically linked binaries
  45. compiled on a Glibc-2.2.x based system that contain calls to the
  46. <emphasis>getpwuid()</emphasis> function crash when run on a Glibc-2.3.x based
  47. system. Seeing as we are about to build a Glibc-2.3.x based system, we need to
  48. shield ourselves from problems of this nature. The procedure employed in
  49. Chapter 5 achieves this goal. With all these things in mind, you can see that
  50. the extra effort to compile Binutils and GCC twice is well worth it.</para>
  51. <para>In Chapter 6 your real LFS system will be built. The chroot (change root)
  52. program is used to enter a virtual environment and start a new shell whose root
  53. directory will be set to the LFS partition. This is very similar to rebooting
  54. and instructing the kernel to mount the LFS partition as the root partition.
  55. The reason that you don't actually reboot, but instead chroot, is that creating
  56. a bootable system requires additional work which isn't necessary just yet.
  57. Another advantage is that chrooting allows you to continue using the host while
  58. LFS is being built. While waiting for package compilation to complete, you can
  59. simply switch to a different VC (Virtual Console) or X desktop and continue
  60. using the computer as you normally would.</para>
  61. <para>When all the software from Chapter 6 is installed, the temporary tools
  62. built in Chapter 5 are removed. In Chapters 7, 8 and 9 the installation will
  63. then be finalized. The bootscripts are set up in Chapter 7, the kernel and
  64. bootloader are set up in Chapter 8, and Chapter 9 has some pointers to help
  65. you after you finish the book. Then, finally, you're ready to reboot your
  66. computer into your new LFS system.</para>
  67. <para>This is the process in a nutshell. Detailed information on the steps you
  68. will take are discussed in the chapters and package descriptions as you
  69. progress through them. If something isn't completely clear now, don't worry,
  70. everything will fall into place soon.</para>
  71. <para>Please read Chapter 2 carefully as it explains a few important things you
  72. should be aware of before you begin to work through Chapters 5 and
  73. beyond.</para>
  74. </sect1>