source: chapter08/kernel.xml@ 2ec64b3

v5_1_1
Last change on this file since 2ec64b3 was 2ec64b3, checked in by lfs-dev <lfs-dev@…>, 20 years ago

This commit was manufactured by cvs2svn to create tag 'v5_1_1'.

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

  • Property mode set to 100644
File size: 7.5 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">
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<para>The Linux package contains the kernel and the header files.</para>
13
14<screen>&buildtime; All default options: 4.20 SBU
15&diskspace; All default options: 181 MB</screen>
16
17<para>Linux installation depends on: Bash, Binutils, Coreutils, Findutils,
18GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, Sed.</para>
19
20
21
22<sect2>
23<title>Installation of the kernel</title>
24
25<para>Building the kernel involves a few steps: configuration, compilation, and
26installation. If you don't like the way this book configures the kernel, view
27the <filename>README</filename> file in the kernel source tree for alternative
28methods.</para>
29
30<para>Prepare for compilation by running the following command:</para>
31
32<screen><userinput>make mrproper</userinput></screen>
33
34<para>This ensures that the kernel tree is absolutely clean. The kernel team
35recommends that this command be issued prior to <emphasis>each</emphasis>
36kernel compilation. You shouldn't rely on the source tree being clean after
37un-tarring.</para>
38
39<para>Configure the kernel via a menu-driven interface:</para>
40
41<screen><userinput>make menuconfig</userinput></screen>
42
43<para><userinput>make oldconfig</userinput> may be more appropriate in some
44situations. See the <filename>README</filename> file for more
45information.</para>
46
47<para>If you wish, you may skip kernel configuration by simply copying the
48kernel config file, <filename>.config</filename>, from your host system
49(assuming it is available) to the unpacked <filename class="directory">linux-&linux-version;</filename>
50directory. However, we
51don't recommend this option. You're much better off exploring all the
52configuration menus and creating your own kernel configuration from
53scratch.</para>
54
55<para>For POSIX shared memory support, ensure that the kernel config option
56<quote>Virtual memory file system support</quote> is enabled. It resides within
57the <quote>File systems</quote> menu and is normally enabled by default.</para>
58
59<para>Verify dependencies and create dependency information files:</para>
60
61<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc dep</userinput></screen>
62
63<para>Compile the kernel image:</para>
64
65<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc bzImage</userinput></screen>
66
67<para>Compile the drivers which have been configured as modules:</para>
68
69<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc modules</userinput></screen>
70
71<para>If you intend to use kernel modules, you will need an
72<filename>/etc/modules.conf</filename> file. Information pertaining
73to modules and to kernel configuration in general may be found in the
74kernel documentation, which is found in the
75<filename>linux-&linux-version;/Documentation</filename> directory. The
76modules.conf man page and the kernel HOWTO at
77<ulink url="http://www.tldp.org/HOWTO/Kernel-HOWTO.html"/> may also be of
78interest to you.</para>
79
80<para>Install the modules:</para>
81
82<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc modules_install</userinput></screen>
83
84<para>If you have a lot of modules and very little space, you may want to
85consider stripping and compressing the modules. For most people such compression
86isn't worth the trouble, but if you're really pressed for space, then have a look at
87<ulink url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para>
88
89<para>As nothing is complete without documentation, build the manual pages
90that come with the kernel:</para>
91
92<screen><userinput>make mandocs</userinput></screen>
93
94<para>And install these pages:</para>
95
96<screen><userinput>cp -a Documentation/man /usr/share/man/man9</userinput></screen>
97
98<para>Kernel compilation has finished but more steps are required to complete
99the installation. Some files need to be copied to the <filename>/boot</filename>
100directory.</para>
101
102<para>The path to the kernel image may vary depending on the platform you're
103using. Issue the following command to install the kernel:</para>
104
105<screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel</userinput></screen>
106
107<para><filename>System.map</filename> is a symbol file for the kernel. It maps
108the function entry points of every function in the kernel API (Application Programming Interface), as well as the
109addresses of the kernel data structures for the running kernel. Issue the
110following command to install the map file:</para>
111
112<screen><userinput>cp System.map /boot</userinput></screen>
113
114<para><filename>.config</filename> is the kernel configuration file that was
115produced by the <command>make menuconfig</command> step above. It contains all
116the config selections for the kernel that was just compiled. It's a good idea
117to keep this file for future reference:</para>
118
119<screen><userinput>cp .config /boot/config-lfskernel</userinput></screen>
120
121<para>It is important to note that the files in the kernel source directory are
122not owned by <emphasis>root</emphasis>. Whenever you unpack a package as user
123<emphasis>root</emphasis> (like we did here inside chroot), the files end up
124having the user and group IDs of whatever they were on the packager's computer.
125This is usually not a problem for any other package you install because you
126remove the source tree after the installation. But the Linux source tree is
127often kept around for a long time, so there's a chance that whatever user ID
128the packager used will be assigned to somebody on your machine and then that
129person would have write access to the kernel source.</para>
130
131<para>If you are going to keep the kernel source tree around, you may want to
132run <userinput>chown -R 0:0</userinput> on the
133<filename>linux-&linux-version;</filename> directory to ensure all files are
134owned by user <emphasis>root</emphasis>.</para>
135
136</sect2>
137
138
139<sect2 id="contents-kernel"><title>Contents of Linux</title>
140
141<para><emphasis>Installed files</emphasis>: the kernel, the kernel headers,
142and the System.map</para>
143
144</sect2>
145
146<sect2><title>Short descriptions</title>
147
148<indexterm zone="ch-bootable-kernel kernel"><primary sortas="b-kernel">kernel</primary></indexterm>
149<para id="kernel">The <emphasis>kernel</emphasis> is the engine of your GNU/Linux system.
150When switching on your box, the kernel is the first part of your operating
151system that gets loaded. It detects and initializes all the components of your
152computer's hardware, then makes these components available as a tree of files
153to the software, and turns a single CPU into a multi-tasking machine capable
154of running scores of programs seemingly at the same time.</para>
155
156<indexterm zone="ch-bootable-kernel kernel-headers"><primary sortas="e-kernel-headers">kernel headers</primary></indexterm>
157<para id="kernel-headers">The <emphasis>kernel headers</emphasis> define the interface to the
158services that the kernel provides. The headers in your system's
159<filename>include</filename> directory should <emphasis>always</emphasis> be
160the ones against which Glibc was compiled and should therefore
161<emphasis>not</emphasis> be replaced when upgrading the kernel.</para>
162
163<indexterm zone="ch-bootable-kernel System.map"><primary sortas="e-/boot/System.map">/boot/System.map</primary></indexterm>
164<para id="System.map">The <filename>System.map</filename> file is a list of addresses and
165symbols. It maps the entry points and addresses of all the functions and data
166structures in the kernel.</para>
167
168</sect2>
169
170
171
172</sect1>
Note: See TracBrowser for help on using the repository browser.