aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chapter08/chapter08.xml19
-rw-r--r--chapter08/fstab.xml72
-rw-r--r--chapter08/grub.xml152
-rw-r--r--chapter08/introduction.xml18
-rw-r--r--chapter08/kernel.xml363
5 files changed, 334 insertions, 290 deletions
diff --git a/chapter08/chapter08.xml b/chapter08/chapter08.xml
index ffe20ce1e..ace47328b 100644
--- a/chapter08/chapter08.xml
+++ b/chapter08/chapter08.xml
@@ -1,16 +1,19 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE chapter 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;
]>
+
<chapter id="chapter-bootable" xreflabel="Chapter 8">
-<?dbhtml dir="chapter08"?>
-<title>Making the LFS System Bootable</title>
-<?dbhtml filename="chapter08.html"?>
+ <?dbhtml dir="chapter08"?>
+ <?dbhtml filename="chapter08.html"?>
+
+ <title>Making the LFS System Bootable</title>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="fstab.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernel.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="fstab.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernel.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/>
</chapter>
diff --git a/chapter08/fstab.xml b/chapter08/fstab.xml
index 60322d2da..439057b4f 100644
--- a/chapter08/fstab.xml
+++ b/chapter08/fstab.xml
@@ -1,18 +1,23 @@
<?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-fstab">
-<title>Creating the /etc/fstab File</title>
-<?dbhtml filename="fstab.html"?>
+ <?dbhtml filename="fstab.html"?>
+
+ <title>Creating the /etc/fstab File</title>
-<indexterm zone="ch-bootable-fstab"><primary sortas="e-/etc/fstab">/etc/fstab</primary></indexterm>
+ <indexterm zone="ch-bootable-fstab">
+ <primary sortas="e-/etc/fstab">/etc/fstab</primary>
+ </indexterm>
-<para>The <filename>/etc/fstab</filename> file is used by some programs to
-determine where file systems are to be mounted by default, in which order, and
-which must be checked (for integrity errors) prior to mounting. Create a new
-file systems table like this:</para>
+ <para>The <filename>/etc/fstab</filename> file is used by some programs to
+ determine where file systems are to be mounted by default, in which order, and
+ which must be checked (for integrity errors) prior to mounting. Create a new
+ file systems table like this:</para>
<screen><userinput>cat &gt; /etc/fstab &lt;&lt; "EOF"
<literal># Begin /etc/fstab
@@ -29,36 +34,35 @@ shm /dev/shm tmpfs defaults 0 0
# End /etc/fstab</literal>
EOF</userinput></screen>
-<para>Replace <replaceable>[xxx]</replaceable>,
-<replaceable>[yyy]</replaceable>, and <replaceable>[fff]</replaceable>
-with the values appropriate for the system, for example, <filename
-class="partition">hda2</filename>, <filename
-class="partition">hda5</filename>, and <systemitem
-class="filesystem">ext2</systemitem>. For details on the six
-fields in this file, see <command>man 5 fstab</command>.</para>
+ <para>Replace <replaceable>[xxx]</replaceable>,
+ <replaceable>[yyy]</replaceable>, and <replaceable>[fff]</replaceable>
+ with the values appropriate for the system, for example, <filename
+ class="partition">hda2</filename>, <filename
+ class="partition">hda5</filename>, and <systemitem
+ class="filesystem">ext2</systemitem>. For details on the six
+ fields in this file, see <command>man 5 fstab</command>.</para>
-<para>The <filename class="directory">/dev/shm</filename> mount point
-for <systemitem class="filesystem">tmpfs</systemitem> is included to
-allow enabling POSIX-shared memory. The kernel must have the required
-support built into it for this to work (more about this is in the next
-section). Please note that very little software currently uses
-POSIX-shared memory. Therefore, consider the <filename
-class="directory">/dev/shm</filename> mount point optional. For more
-information, see
-<filename>Documentation/filesystems/tmpfs.txt</filename> in the kernel
-source tree.</para>
+ <para>The <filename class="directory">/dev/shm</filename> mount point
+ for <systemitem class="filesystem">tmpfs</systemitem> is included to
+ allow enabling POSIX-shared memory. The kernel must have the required
+ support built into it for this to work (more about this is in the next
+ section). Please note that very little software currently uses
+ POSIX-shared memory. Therefore, consider the <filename
+ class="directory">/dev/shm</filename> mount point optional. For more
+ information, see
+ <filename>Documentation/filesystems/tmpfs.txt</filename> in the kernel
+ source tree.</para>
-<para>There are other lines which may be added to the
-<filename>/etc/fstab</filename> file. One example is a line for USB
-devices:</para>
+ <para>There are other lines which may be added to the
+ <filename>/etc/fstab</filename> file. One example is a line for USB
+ devices:</para>
<screen>usbfs /proc/bus/usb usbfs devgid=14,devmode=0660 0 0 </screen>
-<para>This option will only work if <quote>Support for Host-side USB</quote> and
-<quote>USB device filesystem</quote> are configured in the kernel. If
-<quote>Support for Host-side USB</quote> is compiled as a module, then
-<filename>usbcore</filename> must be listed in
-<filename>/etc/sysconfig/modules</filename>.</para>
+ <para>This option will only work if <quote>Support for Host-side USB</quote>
+ and <quote>USB device filesystem</quote> are configured in the kernel. If
+ <quote>Support for Host-side USB</quote> is compiled as a module, then
+ <filename>usbcore</filename> must be listed in
+ <filename>/etc/sysconfig/modules</filename>.</para>
</sect1>
-
diff --git a/chapter08/grub.xml b/chapter08/grub.xml
index 862abd41b..172026016 100644
--- a/chapter08/grub.xml
+++ b/chapter08/grub.xml
@@ -1,88 +1,93 @@
<?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-grub">
-<title>Making the LFS System Bootable</title>
-<?dbhtml filename="grub.html"?>
-
-<indexterm zone="ch-bootable-grub">
-<primary sortas="a-Grub">GRUB</primary>
-<secondary>configuring</secondary></indexterm>
-
-<para>Your shiny new LFS system is almost complete. One of the last
-things to do is to ensure that the system can be properly booted. The
-instructions below apply only to computers of IA-32 architecture,
-meaning mainstream PCs. Information on <quote>boot loading</quote> for
-other architectures should be available in the usual resource-specific
-locations for those architectures.</para>
-
-<para>Boot loading can be a complex area, so a few cautionary
-words are in order. Be familiar with the current boot loader and any other
-operating systems present on the hard drive(s) that need to be
-bootable. Make sure that an emergency boot disk is ready to
-<quote>rescue</quote> the computer if the computer becomes
-unusable (un-bootable).</para>
-
-<para>Earlier, we compiled and installed the GRUB boot loader software
-in preparation for this step. The procedure involves writing some
-special GRUB files to specific locations on the hard drive. We highly
-recommend creating a GRUB boot floppy diskette as a backup. Insert a
-blank floppy diskette and run the following commands:</para>
+ <?dbhtml filename="grub.html"?>
+
+ <title>Making the LFS System Bootable</title>
+
+ <indexterm zone="ch-bootable-grub">
+ <primary sortas="a-Grub">GRUB</primary>
+ <secondary>configuring</secondary>
+ </indexterm>
+
+ <para>Your shiny new LFS system is almost complete. One of the last
+ things to do is to ensure that the system can be properly booted. The
+ instructions below apply only to computers of IA-32 architecture,
+ meaning mainstream PCs. Information on <quote>boot loading</quote> for
+ other architectures should be available in the usual resource-specific
+ locations for those architectures.</para>
+
+ <para>Boot loading can be a complex area, so a few cautionary
+ words are in order. Be familiar with the current boot loader and any other
+ operating systems present on the hard drive(s) that need to be
+ bootable. Make sure that an emergency boot disk is ready to
+ <quote>rescue</quote> the computer if the computer becomes
+ unusable (un-bootable).</para>
+
+ <para>Earlier, we compiled and installed the GRUB boot loader software
+ in preparation for this step. The procedure involves writing some
+ special GRUB files to specific locations on the hard drive. We highly
+ recommend creating a GRUB boot floppy diskette as a backup. Insert a
+ blank floppy diskette and run the following commands:</para>
<screen><userinput>dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1
dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1</userinput></screen>
-<para>Remove the diskette and store it somewhere safe. Now, run the
-<command>grub</command> shell:</para>
+ <para>Remove the diskette and store it somewhere safe. Now, run the
+ <command>grub</command> shell:</para>
<screen><userinput>grub</userinput></screen>
-<para>GRUB uses its own naming structure for drives and partitions in
-the form of <emphasis>(hdn,m)</emphasis>, where <emphasis>n</emphasis>
-is the hard drive number and <emphasis>m</emphasis> is the partition
-number, both starting from zero. For example, partition <filename
-class="partition">hda1</filename> is <emphasis>(hd0,0)</emphasis> to
-GRUB and <filename class="partition">hdb3</filename> is
-<emphasis>(hd1,2)</emphasis>. In contrast to Linux, GRUB does not
-consider CD-ROM drives to be hard drives. For example, if using a CD
-on <filename class="partition">hdb</filename> and a second hard drive
-on <filename class="partition">hdc</filename>, that second hard drive
-would still be <emphasis>(hd1)</emphasis>.</para>
-
-<para>Using the above information, determine the appropriate
-designator for the root partition (or boot partition, if a separate
-one is used). For the following example, it is assumed that the root
-(or separate boot) partition is <filename
-class="partition">hda4</filename>.</para>
-
-<para>Tell GRUB where to search for its
-<filename>stage{1,2}</filename> files. The Tab key can be used
-everywhere to make GRUB show the alternatives:</para>
+ <para>GRUB uses its own naming structure for drives and partitions in
+ the form of <emphasis>(hdn,m)</emphasis>, where <emphasis>n</emphasis>
+ is the hard drive number and <emphasis>m</emphasis> is the partition
+ number, both starting from zero. For example, partition <filename
+ class="partition">hda1</filename> is <emphasis>(hd0,0)</emphasis> to
+ GRUB and <filename class="partition">hdb3</filename> is
+ <emphasis>(hd1,2)</emphasis>. In contrast to Linux, GRUB does not
+ consider CD-ROM drives to be hard drives. For example, if using a CD
+ on <filename class="partition">hdb</filename> and a second hard drive
+ on <filename class="partition">hdc</filename>, that second hard drive
+ would still be <emphasis>(hd1)</emphasis>.</para>
+
+ <para>Using the above information, determine the appropriate
+ designator for the root partition (or boot partition, if a separate
+ one is used). For the following example, it is assumed that the root
+ (or separate boot) partition is <filename
+ class="partition">hda4</filename>.</para>
+
+ <para>Tell GRUB where to search for its
+ <filename>stage{1,2}</filename> files. The Tab key can be used
+ everywhere to make GRUB show the alternatives:</para>
<screen><userinput>root (hd0,3)</userinput></screen>
-<warning><para>The following command will overwrite the current boot
-loader. Do not run the command if this is not desired, for example, if
-using a third party boot manager to manage the Master Boot Record
-(MBR). In this scenario, it would make more sense to install
-GRUB into the <quote>boot sector</quote> of the LFS partition. In this
-case, this next command would become <userinput>setup
-(hd0,3)</userinput>.</para></warning>
+ <warning>
+ <para>The following command will overwrite the current boot loader. Do not
+ run the command if this is not desired, for example, if using a third party
+ boot manager to manage the Master Boot Record (MBR). In this scenario, it
+ would make more sense to install GRUB into the <quote>boot sector</quote>
+ of the LFS partition. In this case, this next command would become
+ <userinput>setup (hd0,3)</userinput>.</para>
+ </warning>
-<para>Tell GRUB to install itself into the MBR of
-<filename class="partition">hda</filename>:</para>
+ <para>Tell GRUB to install itself into the MBR of
+ <filename class="partition">hda</filename>:</para>
<screen><userinput>setup (hd0)</userinput></screen>
-<para>If all went well, GRUB will have reported finding its files in
-<filename class="directory">/boot/grub</filename>. That's all there is
-to it. Quit the <command>grub</command> shell:</para>
+ <para>If all went well, GRUB will have reported finding its files in
+ <filename class="directory">/boot/grub</filename>. That's all there is
+ to it. Quit the <command>grub</command> shell:</para>
<screen><userinput>quit</userinput></screen>
-<para>Create a <quote>menu list</quote> file defining GRUB's boot menu:</para>
+ <para>Create a <quote>menu list</quote> file defining GRUB's boot menu:</para>
<screen><userinput>cat &gt; /boot/grub/menu.lst &lt;&lt; "EOF"
<literal># Begin /boot/grub/menu.lst
@@ -102,8 +107,8 @@ root (hd0,3)
kernel /boot/lfskernel-&linux-version; root=/dev/hda4</literal>
EOF</userinput></screen>
-<para>Add an entry for the host distribution if desired. It might look
-like this:</para>
+ <para>Add an entry for the host distribution if desired. It might look
+ like this:</para>
<screen><userinput>cat &gt;&gt; /boot/grub/menu.lst &lt;&lt; "EOF"
<literal>title Red Hat
@@ -112,8 +117,8 @@ kernel /boot/kernel-2.6.5 root=/dev/hda3
initrd /boot/initrd-2.6.5</literal>
EOF</userinput></screen>
-<para>If dual-booting Windows, the following entry will allow
-booting it:</para>
+ <para>If dual-booting Windows, the following entry will allow
+ booting it:</para>
<screen><userinput>cat &gt;&gt; /boot/grub/menu.lst &lt;&lt; "EOF"
<literal>title Windows
@@ -121,16 +126,15 @@ rootnoverify (hd0,0)
chainloader +1</literal>
EOF</userinput></screen>
-<para>If <command>info grub</command> does not provide all necessary material, additional
-information regarding GRUB is located on its website at:
-<ulink url="http://www.gnu.org/software/grub/"/>.</para>
+ <para>If <command>info grub</command> does not provide all necessary material,
+ additional information regarding GRUB is located on its website at:
+ <ulink url="http://www.gnu.org/software/grub/"/>.</para>
-<para>The FHS stipulates that GRUB's <filename>menu.lst</filename> file should be symlinked to
-<filename class="symlink">/etc/grub/menu.lst</filename>. To satisfy this requirement, issue the
-following command:</para>
+ <para>The FHS stipulates that GRUB's <filename>menu.lst</filename> file should
+ be symlinked to <filename class="symlink">/etc/grub/menu.lst</filename>. To
+ satisfy this requirement, issue the following command:</para>
<screen><userinput>mkdir -v /etc/grub &amp;&amp;
ln -sv /boot/grub/menu.lst /etc/grub</userinput></screen>
</sect1>
-
diff --git a/chapter08/introduction.xml b/chapter08/introduction.xml
index 95bb37f7d..d1c15fcfe 100644
--- a/chapter08/introduction.xml
+++ b/chapter08/introduction.xml
@@ -1,16 +1,18 @@
<?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-introduction">
-<title>Introduction</title>
-<?dbhtml filename="introduction.html"?>
+ <?dbhtml filename="introduction.html"?>
-<para>It is time to make the LFS system bootable. This chapter
-discusses creating an <filename>fstab</filename> file, building a
-kernel for the new LFS system, and installing the GRUB boot loader so
-that the LFS system can be selected for booting at startup.</para>
+ <title>Introduction</title>
-</sect1>
+ <para>It is time to make the LFS system bootable. This chapter
+ discusses creating an <filename>fstab</filename> file, building a
+ kernel for the new LFS system, and installing the GRUB boot loader so
+ that the LFS system can be selected for booting at startup.</para>
+</sect1>
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>