how.xml 5.2 KB

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