source: chapter08/kernel.xml@ 53e6474

6.1 6.1.1
Last change on this file since 53e6474 was 53e6474, checked in by Manuel Canales Esparcia <manuel@…>, 19 years ago

Ported r4922 from trunk: Added a missing period.

git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/6.1/BOOK@4923 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 9.9 KB
Line 
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" [
3 <!ENTITY % general-entities SYSTEM "../general.ent">
4 %general-entities;
5]>
6<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 kernel and the header files.</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,
25GCC, 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&mdash;configuration,
33compilation, and installation. Read the <filename>README</filename>
34file in the kernel source tree for alternate methods to the way this
35book configures the kernel.</para>
36
37<para>Prepare for compilation by running the following command:</para>
38
39<screen><userinput>make mrproper</userinput></screen>
40
41<para>This ensures that the kernel tree is absolutely clean. The
42kernel team recommends that this command be issued prior to each
43kernel compilation. Do not rely on the source tree being clean after
44un-tarring.</para>
45
46<para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to
47compile the keymap into the kernel, issue the command below:</para>
48
49<screen><userinput>loadkeys -m /usr/share/kbd/keymaps/<replaceable>[path to keymap]</replaceable> &gt; \
50 drivers/char/defkeymap.c</userinput></screen>
51
52<para>For example, if using a Dutch keyboard, use
53<filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para>
54
55<para>Configure the kernel via a menu-driven interface. BLFS has some
56information regarding particular kernel configuration requirements of
57packages outside of LFS at <ulink
58url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>:</para>
59
60<screen><userinput>make menuconfig</userinput></screen>
61
62<para>Alternatively, <command>make oldconfig</command> may be more appropriate in some
63situations. See the <filename>README</filename> file for more
64information.</para>
65
66<note><para>When configuring the kernel, be sure to enable the
67<quote>Support for hot-pluggable devices</quote> option under the
68<quote>General Setup</quote> menu. This enables hotplug events that
69are used by <command>udev</command> to populate the <filename
70class="directory">/dev</filename> directory with device
71nodes.</para></note>
72
73<para>If desired, skip kernel configuration by copying the kernel
74config file, <filename>.config</filename>, from the host system
75(assuming it is available) to the unpacked <filename
76class="directory">linux-&linux-version;</filename> directory. However,
77we do not recommend this option. It is often better to explore all the
78configuration menus and create the kernel configuration from
79scratch.</para>
80
81<para>For POSIX-shared memory support, ensure that the kernel config
82option <quote>Virtual memory file system support</quote> is enabled.
83It resides within the <quote>File systems</quote> menu and is normally
84enabled by default.</para>
85
86<para>LFS bootscripts make the assumption that either both
87<quote>Support for Host-side USB</quote> and <quote>USB device
88filesystem</quote> have been compiled directly into the kernel, or
89that neither is compiled at all. Bootscripts will not work properly
90if it is a module (usbcore.ko).</para>
91
92<note><para>NPTL requires the kernel to be compiled with GCC 3.x, in
93this case &gcc-version;. Compiling with 2.95.x is known to cause failures in
94the glibc test suite, so it is not recommended to compile the kernel
95with gcc 2.95.x.</para></note>
96
97<para>Compile the kernel image and modules:</para>
98
99<screen><userinput>make</userinput></screen>
100
101<para>If using kernel modules, an
102<filename>/etc/modprobe.conf</filename> file may be needed.
103Information pertaining to modules and kernel configuration is
104located in the kernel documentation in the <filename
105class="directory">linux-&linux-version;/Documentation</filename>
106directory. The <emphasis>modprobe.conf</emphasis> man page may also be
107of interest.</para>
108
109<para>Be very careful when reading other documentation because it
110usually applies to 2.4.x kernels only. As far as we know, kernel
111configuration issues specific to Hotplug and Udev are not documented.
112The problem is that Udev will create a device node only if Hotplug or
113a user-written script inserts the corresponding module into the
114kernel, and not all modules are detectable by Hotplug. Note that
115statements like the one below in the
116<filename>/etc/modprobe.conf</filename> file do not work with
117Udev:</para>
118
119<para><screen>alias char-major-XXX some-module</screen></para>
120
121<para>Because of the complications with Hotplug, Udev, and modules, we
122strongly recommend starting with a completely non-modular kernel
123configuration, especially if this is the first time using Udev.</para>
124
125<para>Install the modules, if the kernel configuration uses them:</para>
126
127<screen><userinput>make modules_install</userinput></screen>
128
129<para>If there are many modules and very little space, consider
130stripping and compressing the modules. For most users, such
131compression is not worth the time, but if the system is pressed for
132space, see <ulink
133url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para>
134
135<para>After kernel compilation is complete, additional steps are
136required to complete the installation. Some files need to be copied to
137the <filename class="directory">/boot</filename> directory.</para>
138
139<para>The path to the kernel image may vary depending on the platform
140being used. Issue the following command to install the kernel:</para>
141
142<screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
143
144<para><filename>System.map</filename> is a symbol file for the kernel.
145It maps the function entry points of every function in the kernel API,
146as well as the addresses of the kernel data structures for the running
147kernel. Issue the following command to install the map file:</para>
148
149<screen><userinput>cp System.map /boot/System.map-&linux-version;</userinput></screen>
150
151<para>The kernel configuration file <filename>.config</filename>
152produced by the <command>make menuconfig</command> step
153above contains all the configuration selections for the kernel
154that was just compiled. It is a good idea to keep this file for future
155reference:</para>
156
157<screen><userinput>cp .config /boot/config-&linux-version;</userinput></screen>
158
159<para>It is important to note that the files in the kernel source
160directory are not owned by <emphasis>root</emphasis>. Whenever a
161package is unpacked as user <emphasis>root</emphasis> (like we did
162inside chroot), the files have the user and group IDs of whatever
163they were on the packager's computer. This is usually not a problem
164for any other package to be installed because the source tree is
165removed after the installation. However, the Linux source tree is
166often retained for a long time. Because of this, there is a chance
167that whatever user ID the packager used will be assigned to somebody
168on the machine. That person would then have write access to the kernel
169source.</para>
170
171<para>If the kernel source tree is going to be retained, run
172<command>chown -R 0:0</command> on the <filename
173class="directory">linux-&linux-version;</filename> directory to ensure
174all files are owned by user <emphasis>root</emphasis>.</para>
175
176<warning><para>Some kernel documentation recommends creating a symlink from
177<filename class="symlink">/usr/src/linux</filename> pointing to the kernel
178source directory. This is specific to kernels prior to the 2.6 series and
179<emphasis>must not</emphasis> be created on an LFS system as it can cause
180problems for packages you may wish to build once your base LFS system is
181complete.</para></warning>
182
183</sect2>
184
185
186<sect2 id="contents-kernel" role="content"><title>Contents of Linux</title>
187
188<segmentedlist>
189<segtitle>Installed files</segtitle>
190<seglistitem><seg>kernel, kernel headers,
191and System.map</seg></seglistitem>
192</segmentedlist>
193
194<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
195<?dbfo list-presentation="list"?>
196<?dbhtml list-presentation="table"?>
197
198<varlistentry id="kernel">
199<term><filename>kernel</filename></term>
200<listitem>
201<para>The engine of the Linux system. When turning on the computer,
202the kernel is the first part of the operating system that gets loaded.
203It detects and initializes all components of the computer's hardware,
204then makes these components available as a tree of files to the
205software and turns a single CPU into a multitasking machine capable
206of running scores of programs seemingly at the same time.</para>
207<indexterm zone="ch-bootable-kernel kernel"><primary sortas="b-kernel">kernel</primary></indexterm>
208</listitem>
209</varlistentry>
210
211<varlistentry id="kernel-headers">
212<term><filename>kernel headers</filename></term>
213<listitem>
214<para>Defines the interface to the services that the kernel provides.
215The headers in the system's <filename
216class="directory">include</filename> directory should
217<emphasis>always</emphasis> be the ones against which Glibc was
218compiled and therefore, should <emphasis>not</emphasis> be replaced
219when upgrading the kernel.</para>
220<indexterm zone="ch-bootable-kernel kernel-headers"><primary sortas="e-kernel-headers">kernel headers</primary></indexterm>
221</listitem>
222</varlistentry>
223
224<varlistentry id="System.map">
225<term><filename>System.map</filename></term>
226<listitem>
227<para>A list of addresses and symbols; it maps the entry points and
228addresses of all the functions and data structures in the
229kernel</para>
230<indexterm zone="ch-bootable-kernel System.map"><primary sortas="e-/boot/System.map">/boot/System.map</primary></indexterm>
231</listitem>
232</varlistentry>
233</variablelist>
234
235</sect2>
236
237</sect1>
238
Note: See TracBrowser for help on using the repository browser.