source: chapter08/kernel.xml@ 6a6a08a

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

PDF fixes in chapter08. Updated Changelog and book version.

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

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