kernel.xml 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
  3. <!ENTITY % general-entities SYSTEM "../general.ent">
  4. %general-entities;
  5. ]>
  6. <sect1 id="ch-bootable-kernel" xreflabel="Linux">
  7. <title>Linux-&linux-version;</title>
  8. <?dbhtml filename="kernel.html"?>
  9. <indexterm zone="ch-bootable-kernel"><primary sortas="a-Linux">Linux</primary></indexterm>
  10. <para>The Linux package contains the kernel and the header files.</para>
  11. <screen>&buildtime; All default options: 4.20 SBU
  12. &diskspace; All default options: 181 MB</screen>
  13. <para>Linux installation depends on: Bash, Binutils, Coreutils, Findutils,
  14. GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, Sed.</para>
  15. <sect2>
  16. <title>Installation of the kernel</title>
  17. <para>Building the kernel involves a few steps: configuration, compilation, and
  18. installation. If you don't like the way this book configures the kernel, view
  19. the <filename>README</filename> file in the kernel source tree for alternative
  20. methods.</para>
  21. <para>Prepare for compilation by running the following command:</para>
  22. <screen><userinput>make mrproper</userinput></screen>
  23. <para>This ensures that the kernel tree is absolutely clean. The kernel team
  24. recommends that this command be issued prior to <emphasis>each</emphasis>
  25. kernel compilation. You shouldn't rely on the source tree being clean after
  26. un-tarring.</para>
  27. <para>Configure the kernel via a menu-driven interface:</para>
  28. <screen><userinput>make menuconfig</userinput></screen>
  29. <para><userinput>make oldconfig</userinput> may be more appropriate in some
  30. situations. See the <filename>README</filename> file for more
  31. information.</para>
  32. <para>If you wish, you may skip kernel configuration by simply copying the
  33. kernel config file, <filename>.config</filename>, from your host system
  34. (assuming it is available) to the unpacked <filename class="directory">linux-&linux-version;</filename>
  35. directory. However, we
  36. don't recommend this option. You're much better off exploring all the
  37. configuration menus and creating your own kernel configuration from
  38. scratch.</para>
  39. <para>For POSIX shared memory support, ensure that the kernel config option
  40. <quote>Virtual memory file system support</quote> is enabled. It resides within
  41. the <quote>File systems</quote> menu and is normally enabled by default.</para>
  42. <note><para>NPTL requires the kernel to be compiled with GCC 3.x, in this case
  43. &gcc-version;. Compiling with 2.95.x is known to cause failures in the glibc
  44. testsuite, so do <emphasis>not</emphasis> compile the kernel with gcc 2.95.x
  45. unless you know what you're getting yourself into.</para></note>
  46. <para>Compile the kernel image and modules:</para>
  47. <screen><userinput>make</userinput></screen>
  48. <para>If you intend to use kernel modules, you will need an
  49. <filename>/etc/modprobe.conf</filename> file. Information pertaining
  50. to modules and to kernel configuration in general may be found in the
  51. kernel documentation, which is found in the
  52. <filename>linux-&linux-version;/Documentation</filename> directory. The
  53. modules.conf man page and the kernel HOWTO at
  54. <ulink url="http://www.tldp.org/HOWTO/Kernel-HOWTO.html"/> may also be of
  55. interest to you.</para>
  56. <para>Install the modules:</para>
  57. <screen><userinput>make modules_install</userinput></screen>
  58. <para>If you have a lot of modules and very little space, you may want to
  59. consider stripping and compressing the modules. For most people such compression
  60. isn't worth the trouble, but if you're really pressed for space, then have a look at
  61. <ulink url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para>
  62. <para>Kernel compilation has finished but more steps are required to complete
  63. the installation. Some files need to be copied to the <filename>/boot</filename>
  64. directory.</para>
  65. <para>The path to the kernel image may vary depending on the platform you're
  66. using. Issue the following command to install the kernel:</para>
  67. <screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
  68. <para><filename>System.map</filename> is a symbol file for the kernel. It maps
  69. the function entry points of every function in the kernel API (Application Programming Interface), as well as the
  70. addresses of the kernel data structures for the running kernel. Issue the
  71. following command to install the map file:</para>
  72. <screen><userinput>cp System.map /boot/System.map-&linux-version;</userinput></screen>
  73. <para><filename>.config</filename> is the kernel configuration file that was
  74. produced by the <command>make menuconfig</command> step above. It contains all
  75. the config selections for the kernel that was just compiled. It's a good idea
  76. to keep this file for future reference:</para>
  77. <screen><userinput>cp .config /boot/config-&linux-version;</userinput></screen>
  78. <para>It is important to note that the files in the kernel source directory are
  79. not owned by <emphasis>root</emphasis>. Whenever you unpack a package as user
  80. <emphasis>root</emphasis> (like we did here inside chroot), the files end up
  81. having the user and group IDs of whatever they were on the packager's computer.
  82. This is usually not a problem for any other package you install because you
  83. remove the source tree after the installation. But the Linux source tree is
  84. often kept around for a long time, so there's a chance that whatever user ID
  85. the packager used will be assigned to somebody on your machine and then that
  86. person would have write access to the kernel source.</para>
  87. <para>If you are going to keep the kernel source tree around, you may want to
  88. run <userinput>chown -R 0:0</userinput> on the
  89. <filename>linux-2.4.25</filename> directory to ensure all files are
  90. owned by user <emphasis>root</emphasis>.</para>
  91. </sect2>
  92. <sect2 id="contents-kernel"><title>Contents of Linux</title>
  93. <para><emphasis>Installed files</emphasis>: the kernel, the kernel headers,
  94. and the System.map</para>
  95. </sect2>
  96. <sect2><title>Short descriptions</title>
  97. <indexterm zone="ch-bootable-kernel kernel"><primary sortas="b-kernel">kernel</primary></indexterm>
  98. <para id="kernel">The <emphasis>kernel</emphasis> is the engine of your GNU/Linux system.
  99. When switching on your box, the kernel is the first part of your operating
  100. system that gets loaded. It detects and initializes all the components of your
  101. computer's hardware, then makes these components available as a tree of files
  102. to the software, and turns a single CPU into a multi-tasking machine capable
  103. of running scores of programs seemingly at the same time.</para>
  104. <indexterm zone="ch-bootable-kernel kernel-headers"><primary sortas="e-kernel-headers">kernel headers</primary></indexterm>
  105. <para id="kernel-headers">The <emphasis>kernel headers</emphasis> define the interface to the
  106. services that the kernel provides. The headers in your system's
  107. <filename>include</filename> directory should <emphasis>always</emphasis> be
  108. the ones against which Glibc was compiled and should therefore
  109. <emphasis>not</emphasis> be replaced when upgrading the kernel.</para>
  110. <indexterm zone="ch-bootable-kernel System.map"><primary sortas="e-/boot/System.map">/boot/System.map</primary></indexterm>
  111. <para id="System.map">The <filename>System.map</filename> file is a list of addresses and
  112. symbols. It maps the entry points and addresses of all the functions and data
  113. structures in the kernel.</para>
  114. </sect2>
  115. </sect1>