source: chapter08/kernel.xml@ effd9c6

6.1.1
Last change on this file since effd9c6 was 1ec69ac5, checked in by Manuel Canales Esparcia <manuel@…>, 19 years ago

Added nodump attributes.

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

  • Property mode set to 100644
File size: 9.3 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 role="nodump"><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 role="nodump"><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<para>If desired, skip kernel configuration by copying the kernel
68config file, <filename>.config</filename>, from the host system
69(assuming it is available) to the unpacked <filename
70class="directory">linux-&linux-version;</filename> directory. However,
71we do not recommend this option. It is often better to explore all the
72configuration menus and create the kernel configuration from
73scratch.</para>
74
75<note><para>NPTL requires the kernel to be compiled with GCC-3.x, in this case
76&gcc-version;. It is not recommended to compile the kernel with GCC-2.95.x, as
77this causes failures in the Glibc test suite. Normally, this wouldn't be
78mentioned as LFS doesn't build GCC-2.95.x. Unfortunately, the kernel
79documentation is outdated and still claims GCC-2.95.3 is the recommended
80compiler.</para></note>
81
82<para>Compile the kernel image and modules:</para>
83
84<screen><userinput>make</userinput></screen>
85
86<para>If using kernel modules, an <filename>/etc/modprobe.conf</filename> file
87may be needed. Information pertaining to modules and kernel configuration is
88located in the kernel documentation in the <filename
89class="directory">linux-&linux-version;/Documentation</filename> directory.
90Also, <filename>modprobe.conf(5)</filename> may be of interest.</para>
91
92<para>Be very careful when reading other documentation relating to kernel
93modules because it usually applies to 2.4.x kernels only. As far as we know,
94kernel configuration issues specific to Hotplug and Udev are not documented.
95The problem is that Udev will create a device node only if Hotplug or a
96user-written script inserts the corresponding module into the kernel, and not
97all modules are detectable by Hotplug. Note that statements like the one below
98in the <filename>/etc/modprobe.conf</filename> file do not work with
99Udev:</para>
100
101<para><screen>alias char-major-XXX some-module</screen></para>
102
103<para>Because of the complications with Hotplug, Udev, and modules, we
104strongly recommend starting with a completely non-modular kernel
105configuration, especially if this is the first time using Udev.</para>
106
107<para>Install the modules, if the kernel configuration uses them:</para>
108
109<screen><userinput>make modules_install</userinput></screen>
110
111<para>After kernel compilation is complete, additional steps are
112required to complete the installation. Some files need to be copied to
113the <filename class="directory">/boot</filename> directory.</para>
114
115<para>The path to the kernel image may vary depending on the platform
116being used. The following command assumes an x86 architecture:</para>
117
118<screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
119
120<para><filename>System.map</filename> is a symbol file for the kernel.
121It maps the function entry points of every function in the kernel API,
122as well as the addresses of the kernel data structures for the running
123kernel. Issue the following command to install the map file:</para>
124
125<screen><userinput>cp System.map /boot/System.map-&linux-version;</userinput></screen>
126
127<para>The kernel configuration file <filename>.config</filename>
128produced by the <command>make menuconfig</command> step
129above contains all the configuration selections for the kernel
130that was just compiled. It is a good idea to keep this file for future
131reference:</para>
132
133<screen><userinput>cp .config /boot/config-&linux-version;</userinput></screen>
134
135<beginpage/>
136
137<para>It is important to note that the files in the kernel source
138directory are not owned by <emphasis>root</emphasis>. Whenever a
139package is unpacked as user <emphasis>root</emphasis> (like we did
140inside chroot), the files have the user and group IDs of whatever
141they were on the packager's computer. This is usually not a problem
142for any other package to be installed because the source tree is
143removed after the installation. However, the Linux source tree is
144often retained for a long time. Because of this, there is a chance
145that whatever user ID the packager used will be assigned to somebody
146on the machine. That person would then have write access to the kernel
147source.</para>
148
149<para>If the kernel source tree is going to be retained, run
150<command>chown -R 0:0</command> on the <filename
151class="directory">linux-&linux-version;</filename> directory to ensure
152all files are owned by user <emphasis>root</emphasis>.</para>
153
154<warning><para>Some kernel documentation recommends creating a symlink from
155<filename class="symlink">/usr/src/linux</filename> pointing to the kernel
156source directory. This is specific to kernels prior to the 2.6 series and
157<emphasis>must not</emphasis> be created on an LFS system as it can cause
158problems for packages you may wish to build once your base LFS system is
159complete.</para>
160
161<para>Also, the headers in the system's
162<filename class="directory">include</filename> directory should
163<emphasis>always</emphasis> be the ones against which Glibc was compiled,
164that is, the ones from the Linux-Libc-Headers package, and therefore, should
165<emphasis>never</emphasis> be replaced by the kernel headers.</para></warning>
166
167</sect2>
168
169
170<sect2 id="contents-kernel" role="content"><title>Contents of Linux</title>
171
172<segmentedlist>
173<segtitle>Installed files</segtitle>
174<seglistitem><seg>config-&linux-version;, lfskernel-&linux-version;,
175and System.map-&linux-version;</seg></seglistitem>
176</segmentedlist>
177
178<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
179<?dbfo list-presentation="list"?>
180<?dbhtml list-presentation="table"?>
181
182<varlistentry id="config">
183<term><filename>config-&linux-version;</filename></term>
184<listitem>
185<para>Contains all the configuration selections for the kernel</para>
186<indexterm zone="ch-bootable-kernel config"><primary sortas="e-/boot/config">/boot/config-&linux-version;</primary></indexterm>
187</listitem>
188</varlistentry>
189
190<varlistentry id="lfskernel">
191<term><filename>lfskernel-&linux-version;</filename></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 lfskernel"><primary sortas="b-lfskernel">lfskernel-&linux-version;</primary></indexterm>
200</listitem>
201</varlistentry>
202
203<varlistentry id="System.map">
204<term><filename>System.map-&linux-version;</filename></term>
205<listitem>
206<para>A list of addresses and symbols; it maps the entry points and
207addresses of all the functions and data structures in the
208kernel</para>
209<indexterm zone="ch-bootable-kernel System.map"><primary sortas="e-/boot/System.map">/boot/System.map-&linux-version;</primary></indexterm>
210</listitem>
211</varlistentry>
212</variablelist>
213
214</sect2>
215
216</sect1>
Note: See TracBrowser for help on using the repository browser.