source: chapter08/kernel.xml@ e464747

Last change on this file since e464747 was 033913f, checked in by Jim Gifford <jim@…>, 20 years ago

Fixed Typo

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

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