source: chapter08/kernel.xml@ 56346b5

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

Fixed the remaining beginpage tags.

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