mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-06-19 03:39:20 +01:00
Chapter08 indentation.
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@7229 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
parent
7686ca6aae
commit
b78c7479d4
@ -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>
|
||||
|
@ -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 > /etc/fstab << "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>
|
||||
|
||||
|
@ -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 > /boot/grub/menu.lst << "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 >> /boot/grub/menu.lst << "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 >> /boot/grub/menu.lst << "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 &&
|
||||
ln -sv /boot/grub/menu.lst /etc/grub</userinput></screen>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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—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—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> > \
|
||||
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>
|
||||
|
Loading…
Reference in New Issue
Block a user