source: chapter08/kernel.xml@ 808f5af

6.1 6.1.1
Last change on this file since 808f5af was 808f5af, checked in by Archaic <archaic@…>, 19 years ago

Rewrote the usbfs warning. (merged from trunk r6260)

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