source: chapter08/kernel.xml@ 1a1dec4

10.0 10.0-rc1 10.1 10.1-rc1 11.0 11.0-rc1 11.0-rc2 11.0-rc3 11.1 11.1-rc1 11.2 11.2-rc1 11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 6.3 6.4 6.5 6.6 6.7 6.8 7.0 7.1 7.2 7.3 7.4 7.5 7.5-systemd 7.6 7.6-systemd 7.7 7.7-systemd 7.8 7.8-systemd 7.9 7.9-systemd 8.0 8.1 8.2 8.3 8.4 9.0 9.1 arm bdubbs/gcc13 ml-11.0 multilib renodr/libudev-from-systemd s6-init trunk xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since 1a1dec4 was 1a1dec4, checked in by Archaic <archaic@…>, 19 years ago

Removed outdated text pertaining to gcc-2.95.3.

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

  • Property mode set to 100644
File size: 9.9 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"/>:</para>
59
60<screen><userinput>make menuconfig</userinput></screen>
61
62<para>Alternatively, <command>make oldconfig</command> may be more appropriate in some
63situations. See the <filename>README</filename> file for more
64information.</para>
65
66<note><para>When configuring the kernel, be sure to enable the
67<quote>Support for hot-pluggable devices</quote> option under the
68<quote>General Setup</quote> menu. This enables hotplug events that
69are used by <command>udev</command> to populate the <filename
70class="directory">/dev</filename> directory with device
71nodes.</para></note>
72
73<para>If desired, skip kernel configuration by copying the kernel
74config file, <filename>.config</filename>, from the host system
75(assuming it is available) to the unpacked <filename
76class="directory">linux-&linux-version;</filename> directory. However,
77we do not recommend this option. It is often better to explore all the
78configuration menus and create the kernel configuration from
79scratch.</para>
80
81<para>For POSIX-shared memory support, ensure that the kernel config
82option <quote>Virtual memory file system support</quote> is enabled.
83It resides within the <quote>File systems</quote> menu and is normally
84enabled by default.</para>
85
86<para>LFS Bootscripts make the assumption that both <quote>Support for Host-side
87USB</quote> and <quote>USB device filesystem</quote> have been compiled directly
88into the kernel, or that neither is compiled at all. The bootscripts will not
89work properly if <quote>Host-side USB</quote> is compiled as a module
90(usbcore.ko).</para>
91
92<para>Compile the kernel image and modules:</para>
93
94<screen><userinput>make</userinput></screen>
95
96<para>If using kernel modules, an
97<filename>/etc/modprobe.conf</filename> file may be needed.
98Information pertaining to modules and kernel configuration is
99located in the kernel documentation in the <filename
100class="directory">linux-&linux-version;/Documentation</filename>
101directory. The <emphasis>modprobe.conf</emphasis> man page may also be
102of interest.</para>
103
104<para>Be very careful when reading other documentation because it
105usually applies to 2.4.x kernels only. As far as we know, kernel
106configuration issues specific to Hotplug and Udev are not documented.
107The problem is that Udev will create a device node only if Hotplug or
108a user-written script inserts the corresponding module into the
109kernel, and not all modules are detectable by Hotplug. Note that
110statements like the one below in the
111<filename>/etc/modprobe.conf</filename> file do not work with
112Udev:</para>
113
114<para><screen>alias char-major-XXX some-module</screen></para>
115
116<para>Because of the complications with Hotplug, Udev, and modules, we
117strongly recommend starting with a completely non-modular kernel
118configuration, especially if this is the first time using Udev.</para>
119
120<para>Install the modules, if the kernel configuration uses them:</para>
121
122<screen><userinput>make modules_install</userinput></screen>
123
124<para>If there are many modules and very little space, consider
125stripping and compressing the modules. For most users, such
126compression is not worth the time, but if the system is pressed for
127space, see <ulink
128url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para>
129
130<para>After kernel compilation is complete, additional steps are
131required to complete the installation. Some files need to be copied to
132the <filename class="directory">/boot</filename> directory.</para>
133
134<para>The path to the kernel image may vary depending on the platform
135being used. Issue the following command to install the kernel:</para>
136
137<screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
138
139<para><filename>System.map</filename> is a symbol file for the kernel.
140It maps the function entry points of every function in the kernel API,
141as well as the addresses of the kernel data structures for the running
142kernel. Issue the following command to install the map file:</para>
143
144<screen><userinput>cp System.map /boot/System.map-&linux-version;</userinput></screen>
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.