source: chapter08/kernel-alpha.xml@ fae9234

Last change on this file since fae9234 was c4ec9a5, checked in by Jim Gifford <jim@…>, 19 years ago

Added: Alpha arch

git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/multi-arch/BOOK@4552 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 9.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" role="wrap" arch="alpha">
7<title>Linux-&linux-alpha-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>Linux installation depends on</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>Also, ensure that the kernel does not attempt to pass
47hotplugging events to userspace until userspace specifies that it is
48ready:</para>
49
50<screen><userinput>sed -i 's@/sbin/hotplug@/bin/true@' kernel/kmod.c</userinput></screen>
51
52<para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to
53compile the keymap into the kernel, issue the command below:</para>
54
55<screen><userinput>loadkeys -m /usr/share/kbd/keymaps/<replaceable>[path to keymap]</replaceable> &gt; \
56 drivers/char/defkeymap.c</userinput></screen>
57
58<para>For example, if using a Dutch keyboard, use
59<phrase
60condition="html"><filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename></phrase><phrase
61condition="pdf"><filename>/usr/share/kbd/keymaps/i386/
62qwerty/nl.map.gz</filename></phrase>.</para>
63
64<para>Configure the kernel via a menu-driven interface:</para>
65
66<screen><userinput>make menuconfig</userinput></screen>
67
68<para>Alternatively, <command>make oldconfig</command> may be more appropriate in some
69situations. <phrase>This will build a basic system with no modules and
70ext2 support only.</phrase> See the <filename>README</filename> file for more
71information.</para>
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-alpha-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 either both
87<quote>Support for Host-side USB</quote> and <quote>USB device
88filesystem</quote> have been compiled directly into the kernel, or
89that neither is compiled at all. Bootscripts will not work properly
90if it is a module (usbcore.ko).</para>
91
92<note><para>NPTL requires the kernel to be compiled with GCC 3.x, in
93this case &gcc-version;. Compiling with 2.95.x is known to cause failures in
94the glibc test suite, so it is not recommended to compile the kernel
95with gcc 2.95.x.</para></note>
96
97<para>Compile the kernel image and modules:</para>
98
99<screen><userinput>make</userinput></screen>
100
101<para>If using kernel modules, an
102<filename>/etc/modprobe.conf</filename> file may be needed.
103Information pertaining to modules and kernel configuration is
104located in the kernel documentation in the <filename
105class="directory">linux-&linux-alpha-version;/Documentation</filename>
106directory. The <emphasis>modprobe.conf</emphasis> man page may also be
107of interest.</para>
108
109<para>Be very careful when reading other documentation because it
110usually applies to 2.4.x kernels only. As far as we know, kernel
111configuration issues specific to Hotplug and Udev are not documented.
112The problem is that Udev will create a device node only if Hotplug or
113a user-written script inserts the corresponding module into the
114kernel, and not all modules are detectable by Hotplug. Note that
115statements like the one below in the
116<filename>/etc/modprobe.conf</filename> file do not work with
117Udev:</para>
118
119<para><screen>alias char-major-XXX some-module</screen></para>
120
121<para>Because of the complications with Hotplug, Udev, and modules, we
122strongly recommend starting with a completely non-modular kernel
123configuration, especially if this is the first time using Udev.</para>
124
125<para>Install the modules, if the kernel configuration uses them:</para>
126
127<screen><userinput>make modules_install</userinput></screen>
128
129<para>If there are many modules and very little space, consider
130stripping and compressing the modules. For most users, such
131compression is not worth the time, but if the system is pressed for
132space, see <ulink url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para>
133
134<para>After kernel compilation is complete, additional steps are
135required to complete the installation. Some files need to be copied to
136the <filename class="directory">/boot</filename> directory.</para>
137
138<para><!--The path to the kernel image may vary depending on the platform
139being used. -->Issue the following command to install the kernel:</para>
140
141<screen><userinput>cp vmlinux /boot/vmlinux-&linux-version;</userinput></screen>
142
143<para><filename>System.map</filename> is a symbol file for the kernel.
144It maps the function entry points of every function in the kernel API,
145as well as the addresses of the kernel data structures for the running
146kernel. Issue the following command to install the map file:</para>
147
148<screen><userinput>cp System.map /boot/System.map-&linux-alpha-version;</userinput></screen>
149
150<para>The kernel configuration file <filename>.config</filename>
151produced by the <command>make menuconfig</command> step
152above contains all the configuration selections for the kernel
153that was just compiled. It is a good idea to keep this file for future
154reference:</para>
155
156<screen><userinput>cp .config /boot/config-&linux-alpha-version;</userinput></screen>
157
158<para>It is important to note that the files in the kernel source
159directory are not owned by <emphasis>root</emphasis>. Whenever a
160package is unpacked as user <emphasis>root</emphasis> (like we did
161inside chroot), the files have the user and group IDs of whatever
162they were on the packager's computer. This is usually not a problem
163for any other package to be installed because the source tree is
164removed after the installation. However, the Linux source tree is
165often retained for a long time. Because of this, there is a chance
166that whatever user ID the packager used will be assigned to somebody
167on the machine. That person would then have write access to the kernel
168source.</para>
169
170<para>If the kernel source tree is going to retained, run
171<command>chown -R 0:0</command> on the <filename
172class="directory">linux-&linux-alpha-version;</filename> directory to ensure
173all files are owned by user <emphasis>root</emphasis>.</para>
174</sect2>
175
176
177<sect2 id="contents-kernel" role="content"><title>Contents of Linux</title>
178
179<segmentedlist>
180<segtitle>Installed files</segtitle>
181<seglistitem><seg>kernel, kernel headers,
182and System.map</seg></seglistitem>
183</segmentedlist>
184
185<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
186<?dbfo list-presentation="list"?>
187
188<varlistentry id="kernel">
189<term><filename>kernel</filename></term>
190<listitem>
191<para>The engine of the Linux system. When turning on the computer,
192the kernel is the first part of the operating system that gets loaded.
193It detects and initializes all components of the computer's hardware,
194then makes these components available as a tree of files to the
195software and turns a single CPU into a multitasking machine capable
196of running scores of programs seemingly at the same time.</para>
197<indexterm zone="ch-bootable-kernel kernel"><primary sortas="b-kernel">kernel</primary></indexterm>
198</listitem>
199</varlistentry>
200
201<varlistentry id="kernel-headers">
202<term><filename>kernel headers</filename></term>
203<listitem>
204<para>Defines the interface to the services that the kernel provides.
205The headers in the system's <filename
206class="directory">include</filename> directory should
207<emphasis>always</emphasis> be the ones against which Glibc was
208compiled and therefore, should <emphasis>not</emphasis> be replaced
209when upgrading the kernel.</para>
210<indexterm zone="ch-bootable-kernel kernel-headers"><primary sortas="e-kernel-headers">kernel headers</primary></indexterm>
211</listitem>
212</varlistentry>
213
214<varlistentry id="System.map">
215<term><filename>System.map</filename></term>
216<listitem>
217<para>A list of addresses and symbols; it maps the entry points and
218addresses of all the functions and data structures in the
219kernel</para>
220<indexterm zone="ch-bootable-kernel System.map"><primary sortas="e-/boot/System.map">/boot/System.map</primary></indexterm>
221</listitem>
222</varlistentry>
223</variablelist>
224
225</sect2>
226
227</sect1>
228
Note: See TracBrowser for help on using the repository browser.