source: chapter08/kernel.xml@ ad83f72

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 ad83f72 was ad83f72, checked in by Dan Nichilson <dnicholson@…>, 17 years ago

Remove extraneous && in chained commands

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

  • Property mode set to 100644
File size: 9.4 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-bootable-kernel" role="wrap">
9 <?dbhtml filename="kernel.html"?>
10
11 <title>Linux-&linux-version;</title>
12
13 <indexterm zone="ch-bootable-kernel">
14 <primary sortas="a-Linux">Linux</primary>
15 </indexterm>
16
17 <sect2 role="package">
18 <title/>
19
20 <para>The Linux package contains the Linux kernel.</para>
21
22 <segmentedlist>
23 <segtitle>&buildtime;</segtitle>
24 <segtitle>&diskspace;</segtitle>
25
26 <seglistitem>
27 <seg>&linux-ch8-sbu;</seg>
28 <seg>&linux-ch8-du;</seg>
29 </seglistitem>
30 </segmentedlist>
31
32 </sect2>
33
34 <sect2 role="installation">
35 <title>Installation of the kernel</title>
36
37 <para>Building the kernel involves a few steps&mdash;configuration,
38 compilation, and installation. Read the <filename>README</filename> file
39 in the kernel source tree for alternative methods to the way this book
40 configures the kernel.</para>
41
42 <para>Prepare for compilation by running the following command:</para>
43
44<screen><userinput>make mrproper</userinput></screen>
45
46 <para>This ensures that the kernel tree is absolutely clean. The
47 kernel team recommends that this command be issued prior to each
48 kernel compilation. Do not rely on the source tree being clean after
49 un-tarring.</para>
50
51 <!-- Support for compiling a keymap into the kernel is deliberately removed -->
52
53 <para>Configure the kernel via a menu-driven interface. BLFS has some
54 information regarding particular kernel configuration requirements of
55 packages outside of LFS at <ulink
56 url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>:</para>
57
58<screen role="nodump"><userinput>make LANG=<replaceable>&lt;host_LANG_value&gt;</replaceable> LC_ALL= menuconfig</userinput></screen>
59
60 <variablelist>
61 <title>The meaning of the make parameters:</title>
62
63 <varlistentry>
64 <term><parameter>LANG=&lt;host_LANG_value&gt; LC_ALL=</parameter></term>
65 <listitem>
66 <para>This establishes the locale setting to the one used on the host.
67 This is needed for a proper menuconfig ncurses interface line
68 drawing on UTF-8 linux text console.</para>
69
70 <para>Be sure to replace <replaceable>&lt;host_LANG_value&gt;</replaceable>
71 by the value of the <envar>$LANG</envar> variable from your host.
72 If not set, you could use instead the host's value of <envar>$LC_ALL</envar>
73 or <envar>$LC_CTYPE</envar>.</para>
74 </listitem>
75 </varlistentry>
76
77 </variablelist>
78
79 <para>Alternatively, <command>make oldconfig</command> may be more
80 appropriate in some situations. See the <filename>README</filename>
81 file for more information.</para>
82
83 <para>If desired, skip kernel configuration by copying the kernel
84 config file, <filename>.config</filename>, from the host system
85 (assuming it is available) to the unpacked <filename
86 class="directory">linux-&linux-version;</filename> directory. However,
87 we do not recommend this option. It is often better to explore all the
88 configuration menus and create the kernel configuration from
89 scratch.</para>
90
91 <para>Compile the kernel image and modules:</para>
92
93<screen><userinput>make</userinput></screen>
94
95 <para>If using kernel modules, an <filename>/etc/modprobe.conf</filename>
96 file may be needed. Information pertaining to modules and kernel
97 configuration is located in <xref linkend="ch-scripts-udev"/> and in the
98 kernel documentation in the <filename
99 class="directory">linux-&linux-version;/Documentation</filename> directory.
100 Also, <filename>modprobe.conf(5)</filename> may be of interest.</para>
101
102 <para>Install the modules, if the kernel configuration uses them:</para>
103
104<screen><userinput>make modules_install</userinput></screen>
105
106 <para>After kernel compilation is complete, additional steps are
107 required to complete the installation. Some files need to be copied to
108 the <filename class="directory">/boot</filename> directory.</para>
109
110 <para>The path to the kernel image may vary depending on the platform
111 being used. The following command assumes an x86 architecture:</para>
112
113<screen><userinput>cp -v arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
114
115 <para><filename>System.map</filename> is a symbol file for the kernel.
116 It maps the function entry points of every function in the kernel API,
117 as well as the addresses of the kernel data structures for the running
118 kernel. Issue the following command to install the map file:</para>
119
120<screen><userinput>cp -v System.map /boot/System.map-&linux-version;</userinput></screen>
121
122 <para>The kernel configuration file <filename>.config</filename>
123 produced by the <command>make menuconfig</command> step
124 above contains all the configuration selections for the kernel
125 that was just compiled. It is a good idea to keep this file for future
126 reference:</para>
127
128<screen><userinput>cp -v .config /boot/config-&linux-version;</userinput></screen>
129
130 <para>Install the documentation for the Linux kernel:</para>
131
132<screen><userinput>install -d /usr/share/doc/linux-&linux-version;
133cp -r Documentation/* /usr/share/doc/linux-&linux-version;</userinput></screen>
134
135 <para>It is important to note that the files in the kernel source
136 directory are not owned by <emphasis>root</emphasis>. Whenever a
137 package is unpacked as user <emphasis>root</emphasis> (like we did
138 inside chroot), the files have the user and group IDs of whatever
139 they were on the packager's computer. This is usually not a problem
140 for any other package to be installed because the source tree is
141 removed after the installation. However, the Linux source tree is
142 often retained for a long time. Because of this, there is a chance
143 that whatever user ID the packager used will be assigned to somebody
144 on the machine. That person would then have write access to the kernel
145 source.</para>
146
147 <para>If the kernel source tree is going to be retained, run
148 <command>chown -R 0:0</command> on the <filename
149 class="directory">linux-&linux-version;</filename> directory to ensure
150 all files are owned by user <emphasis>root</emphasis>.</para>
151
152 <warning>
153 <para>Some kernel documentation recommends creating a symlink from
154 <filename class="symlink">/usr/src/linux</filename> pointing to the kernel
155 source directory. This is specific to kernels prior to the 2.6 series and
156 <emphasis>must not</emphasis> be created on an LFS system as it can cause
157 problems for packages you may wish to build once your base LFS system is
158 complete.</para>
159 </warning>
160
161 <warning>
162 <para>The headers in the system's
163 <filename class="directory">include</filename> directory should
164 <emphasis>always</emphasis> be the ones against which Glibc was compiled,
165 that is, the sanitised headers from this Linux kernel tarball.
166 Therefore, they should <emphasis>never</emphasis> be replaced by either
167 the raw kernel headers or any other kernel sanitized headers.</para>
168 </warning>
169
170 </sect2>
171
172 <sect2 id="contents-kernel" role="content">
173 <title>Contents of Linux</title>
174
175 <segmentedlist>
176 <segtitle>Installed files</segtitle>
177
178 <seglistitem>
179 <seg>config-&linux-version;, lfskernel-&linux-version;, and
180 System.map-&linux-version;</seg>
181 </seglistitem>
182 </segmentedlist>
183
184 <variablelist>
185 <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">
194 <primary sortas="e-/boot/config">/boot/config-&linux-version;</primary>
195 </indexterm>
196 </listitem>
197 </varlistentry>
198
199 <varlistentry id="lfskernel">
200 <term><filename>lfskernel-&linux-version;</filename></term>
201 <listitem>
202 <para>The engine of the Linux system. When turning on the computer,
203 the kernel is the first part of the operating system that gets loaded.
204 It detects and initializes all components of the computer's hardware,
205 then makes these components available as a tree of files to the
206 software and turns a single CPU into a multitasking machine capable
207 of running scores of programs seemingly at the same time</para>
208 <indexterm zone="ch-bootable-kernel lfskernel">
209 <primary sortas="b-lfskernel">lfskernel-&linux-version;</primary>
210 </indexterm>
211 </listitem>
212 </varlistentry>
213
214 <varlistentry id="System.map">
215 <term><filename>System.map-&linux-version;</filename></term>
216 <listitem>
217 <para>A list of addresses and symbols; it maps the entry points and
218 addresses of all the functions and data structures in the
219 kernel</para>
220 <indexterm zone="ch-bootable-kernel System.map">
221 <primary sortas="e-/boot/System.map">/boot/System.map-&linux-version;</primary>
222 </indexterm>
223 </listitem>
224 </varlistentry>
225
226 </variablelist>
227
228 </sect2>
229
230</sect1>
Note: See TracBrowser for help on using the repository browser.