source: chapter08/kernel-ppc.xml@ 8d73a06

Last change on this file since 8d73a06 was 1cc7be0, checked in by Manuel Canales Esparcia <manuel@…>, 19 years ago

Removed specific PDF tags.

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

  • Property mode set to 100644
File size: 7.6 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/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<xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
13 href="../chapter08/kernel.xml"
14 xpointer="xpointer(/sect1/sect2[@role='package'])"/>
15
16<sect2 role="installation">
17<title>Installation of the kernel</title>
18
19<para>Building the kernel involves a few steps&mdash;configuration,
20compilation, and installation. Read the <filename>README</filename>
21file in the kernel source tree for alternate methods to the way this
22book configures the kernel.</para>
23
24<para>Prepare for compilation by running the following command:</para>
25
26<screen><userinput>make mrproper</userinput></screen>
27
28<para>This ensures that the kernel tree is absolutely clean. The
29kernel team recommends that this command be issued prior to each
30kernel compilation. Do not rely on the source tree being clean after
31un-tarring.</para>
32
33<para>Also, ensure that the kernel does not attempt to pass
34hotplugging events to userspace until userspace specifies that it is
35ready:</para>
36
37<screen><userinput>sed -i 's@/sbin/hotplug@/bin/true@' kernel/kmod.c</userinput></screen>
38
39<para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to
40compile the keymap into the kernel, issue the command below:</para>
41
42<screen><userinput>loadkeys -m /usr/share/kbd/keymaps/<replaceable>[path to keymap]</replaceable> &gt; \
43 drivers/char/defkeymap.c</userinput></screen>
44
45<para>For example, if using a Dutch keyboard, use
46<filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para>
47
48<para>Configure the kernel via a menu-driven interface:</para>
49
50<screen><userinput>make menuconfig</userinput></screen>
51
52<para>Alternatively, <command>make oldconfig</command>
53may be more appropriate in some
54situations. <phrase>This will build a basic system with no modules and
55ext2 support only.</phrase> See the <filename>README</filename> file for more
56information.</para>
57
58<note><para>When configuring the kernel, be sure to enable the
59<quote>Support for hot-pluggable devices</quote> option under the
60<quote>General Setup</quote> menu. This enables hotplug events that
61are used by <command>udev</command> to populate the <filename
62class="directory">/dev</filename> directory with device
63nodes.</para></note>
64
65<para>If desired, skip kernel configuration by copying the kernel
66config file, <filename>.config</filename>, from the host system
67(assuming it is available) to the unpacked <filename
68class="directory">linux-&linux-version;</filename> directory. However,
69we do not recommend this option. It is often better to explore all the
70configuration menus and create the kernel configuration from
71scratch.</para>
72
73<para>For POSIX-shared memory support, ensure that the kernel config
74option <quote>Virtual memory file system support</quote> is enabled.
75It resides within the <quote>File systems</quote> menu and is normally
76enabled by default.</para>
77
78<para>LFS bootscripts make the assumption that either both
79<quote>Support for Host-side USB</quote> and <quote>USB device
80filesystem</quote> have been compiled directly into the kernel, or
81that neither is compiled at all. Bootscripts will not work properly
82if it is a module (usbcore.ko).</para>
83
84<note><para>NPTL requires the kernel to be compiled with GCC 3.x, in
85this case &gcc-version;. Compiling with 2.95.x is known to cause failures in
86the glibc test suite, so it is not recommended to compile the kernel
87with gcc 2.95.x.</para></note>
88
89<para>Compile the kernel image and modules:</para>
90
91<screen><userinput>make</userinput></screen>
92
93<para>If using kernel modules, an
94<filename>/etc/modprobe.conf</filename> file may be needed.
95Information pertaining to modules and kernel configuration is
96located in the kernel documentation in the <filename
97class="directory">linux-&linux-version;/Documentation</filename>
98directory. The <emphasis>modprobe.conf</emphasis> man page may also be
99of interest.</para>
100
101<para>Be very careful when reading other documentation because it
102usually applies to 2.4.x kernels only. As far as we know, kernel
103configuration issues specific to Hotplug and Udev are not documented.
104The problem is that Udev will create a device node only if Hotplug or
105a user-written script inserts the corresponding module into the
106kernel, and not all modules are detectable by Hotplug. Note that
107statements like the one below in the
108<filename>/etc/modprobe.conf</filename> file do not work with
109Udev:</para>
110
111<para><screen>alias char-major-XXX some-module</screen></para>
112
113<para>Because of the complications with Hotplug, Udev, and modules, we
114strongly recommend starting with a completely non-modular kernel
115configuration, especially if this is the first time using Udev.</para>
116
117<para>Install the modules, if the kernel configuration uses them:</para>
118
119<screen><userinput>make modules_install</userinput></screen>
120
121<para>If there are many modules and very little space, consider
122stripping and compressing the modules. For most users, such
123compression is not worth the time, but if the system is pressed for
124space, see <ulink url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para>
125
126<para>After kernel compilation is complete, additional steps are
127required to complete the installation. Some files need to be copied to
128the <filename class="directory">/boot</filename> directory.</para>
129
130<para><!--The path to the kernel image may vary depending on the platform
131being used. -->Issue the following command to install the kernel:</para>
132
133<screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
134
135<para><filename>System.map</filename> is a symbol file for the kernel.
136It maps the function entry points of every function in the kernel API,
137as well as the addresses of the kernel data structures for the running
138kernel. Issue the following command to install the map file:</para>
139
140<screen><userinput>cp System.map /boot/System.map-&linux-version;</userinput></screen>
141
142<para>The kernel configuration file <filename>.config</filename>
143produced by the <command>make menuconfig</command> step
144above contains all the configuration selections for the kernel
145that was just compiled. It is a good idea to keep this file for future
146reference:</para>
147
148<screen><userinput>cp .config /boot/config-&linux-version;</userinput></screen>
149
150<para>It is important to note that the files in the kernel source
151directory are not owned by <emphasis>root</emphasis>. Whenever a
152package is unpacked as user <emphasis>root</emphasis> (like we did
153inside chroot), the files have the user and group IDs of whatever
154they were on the packager's computer. This is usually not a problem
155for any other package to be installed because the source tree is
156removed after the installation. However, the Linux source tree is
157often retained for a long time. Because of this, there is a chance
158that whatever user ID the packager used will be assigned to somebody
159on the machine. That person would then have write access to the kernel
160source.</para>
161
162<para>If the kernel source tree is going to retained, run
163<command>chown -R 0:0</command> on the <filename
164class="directory">linux-&linux-version;</filename> directory to ensure
165all files are owned by user <emphasis>root</emphasis>.</para>
166</sect2>
167
168<xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
169 href="../chapter08/kernel.xml"
170 xpointer="xpointer(/sect1/sect2[@role='content'])"/>
171
172</sect1>
173
Note: See TracBrowser for help on using the repository browser.