Chapter08 indentation.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@7229 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
Manuel Canales Esparcia 2005-12-18 13:44:24 +00:00
parent 7686ca6aae
commit b78c7479d4
5 changed files with 315 additions and 271 deletions

View File

@ -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"?>
<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 id="chapter-bootable" xreflabel="Chapter 8">
<?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"/>
</chapter>

View File

@ -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"?>
<indexterm zone="ch-bootable-fstab"><primary sortas="e-/etc/fstab">/etc/fstab</primary></indexterm>
<title>Creating the /etc/fstab File</title>
<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>
<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>
<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>

View File

@ -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"?>
<?dbhtml filename="grub.html"?>
<indexterm zone="ch-bootable-grub">
<primary sortas="a-Grub">GRUB</primary>
<secondary>configuring</secondary></indexterm>
<title>Making the LFS System Bootable</title>
<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>
<indexterm zone="ch-bootable-grub">
<primary sortas="a-Grub">GRUB</primary>
<secondary>configuring</secondary>
</indexterm>
<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>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>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>
<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>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>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>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>

View File

@ -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"?>
<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 id="ch-bootable-introduction">
<?dbhtml filename="introduction.html"?>
<title>Introduction</title>
<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>

View File

@ -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"?>
<indexterm zone="ch-bootable-kernel"><primary sortas="a-Linux">Linux</primary></indexterm>
<title>Linux-&linux-version;</title>
<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>
<seglistitem><seg>4.20 SBU</seg>
<seg>181 MB</seg></seglistitem>
</segmentedlist>
<sect2 role="package">
<title/>
<segmentedlist>
<segtitle>&dependencies;</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Findutils,
GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<para>The Linux package contains the Linux kernel.</para>
<sect2 role="installation">
<title>Installation of the kernel</title>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<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>
<seglistitem>
<seg>4.20 SBU</seg>
<seg>181 MB</seg>
</seglistitem>
</segmentedlist>
<para>Prepare for compilation by running the following command:</para>
<segmentedlist>
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip,
Make, Modutils, Perl, and Sed</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of the kernel</title>
<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>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>
<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>
<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>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>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>
<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>
<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>
<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>
<sect2 id="contents-kernel" role="content"><title>Contents of Linux</title>
<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>
<segmentedlist>
<segtitle>Installed files</segtitle>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<seglistitem>
<seg>config-&linux-version;, lfskernel-&linux-version;, and
System.map-&linux-version;</seg>
</seglistitem>
</segmentedlist>
<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>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<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="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="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>
<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>
</sect2>
<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>