source: chapter08/kernel-raq2.xml@ 8ac05079

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

Updated RaQ2 started PPC integration New-Files

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

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