source: chapter08/kernel.xml@ 1cd9252

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.0 6.1 6.1.1 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 1cd9252 was b8a819f, checked in by Manuel Canales Esparcia <manuel@…>, 20 years ago

Changed the id's location in the Short descriptions sections to fix a bug in the PDF generation.

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

  • Property mode set to 100644
File size: 8.0 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
3 <!ENTITY % general-entities SYSTEM "../general.ent">
4 %general-entities;
5]>
6<sect1 id="ch-bootable-kernel" xreflabel="Linux" 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>All default options: 4.20 SBU</seg>
19<seg>All default options: 181 MB</seg></seglistitem>
20</segmentedlist>
21
22<segmentedlist>
23<segtitle>Linux installation depends on</segtitle>
24<seglistitem><seg>Bash, Binutils, Coreutils, Findutils,
25GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, 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: configuration, compilation, and
33installation. If you don't like the way this book configures the kernel, view
34the <filename>README</filename> file in the kernel source tree for alternative
35methods.</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 kernel team
42recommends that this command be issued prior to <emphasis>each</emphasis>
43kernel compilation. You shouldn't rely on the source tree being clean after
44un-tarring.</para>
45
46<para>Configure the kernel via a menu-driven interface:</para>
47
48<screen><userinput>make menuconfig</userinput></screen>
49
50<para><userinput>make oldconfig</userinput> may be more appropriate in some
51situations. See the <filename>README</filename> file for more
52information.</para>
53
54<para>If you wish, you may skip kernel configuration by simply copying the
55kernel config file, <filename>.config</filename>, from your host system
56(assuming it is available) to the unpacked <filename class="directory">linux-&linux-version;</filename>
57directory. However, we
58don't recommend this option. You're much better off exploring all the
59configuration menus and creating your own kernel configuration from
60scratch.</para>
61
62<para>For POSIX shared memory support, ensure that the kernel config option
63<quote>Virtual memory file system support</quote> is enabled. It resides within
64the <quote>File systems</quote> menu and is normally enabled by default.</para>
65
66<para>LFS bootscripts make the assumption that you either compile
67"USB device filesystem" directly into the kernel, or don't compile it at
68all. They will not work properly if it is a module (usbcore.ko).</para>
69
70<note><para>NPTL requires the kernel to be compiled with GCC 3.x, in this case
71&gcc-version;. Compiling with 2.95.x is known to cause failures in the glibc
72testsuite, so do <emphasis>not</emphasis> compile the kernel with gcc 2.95.x
73unless you know what you're getting yourself into.</para></note>
74
75<para>Compile the kernel image and modules:</para>
76
77<screen><userinput>make</userinput></screen>
78
79<para>If you intend to use kernel modules, you will need an
80<filename>/etc/modprobe.conf</filename> file. Information pertaining
81to modules and to kernel configuration in general may be found in the
82kernel documentation, which is found in the
83<filename>linux-&linux-version;/Documentation</filename> directory. The
84modules.conf man page and the kernel HOWTO at
85<ulink url="http://www.tldp.org/HOWTO/Kernel-HOWTO.html"/> may also be of
86interest to you.</para>
87
88<para>Install the modules:</para>
89
90<screen><userinput>make modules_install</userinput></screen>
91
92<para>If you have a lot of modules and very little space, you may want to
93consider stripping and compressing the modules. For most people such compression
94isn't worth the trouble, but if you're really pressed for space, then have a look at
95<ulink url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para>
96
97<para>Kernel compilation has finished but more steps are required to complete
98the installation. Some files need to be copied to the <filename>/boot</filename>
99directory.</para>
100
101<para>The path to the kernel image may vary depending on the platform you're
102using. Issue the following command to install the kernel:</para>
103
104<screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
105
106<para><filename>System.map</filename> is a symbol file for the kernel. It maps
107the function entry points of every function in the kernel API (Application Programming Interface), as well as the
108addresses of the kernel data structures for the running kernel. Issue the
109following command to install the map file:</para>
110
111<screen><userinput>cp System.map /boot/System.map-&linux-version;</userinput></screen>
112
113<para><filename>.config</filename> is the kernel configuration file that was
114produced by the <command>make menuconfig</command> step above. It contains all
115the config selections for the kernel that was just compiled. It's a good idea
116to keep this file for future reference:</para>
117
118<screen><userinput>cp .config /boot/config-&linux-version;</userinput></screen>
119
120<para>It is important to note that the files in the kernel source directory are
121not owned by <emphasis>root</emphasis>. Whenever you unpack a package as user
122<emphasis>root</emphasis> (like we did here inside chroot), the files end up
123having the user and group IDs of whatever they were on the packager's computer.
124This is usually not a problem for any other package you install because you
125remove the source tree after the installation. But the Linux source tree is
126often kept around for a long time, so there's a chance that whatever user ID
127the packager used will be assigned to somebody on your machine and then that
128person would have write access to the kernel source.</para>
129
130<para>If you are going to keep the kernel source tree around, you may want to
131run <userinput>chown -R 0:0</userinput> on the
132<filename>linux-&linux-version;</filename> directory to ensure all files are
133owned by user <emphasis>root</emphasis>.</para>
134
135</sect2>
136
137
138<sect2 id="contents-kernel" role="content"><title>Contents of Linux</title>
139
140<segmentedlist>
141<segtitle>Installed files</segtitle>
142<seglistitem><seg>the kernel, the kernel headers,
143and the System.map</seg></seglistitem>
144</segmentedlist>
145
146<variablelist><title>Short descriptions</title>
147
148<varlistentry id="kernel">
149<term>The <emphasis>kernel</emphasis></term>
150<listitem>
151<indexterm zone="ch-bootable-kernel kernel"><primary sortas="b-kernel">kernel</primary></indexterm>
152<para>is the engine of your GNU/Linux system.
153When switching on your box, the kernel is the first part of your operating
154system that gets loaded. It detects and initializes all the components of your
155computer's hardware, then makes these components available as a tree of files
156to the software, and turns a single CPU into a multi-tasking machine capable
157of running scores of programs seemingly at the same time.</para>
158</listitem>
159</varlistentry>
160
161<varlistentry id="kernel-headers">
162<term>The <emphasis>kernel headers</emphasis></term>
163<listitem>
164<indexterm zone="ch-bootable-kernel kernel-headers"><primary sortas="e-kernel-headers">kernel headers</primary></indexterm>
165<para>define the interface to the
166services that the kernel provides. The headers in your system's
167<filename>include</filename> directory should <emphasis>always</emphasis> be
168the ones against which Glibc was compiled and should therefore
169<emphasis>not</emphasis> be replaced when upgrading the kernel.</para>
170</listitem>
171</varlistentry>
172
173<varlistentry id="System.map">
174<term><filename>System.map</filename></term>
175<listitem>
176<indexterm zone="ch-bootable-kernel System.map"><primary sortas="e-/boot/System.map">/boot/System.map</primary></indexterm>
177<para>is a list of addresses and symbols. It maps the entry points and addresses
178of all the functions and data structures in the kernel.</para>
179</listitem>
180</varlistentry>
181</variablelist>
182
183</sect2>
184
185</sect1>
Note: See TracBrowser for help on using the repository browser.