source: chapter08/kernel.xml@ 0ebe9fa4

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 0ebe9fa4 was 0ebe9fa4, checked in by Manuel Canales Esparcia <manuel@…>, 19 years ago

Added the last nodump attributes (I hope.)

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

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