source: chapter08/kernel-ppc.xml@ ac89fab

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