Changeset b78c747 for chapter08/kernel.xml
- Timestamp:
- 12/18/2005 01:44:24 PM (18 years ago)
- Branches:
- 10.0, 10.0-rc1, 10.1, 10.1-rc1, 11.0, 11.0-rc1, 11.0-rc2, 11.0-rc3, 11.1, 11.1-rc1, 11.2, 11.2-rc1, 11.3, 11.3-rc1, 12.0, 12.0-rc1, 12.1, 12.1-rc1, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.5-systemd, 7.6, 7.6-systemd, 7.7, 7.7-systemd, 7.8, 7.8-systemd, 7.9, 7.9-systemd, 8.0, 8.1, 8.2, 8.3, 8.4, 9.0, 9.1, arm, bdubbs/gcc13, ml-11.0, multilib, renodr/libudev-from-systemd, s6-init, trunk, xry111/arm64, xry111/arm64-12.0, xry111/clfs-ng, xry111/lfs-next, xry111/loongarch, xry111/loongarch-12.0, xry111/loongarch-12.1, xry111/mips64el, xry111/pip3, xry111/rust-wip-20221008, xry111/update-glibc
- Children:
- d781ffb
- Parents:
- 7686ca6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter08/kernel.xml
r7686ca6 rb78c747 1 1 <?xml version="1.0" encoding="ISO-8859-1"?> 2 <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ 2 <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" 3 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ 3 4 <!ENTITY % general-entities SYSTEM "../general.ent"> 4 5 %general-entities; 5 6 ]> 7 6 8 <sect1 id="ch-bootable-kernel" role="wrap"> 7 <title>Linux-&linux-version;</title> 8 <?dbhtml filename="kernel.html"?> 9 10 <indexterm zone="ch-bootable-kernel"><primary sortas="a-Linux">Linux</primary></indexterm> 11 12 <sect2 role="package"><title/> 13 <para>The Linux package contains the Linux kernel.</para> 14 15 <segmentedlist> 16 <segtitle>&buildtime;</segtitle> 17 <segtitle>&diskspace;</segtitle> 18 <seglistitem><seg>4.20 SBU</seg> 19 <seg>181 MB</seg></seglistitem> 20 </segmentedlist> 21 22 <segmentedlist> 23 <segtitle>&dependencies;</segtitle> 24 <seglistitem><seg>Bash, Binutils, Coreutils, Findutils, 25 GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, and Sed</seg></seglistitem> 26 </segmentedlist> 27 </sect2> 28 29 <sect2 role="installation"> 30 <title>Installation of the kernel</title> 31 32 <para>Building the kernel involves a few steps—configuration, compilation, 33 and installation. Read the <filename>README</filename> file in the kernel source 34 tree for alternative methods to the way this book configures the kernel.</para> 35 36 <para>Prepare for compilation by running the following command:</para> 9 <?dbhtml filename="kernel.html"?> 10 11 <title>Linux-&linux-version;</title> 12 13 <indexterm zone="ch-bootable-kernel"> 14 <primary sortas="a-Linux">Linux</primary> 15 </indexterm> 16 17 <sect2 role="package"> 18 <title/> 19 20 <para>The Linux package contains the Linux kernel.</para> 21 22 <segmentedlist> 23 <segtitle>&buildtime;</segtitle> 24 <segtitle>&diskspace;</segtitle> 25 26 <seglistitem> 27 <seg>4.20 SBU</seg> 28 <seg>181 MB</seg> 29 </seglistitem> 30 </segmentedlist> 31 32 <segmentedlist> 33 <segtitle>&dependencies;</segtitle> 34 35 <seglistitem> 36 <seg>Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, 37 Make, Modutils, Perl, and Sed</seg> 38 </seglistitem> 39 </segmentedlist> 40 41 </sect2> 42 43 <sect2 role="installation"> 44 <title>Installation of the kernel</title> 45 46 <para>Building the kernel involves a few steps—configuration, 47 compilation, and installation. Read the <filename>README</filename> file 48 in the kernel source tree for alternative methods to the way this book 49 configures the kernel.</para> 50 51 <para>Prepare for compilation by running the following command:</para> 37 52 38 53 <screen><userinput>make mrproper</userinput></screen> 39 54 40 <para>This ensures that the kernel tree is absolutely clean. The41 kernel team recommends that this command be issued prior to each42 kernel compilation. Do not rely on the source tree being clean after43 un-tarring.</para>44 45 <para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to46 compile the keymap into the kernel, issue the command below:</para>55 <para>This ensures that the kernel tree is absolutely clean. The 56 kernel team recommends that this command be issued prior to each 57 kernel compilation. Do not rely on the source tree being clean after 58 un-tarring.</para> 59 60 <para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to 61 compile the keymap into the kernel, issue the command below:</para> 47 62 48 63 <screen role="nodump"><userinput>loadkeys -m /usr/share/kbd/keymaps/<replaceable>[path to keymap]</replaceable> > \ 49 64 drivers/char/defkeymap.c</userinput></screen> 50 65 51 <para>For example, if using a Dutch keyboard, use52 <filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para>53 54 <para>Configure the kernel via a menu-driven interface. BLFS has some55 information regarding particular kernel configuration requirements of56 packages outside of LFS at <ulink57 url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>:</para>66 <para>For example, if using a Dutch keyboard, use 67 <filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para> 68 69 <para>Configure the kernel via a menu-driven interface. BLFS has some 70 information regarding particular kernel configuration requirements of 71 packages outside of LFS at <ulink 72 url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>:</para> 58 73 59 74 <screen role="nodump"><userinput>make menuconfig</userinput></screen> 60 75 61 <para>Alternatively, <command>make oldconfig</command> may be more appropriate in some 62 situations. See the <filename>README</filename> file for more 63 information.</para> 64 65 <para>If desired, skip kernel configuration by copying the kernel 66 config file, <filename>.config</filename>, from the host system 67 (assuming it is available) to the unpacked <filename 68 class="directory">linux-&linux-version;</filename> directory. However, 69 we do not recommend this option. It is often better to explore all the 70 configuration menus and create the kernel configuration from 71 scratch.</para> 72 73 <note><para>NPTL requires the kernel to be compiled with GCC-3.x or later, in this case 74 &gcc-version;. It is not recommended to compile the kernel with GCC-2.95.x, as 75 this causes failures in the Glibc test suite. Normally, this wouldn't be 76 mentioned as LFS doesn't build GCC-2.95.x. Unfortunately, the kernel 77 documentation is outdated and still claims GCC-2.95.3 is the recommended 78 compiler.</para></note> 79 80 <para>Compile the kernel image and modules:</para> 76 <para>Alternatively, <command>make oldconfig</command> may be more 77 appropriate in some situations. See the <filename>README</filename> 78 file for more information.</para> 79 80 <para>If desired, skip kernel configuration by copying the kernel 81 config file, <filename>.config</filename>, from the host system 82 (assuming it is available) to the unpacked <filename 83 class="directory">linux-&linux-version;</filename> directory. However, 84 we do not recommend this option. It is often better to explore all the 85 configuration menus and create the kernel configuration from 86 scratch.</para> 87 88 <note> 89 <para>NPTL requires the kernel to be compiled with GCC-3.x or later, in 90 this case &gcc-version;. It is not recommended to compile the kernel with 91 GCC-2.95.x, as this causes failures in the Glibc test suite. Normally, 92 this wouldn't be mentioned as LFS doesn't build GCC-2.95.x. Unfortunately, 93 the kernel documentation is outdated and still claims GCC-2.95.3 is the 94 recommended compiler.</para> 95 </note> 96 97 <para>Compile the kernel image and modules:</para> 81 98 82 99 <screen><userinput>make</userinput></screen> 83 100 84 <para>If using kernel modules, an <filename>/etc/modprobe.conf</filename> file85 may be needed. Information pertaining to modules and kernel configuration is86 located in the kernel documentation in the <filename87 class="directory">linux-&linux-version;/Documentation</filename> directory.88 Also, <filename>modprobe.conf(5)</filename> may be of interest.</para>89 90 <para>Be very careful when reading other documentation relating to kernel91 modules because it usually applies to 2.4.x kernels only. As far as we know,92 kernel configuration issues specific to Hotplug and Udev are not documented.93 The problem is that Udev will create a device node only if Hotplug or a94 user-written script inserts the corresponding module into the kernel, and not95 all modules are detectable by Hotplug. Note that statements like the one below96 in the <filename>/etc/modprobe.conf</filename> file do not work with97 Udev:</para>98 99 < para><screen>alias char-major-XXX some-module</screen></para>100 101 <para>Because of the complications with Hotplug, Udev, and modules, we102 strongly recommend starting with a completely non-modular kernel103 configuration, especially if this is the first time using Udev.</para>104 105 <para>Install the modules, if the kernel configuration uses them:</para>101 <para>If using kernel modules, an <filename>/etc/modprobe.conf</filename> file 102 may be needed. Information pertaining to modules and kernel configuration is 103 located in the kernel documentation in the <filename 104 class="directory">linux-&linux-version;/Documentation</filename> directory. 105 Also, <filename>modprobe.conf(5)</filename> may be of interest.</para> 106 107 <para>Be very careful when reading other documentation relating to kernel 108 modules because it usually applies to 2.4.x kernels only. As far as we know, 109 kernel configuration issues specific to Hotplug and Udev are not documented. 110 The problem is that Udev will create a device node only if Hotplug or a 111 user-written script inserts the corresponding module into the kernel, and not 112 all modules are detectable by Hotplug. Note that statements like the one below 113 in the <filename>/etc/modprobe.conf</filename> file do not work with 114 Udev:</para> 115 116 <screen><literal>alias char-major-XXX some-module</literal></screen> 117 118 <para>Because of the complications with Hotplug, Udev, and modules, we 119 strongly recommend starting with a completely non-modular kernel 120 configuration, especially if this is the first time using Udev.</para> 121 122 <para>Install the modules, if the kernel configuration uses them:</para> 106 123 107 124 <screen><userinput>make modules_install</userinput></screen> 108 125 109 <para>After kernel compilation is complete, additional steps are110 required to complete the installation. Some files need to be copied to111 the <filename class="directory">/boot</filename> directory.</para>112 113 <para>The path to the kernel image may vary depending on the platform114 being used. The following command assumes an x86 architecture:</para>126 <para>After kernel compilation is complete, additional steps are 127 required to complete the installation. Some files need to be copied to 128 the <filename class="directory">/boot</filename> directory.</para> 129 130 <para>The path to the kernel image may vary depending on the platform 131 being used. The following command assumes an x86 architecture:</para> 115 132 116 133 <screen><userinput>cp -v arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen> 117 134 118 <para><filename>System.map</filename> is a symbol file for the kernel.119 It maps the function entry points of every function in the kernel API,120 as well as the addresses of the kernel data structures for the running121 kernel. Issue the following command to install the map file:</para>135 <para><filename>System.map</filename> is a symbol file for the kernel. 136 It maps the function entry points of every function in the kernel API, 137 as well as the addresses of the kernel data structures for the running 138 kernel. Issue the following command to install the map file:</para> 122 139 123 140 <screen><userinput>cp -v System.map /boot/System.map-&linux-version;</userinput></screen> 124 141 125 <para>The kernel configuration file <filename>.config</filename>126 produced by the <command>make menuconfig</command> step127 above contains all the configuration selections for the kernel128 that was just compiled. It is a good idea to keep this file for future129 reference:</para>142 <para>The kernel configuration file <filename>.config</filename> 143 produced by the <command>make menuconfig</command> step 144 above contains all the configuration selections for the kernel 145 that was just compiled. It is a good idea to keep this file for future 146 reference:</para> 130 147 131 148 <screen><userinput>cp -v .config /boot/config-&linux-version;</userinput></screen> 132 149 133 <para>It is important to note that the files in the kernel source 134 directory are not owned by <emphasis>root</emphasis>. Whenever a 135 package is unpacked as user <emphasis>root</emphasis> (like we did 136 inside chroot), the files have the user and group IDs of whatever 137 they were on the packager's computer. This is usually not a problem 138 for any other package to be installed because the source tree is 139 removed after the installation. However, the Linux source tree is 140 often retained for a long time. Because of this, there is a chance 141 that whatever user ID the packager used will be assigned to somebody 142 on the machine. That person would then have write access to the kernel 143 source.</para> 144 145 <para>If the kernel source tree is going to be retained, run 146 <command>chown -R 0:0</command> on the <filename 147 class="directory">linux-&linux-version;</filename> directory to ensure 148 all files are owned by user <emphasis>root</emphasis>.</para> 149 150 <warning><para>Some kernel documentation recommends creating a symlink from 151 <filename class="symlink">/usr/src/linux</filename> pointing to the kernel 152 source directory. This is specific to kernels prior to the 2.6 series and 153 <emphasis>must not</emphasis> be created on an LFS system as it can cause 154 problems for packages you may wish to build once your base LFS system is 155 complete.</para> 156 157 <para>Also, the headers in the system's 158 <filename class="directory">include</filename> directory should 159 <emphasis>always</emphasis> be the ones against which Glibc was compiled, 160 that is, the ones from the Linux-Libc-Headers package, and therefore, should 161 <emphasis>never</emphasis> be replaced by the kernel headers.</para></warning> 162 163 </sect2> 164 165 166 <sect2 id="contents-kernel" role="content"><title>Contents of Linux</title> 167 168 <segmentedlist> 169 <segtitle>Installed files</segtitle> 170 <seglistitem><seg>config-&linux-version;, lfskernel-&linux-version;, 171 and System.map-&linux-version;</seg></seglistitem> 172 </segmentedlist> 173 174 <variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead> 175 <?dbfo list-presentation="list"?> 176 <?dbhtml list-presentation="table"?> 177 178 <varlistentry id="config"> 179 <term><filename>config-&linux-version;</filename></term> 180 <listitem> 181 <para>Contains all the configuration selections for the kernel</para> 182 <indexterm zone="ch-bootable-kernel config"><primary sortas="e-/boot/config">/boot/config-&linux-version;</primary></indexterm> 183 </listitem> 184 </varlistentry> 185 186 <varlistentry id="lfskernel"> 187 <term><filename>lfskernel-&linux-version;</filename></term> 188 <listitem> 189 <para>The engine of the Linux system. When turning on the computer, 190 the kernel is the first part of the operating system that gets loaded. 191 It detects and initializes all components of the computer's hardware, 192 then makes these components available as a tree of files to the 193 software and turns a single CPU into a multitasking machine capable 194 of running scores of programs seemingly at the same time</para> 195 <indexterm zone="ch-bootable-kernel lfskernel"><primary sortas="b-lfskernel">lfskernel-&linux-version;</primary></indexterm> 196 </listitem> 197 </varlistentry> 198 199 <varlistentry id="System.map"> 200 <term><filename>System.map-&linux-version;</filename></term> 201 <listitem> 202 <para>A list of addresses and symbols; it maps the entry points and 203 addresses of all the functions and data structures in the 204 kernel</para> 205 <indexterm zone="ch-bootable-kernel System.map"><primary sortas="e-/boot/System.map">/boot/System.map-&linux-version;</primary></indexterm> 206 </listitem> 207 </varlistentry> 208 </variablelist> 209 210 </sect2> 150 <para>It is important to note that the files in the kernel source 151 directory are not owned by <emphasis>root</emphasis>. Whenever a 152 package is unpacked as user <emphasis>root</emphasis> (like we did 153 inside chroot), the files have the user and group IDs of whatever 154 they were on the packager's computer. This is usually not a problem 155 for any other package to be installed because the source tree is 156 removed after the installation. However, the Linux source tree is 157 often retained for a long time. Because of this, there is a chance 158 that whatever user ID the packager used will be assigned to somebody 159 on the machine. That person would then have write access to the kernel 160 source.</para> 161 162 <para>If the kernel source tree is going to be retained, run 163 <command>chown -R 0:0</command> on the <filename 164 class="directory">linux-&linux-version;</filename> directory to ensure 165 all files are owned by user <emphasis>root</emphasis>.</para> 166 167 <warning> 168 <para>Some kernel documentation recommends creating a symlink from 169 <filename class="symlink">/usr/src/linux</filename> pointing to the kernel 170 source directory. This is specific to kernels prior to the 2.6 series and 171 <emphasis>must not</emphasis> be created on an LFS system as it can cause 172 problems for packages you may wish to build once your base LFS system is 173 complete.</para> 174 175 <para>Also, the headers in the system's 176 <filename class="directory">include</filename> directory should 177 <emphasis>always</emphasis> be the ones against which Glibc was compiled, 178 that is, the ones from the Linux-Libc-Headers package, and therefore, should 179 <emphasis>never</emphasis> be replaced by the kernel headers.</para> 180 </warning> 181 182 </sect2> 183 184 185 <sect2 id="contents-kernel" role="content"> 186 <title>Contents of Linux</title> 187 188 <segmentedlist> 189 <segtitle>Installed files</segtitle> 190 191 <seglistitem> 192 <seg>config-&linux-version;, lfskernel-&linux-version;, and 193 System.map-&linux-version;</seg> 194 </seglistitem> 195 </segmentedlist> 196 197 <variablelist> 198 <bridgehead renderas="sect3">Short Descriptions</bridgehead> 199 <?dbfo list-presentation="list"?> 200 <?dbhtml list-presentation="table"?> 201 202 <varlistentry id="config"> 203 <term><filename>config-&linux-version;</filename></term> 204 <listitem> 205 <para>Contains all the configuration selections for the kernel</para> 206 <indexterm zone="ch-bootable-kernel config"> 207 <primary sortas="e-/boot/config">/boot/config-&linux-version;</primary> 208 </indexterm> 209 </listitem> 210 </varlistentry> 211 212 <varlistentry id="lfskernel"> 213 <term><filename>lfskernel-&linux-version;</filename></term> 214 <listitem> 215 <para>The engine of the Linux system. When turning on the computer, 216 the kernel is the first part of the operating system that gets loaded. 217 It detects and initializes all components of the computer's hardware, 218 then makes these components available as a tree of files to the 219 software and turns a single CPU into a multitasking machine capable 220 of running scores of programs seemingly at the same time</para> 221 <indexterm zone="ch-bootable-kernel lfskernel"> 222 <primary sortas="b-lfskernel">lfskernel-&linux-version;</primary> 223 </indexterm> 224 </listitem> 225 </varlistentry> 226 227 <varlistentry id="System.map"> 228 <term><filename>System.map-&linux-version;</filename></term> 229 <listitem> 230 <para>A list of addresses and symbols; it maps the entry points and 231 addresses of all the functions and data structures in the 232 kernel</para> 233 <indexterm zone="ch-bootable-kernel System.map"> 234 <primary sortas="e-/boot/System.map">/boot/System.map-&linux-version;</primary> 235 </indexterm> 236 </listitem> 237 </varlistentry> 238 239 </variablelist> 240 241 </sect2> 211 242 212 243 </sect1>
Note:
See TracChangeset
for help on using the changeset viewer.