source: chapter08/kernel.xml@ 00cc7ce

6.0
Last change on this file since 00cc7ce was 00cc7ce, checked in by Manuel Canales Esparcia <manuel@…>, 20 years ago

Line wrap in screen blocks to fit the line length in PDF output.

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

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