aboutsummaryrefslogtreecommitdiffstats
path: root/chapter08/kernel.xml
diff options
context:
space:
mode:
Diffstat (limited to 'chapter08/kernel.xml')
-rw-r--r--chapter08/kernel.xml363
1 files changed, 197 insertions, 166 deletions
diff --git a/chapter08/kernel.xml b/chapter08/kernel.xml
index fb6a05b19..fcac33a39 100644
--- a/chapter08/kernel.xml
+++ b/chapter08/kernel.xml
@@ -1,212 +1,243 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-bootable-kernel" role="wrap">
-<title>Linux-&linux-version;</title>
-<?dbhtml filename="kernel.html"?>
+ <?dbhtml filename="kernel.html"?>
+
+ <title>Linux-&linux-version;</title>
+
+ <indexterm zone="ch-bootable-kernel">
+ <primary sortas="a-Linux">Linux</primary>
+ </indexterm>
+
+ <sect2 role="package">
+ <title/>
+
+ <para>The Linux package contains the Linux kernel.</para>
-<indexterm zone="ch-bootable-kernel"><primary sortas="a-Linux">Linux</primary></indexterm>
+ <segmentedlist>
+ <segtitle>&buildtime;</segtitle>
+ <segtitle>&diskspace;</segtitle>
-<sect2 role="package"><title/>
-<para>The Linux package contains the Linux kernel.</para>
+ <seglistitem>
+ <seg>4.20 SBU</seg>
+ <seg>181 MB</seg>
+ </seglistitem>
+ </segmentedlist>
-<segmentedlist>
-<segtitle>&buildtime;</segtitle>
-<segtitle>&diskspace;</segtitle>
-<seglistitem><seg>4.20 SBU</seg>
-<seg>181 MB</seg></seglistitem>
-</segmentedlist>
+ <segmentedlist>
+ <segtitle>&dependencies;</segtitle>
-<segmentedlist>
-<segtitle>&dependencies;</segtitle>
-<seglistitem><seg>Bash, Binutils, Coreutils, Findutils,
-GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, and Sed</seg></seglistitem>
-</segmentedlist>
-</sect2>
+ <seglistitem>
+ <seg>Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip,
+ Make, Modutils, Perl, and Sed</seg>
+ </seglistitem>
+ </segmentedlist>
-<sect2 role="installation">
-<title>Installation of the kernel</title>
+ </sect2>
-<para>Building the kernel involves a few steps&mdash;configuration, compilation,
-and installation. Read the <filename>README</filename> file in the kernel source
-tree for alternative methods to the way this book configures the kernel.</para>
+ <sect2 role="installation">
+ <title>Installation of the kernel</title>
-<para>Prepare for compilation by running the following command:</para>
+ <para>Building the kernel involves a few steps&mdash;configuration,
+ compilation, and installation. Read the <filename>README</filename> file
+ in the kernel source tree for alternative methods to the way this book
+ configures the kernel.</para>
+
+ <para>Prepare for compilation by running the following command:</para>
<screen><userinput>make mrproper</userinput></screen>
-<para>This ensures that the kernel tree is absolutely clean. The
-kernel team recommends that this command be issued prior to each
-kernel compilation. Do not rely on the source tree being clean after
-un-tarring.</para>
+ <para>This ensures that the kernel tree is absolutely clean. The
+ kernel team recommends that this command be issued prior to each
+ kernel compilation. Do not rely on the source tree being clean after
+ un-tarring.</para>
-<para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to
-compile the keymap into the kernel, issue the command below:</para>
+ <para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to
+ compile the keymap into the kernel, issue the command below:</para>
<screen role="nodump"><userinput>loadkeys -m /usr/share/kbd/keymaps/<replaceable>[path to keymap]</replaceable> &gt; \
drivers/char/defkeymap.c</userinput></screen>
-<para>For example, if using a Dutch keyboard, use
-<filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para>
+ <para>For example, if using a Dutch keyboard, use
+ <filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para>
-<para>Configure the kernel via a menu-driven interface. BLFS has some
-information regarding particular kernel configuration requirements of
-packages outside of LFS at <ulink
-url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>:</para>
+ <para>Configure the kernel via a menu-driven interface. BLFS has some
+ information regarding particular kernel configuration requirements of
+ packages outside of LFS at <ulink
+ url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>:</para>
<screen role="nodump"><userinput>make menuconfig</userinput></screen>
-<para>Alternatively, <command>make oldconfig</command> may be more appropriate in some
-situations. See the <filename>README</filename> file for more
-information.</para>
-
-<para>If desired, skip kernel configuration by copying the kernel
-config file, <filename>.config</filename>, from the host system
-(assuming it is available) to the unpacked <filename
-class="directory">linux-&linux-version;</filename> directory. However,
-we do not recommend this option. It is often better to explore all the
-configuration menus and create the kernel configuration from
-scratch.</para>
-
-<note><para>NPTL requires the kernel to be compiled with GCC-3.x or later, in this case
-&gcc-version;. It is not recommended to compile the kernel with GCC-2.95.x, as
-this causes failures in the Glibc test suite. Normally, this wouldn't be
-mentioned as LFS doesn't build GCC-2.95.x. Unfortunately, the kernel
-documentation is outdated and still claims GCC-2.95.3 is the recommended
-compiler.</para></note>
-
-<para>Compile the kernel image and modules:</para>
+ <para>Alternatively, <command>make oldconfig</command> may be more
+ appropriate in some situations. See the <filename>README</filename>
+ file for more information.</para>
+
+ <para>If desired, skip kernel configuration by copying the kernel
+ config file, <filename>.config</filename>, from the host system
+ (assuming it is available) to the unpacked <filename
+ class="directory">linux-&linux-version;</filename> directory. However,
+ we do not recommend this option. It is often better to explore all the
+ configuration menus and create the kernel configuration from
+ scratch.</para>
+
+ <note>
+ <para>NPTL requires the kernel to be compiled with GCC-3.x or later, in
+ this case &gcc-version;. It is not recommended to compile the kernel with
+ GCC-2.95.x, as this causes failures in the Glibc test suite. Normally,
+ this wouldn't be mentioned as LFS doesn't build GCC-2.95.x. Unfortunately,
+ the kernel documentation is outdated and still claims GCC-2.95.3 is the
+ recommended compiler.</para>
+ </note>
+
+ <para>Compile the kernel image and modules:</para>
<screen><userinput>make</userinput></screen>
-<para>If using kernel modules, an <filename>/etc/modprobe.conf</filename> file
-may be needed. Information pertaining to modules and kernel configuration is
-located in the kernel documentation in the <filename
-class="directory">linux-&linux-version;/Documentation</filename> directory.
-Also, <filename>modprobe.conf(5)</filename> may be of interest.</para>
+ <para>If using kernel modules, an <filename>/etc/modprobe.conf</filename> file
+ may be needed. Information pertaining to modules and kernel configuration is
+ located in the kernel documentation in the <filename
+ class="directory">linux-&linux-version;/Documentation</filename> directory.
+ Also, <filename>modprobe.conf(5)</filename> may be of interest.</para>
-<para>Be very careful when reading other documentation relating to kernel
-modules because it usually applies to 2.4.x kernels only. As far as we know,
-kernel configuration issues specific to Hotplug and Udev are not documented.
-The problem is that Udev will create a device node only if Hotplug or a
-user-written script inserts the corresponding module into the kernel, and not
-all modules are detectable by Hotplug. Note that statements like the one below
-in the <filename>/etc/modprobe.conf</filename> file do not work with
-Udev:</para>
+ <para>Be very careful when reading other documentation relating to kernel
+ modules because it usually applies to 2.4.x kernels only. As far as we know,
+ kernel configuration issues specific to Hotplug and Udev are not documented.
+ The problem is that Udev will create a device node only if Hotplug or a
+ user-written script inserts the corresponding module into the kernel, and not
+ all modules are detectable by Hotplug. Note that statements like the one below
+ in the <filename>/etc/modprobe.conf</filename> file do not work with
+ Udev:</para>
-<para><screen>alias char-major-XXX some-module</screen></para>
+<screen><literal>alias char-major-XXX some-module</literal></screen>
-<para>Because of the complications with Hotplug, Udev, and modules, we
-strongly recommend starting with a completely non-modular kernel
-configuration, especially if this is the first time using Udev.</para>
+ <para>Because of the complications with Hotplug, Udev, and modules, we
+ strongly recommend starting with a completely non-modular kernel
+ configuration, especially if this is the first time using Udev.</para>
-<para>Install the modules, if the kernel configuration uses them:</para>
+ <para>Install the modules, if the kernel configuration uses them:</para>
<screen><userinput>make modules_install</userinput></screen>
-<para>After kernel compilation is complete, additional steps are
-required to complete the installation. Some files need to be copied to
-the <filename class="directory">/boot</filename> directory.</para>
+ <para>After kernel compilation is complete, additional steps are
+ required to complete the installation. Some files need to be copied to
+ the <filename class="directory">/boot</filename> directory.</para>
-<para>The path to the kernel image may vary depending on the platform
-being used. The following command assumes an x86 architecture:</para>
+ <para>The path to the kernel image may vary depending on the platform
+ being used. The following command assumes an x86 architecture:</para>
<screen><userinput>cp -v arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
-<para><filename>System.map</filename> is a symbol file for the kernel.
-It maps the function entry points of every function in the kernel API,
-as well as the addresses of the kernel data structures for the running
-kernel. Issue the following command to install the map file:</para>
+ <para><filename>System.map</filename> is a symbol file for the kernel.
+ It maps the function entry points of every function in the kernel API,
+ as well as the addresses of the kernel data structures for the running
+ kernel. Issue the following command to install the map file:</para>
<screen><userinput>cp -v System.map /boot/System.map-&linux-version;</userinput></screen>
-<para>The kernel configuration file <filename>.config</filename>
-produced by the <command>make menuconfig</command> step
-above contains all the configuration selections for the kernel
-that was just compiled. It is a good idea to keep this file for future
-reference:</para>
+ <para>The kernel configuration file <filename>.config</filename>
+ produced by the <command>make menuconfig</command> step
+ above contains all the configuration selections for the kernel
+ that was just compiled. It is a good idea to keep this file for future
+ reference:</para>
<screen><userinput>cp -v .config /boot/config-&linux-version;</userinput></screen>
-<para>It is important to note that the files in the kernel source
-directory are not owned by <emphasis>root</emphasis>. Whenever a
-package is unpacked as user <emphasis>root</emphasis> (like we did
-inside chroot), the files have the user and group IDs of whatever
-they were on the packager's computer. This is usually not a problem
-for any other package to be installed because the source tree is
-removed after the installation. However, the Linux source tree is
-often retained for a long time. Because of this, there is a chance
-that whatever user ID the packager used will be assigned to somebody
-on the machine. That person would then have write access to the kernel
-source.</para>
-
-<para>If the kernel source tree is going to be retained, run
-<command>chown -R 0:0</command> on the <filename
-class="directory">linux-&linux-version;</filename> directory to ensure
-all files are owned by user <emphasis>root</emphasis>.</para>
-
-<warning><para>Some kernel documentation recommends creating a symlink from
-<filename class="symlink">/usr/src/linux</filename> pointing to the kernel
-source directory. This is specific to kernels prior to the 2.6 series and
-<emphasis>must not</emphasis> be created on an LFS system as it can cause
-problems for packages you may wish to build once your base LFS system is
-complete.</para>
-
-<para>Also, the headers in the system's
-<filename class="directory">include</filename> directory should
-<emphasis>always</emphasis> be the ones against which Glibc was compiled,
-that is, the ones from the Linux-Libc-Headers package, and therefore, should
-<emphasis>never</emphasis> be replaced by the kernel headers.</para></warning>
-
-</sect2>
-
-
-<sect2 id="contents-kernel" role="content"><title>Contents of Linux</title>
-
-<segmentedlist>
-<segtitle>Installed files</segtitle>
-<seglistitem><seg>config-&linux-version;, lfskernel-&linux-version;,
-and System.map-&linux-version;</seg></seglistitem>
-</segmentedlist>
-
-<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
-<?dbfo list-presentation="list"?>
-<?dbhtml list-presentation="table"?>
-
-<varlistentry id="config">
-<term><filename>config-&linux-version;</filename></term>
-<listitem>
-<para>Contains all the configuration selections for the kernel</para>
-<indexterm zone="ch-bootable-kernel config"><primary sortas="e-/boot/config">/boot/config-&linux-version;</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="lfskernel">
-<term><filename>lfskernel-&linux-version;</filename></term>
-<listitem>
-<para>The engine of the Linux system. When turning on the computer,
-the kernel is the first part of the operating system that gets loaded.
-It detects and initializes all components of the computer's hardware,
-then makes these components available as a tree of files to the
-software and turns a single CPU into a multitasking machine capable
-of running scores of programs seemingly at the same time</para>
-<indexterm zone="ch-bootable-kernel lfskernel"><primary sortas="b-lfskernel">lfskernel-&linux-version;</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="System.map">
-<term><filename>System.map-&linux-version;</filename></term>
-<listitem>
-<para>A list of addresses and symbols; it maps the entry points and
-addresses of all the functions and data structures in the
-kernel</para>
-<indexterm zone="ch-bootable-kernel System.map"><primary sortas="e-/boot/System.map">/boot/System.map-&linux-version;</primary></indexterm>
-</listitem>
-</varlistentry>
-</variablelist>
-
-</sect2>
+ <para>It is important to note that the files in the kernel source
+ directory are not owned by <emphasis>root</emphasis>. Whenever a
+ package is unpacked as user <emphasis>root</emphasis> (like we did
+ inside chroot), the files have the user and group IDs of whatever
+ they were on the packager's computer. This is usually not a problem
+ for any other package to be installed because the source tree is
+ removed after the installation. However, the Linux source tree is
+ often retained for a long time. Because of this, there is a chance
+ that whatever user ID the packager used will be assigned to somebody
+ on the machine. That person would then have write access to the kernel
+ source.</para>
+
+ <para>If the kernel source tree is going to be retained, run
+ <command>chown -R 0:0</command> on the <filename
+ class="directory">linux-&linux-version;</filename> directory to ensure
+ all files are owned by user <emphasis>root</emphasis>.</para>
+
+ <warning>
+ <para>Some kernel documentation recommends creating a symlink from
+ <filename class="symlink">/usr/src/linux</filename> pointing to the kernel
+ source directory. This is specific to kernels prior to the 2.6 series and
+ <emphasis>must not</emphasis> be created on an LFS system as it can cause
+ problems for packages you may wish to build once your base LFS system is
+ complete.</para>
+
+ <para>Also, the headers in the system's
+ <filename class="directory">include</filename> directory should
+ <emphasis>always</emphasis> be the ones against which Glibc was compiled,
+ that is, the ones from the Linux-Libc-Headers package, and therefore, should
+ <emphasis>never</emphasis> be replaced by the kernel headers.</para>
+ </warning>
+
+ </sect2>
+
+
+ <sect2 id="contents-kernel" role="content">
+ <title>Contents of Linux</title>
+
+ <segmentedlist>
+ <segtitle>Installed files</segtitle>
+
+ <seglistitem>
+ <seg>config-&linux-version;, lfskernel-&linux-version;, and
+ System.map-&linux-version;</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <variablelist>
+ <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+ <?dbfo list-presentation="list"?>
+ <?dbhtml list-presentation="table"?>
+
+ <varlistentry id="config">
+ <term><filename>config-&linux-version;</filename></term>
+ <listitem>
+ <para>Contains all the configuration selections for the kernel</para>
+ <indexterm zone="ch-bootable-kernel config">
+ <primary sortas="e-/boot/config">/boot/config-&linux-version;</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="lfskernel">
+ <term><filename>lfskernel-&linux-version;</filename></term>
+ <listitem>
+ <para>The engine of the Linux system. When turning on the computer,
+ the kernel is the first part of the operating system that gets loaded.
+ It detects and initializes all components of the computer's hardware,
+ then makes these components available as a tree of files to the
+ software and turns a single CPU into a multitasking machine capable
+ of running scores of programs seemingly at the same time</para>
+ <indexterm zone="ch-bootable-kernel lfskernel">
+ <primary sortas="b-lfskernel">lfskernel-&linux-version;</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="System.map">
+ <term><filename>System.map-&linux-version;</filename></term>
+ <listitem>
+ <para>A list of addresses and symbols; it maps the entry points and
+ addresses of all the functions and data structures in the
+ kernel</para>
+ <indexterm zone="ch-bootable-kernel System.map">
+ <primary sortas="e-/boot/System.map">/boot/System.map-&linux-version;</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect2>
</sect1>