mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-06-19 11:49: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"?>
|
<?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">
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||||
%general-entities;
|
%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"/>
|
<chapter id="chapter-bootable" xreflabel="Chapter 8">
|
||||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="fstab.xml"/>
|
<?dbhtml dir="chapter08"?>
|
||||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernel.xml"/>
|
<?dbhtml filename="chapter08.html"?>
|
||||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/>
|
|
||||||
|
<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>
|
</chapter>
|
||||||
|
@ -1,18 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
<?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">
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||||
%general-entities;
|
%general-entities;
|
||||||
]>
|
]>
|
||||||
|
|
||||||
<sect1 id="ch-bootable-fstab">
|
<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
|
<indexterm zone="ch-bootable-fstab">
|
||||||
determine where file systems are to be mounted by default, in which order, and
|
<primary sortas="e-/etc/fstab">/etc/fstab</primary>
|
||||||
which must be checked (for integrity errors) prior to mounting. Create a new
|
</indexterm>
|
||||||
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 > /etc/fstab << "EOF"
|
<screen><userinput>cat > /etc/fstab << "EOF"
|
||||||
<literal># Begin /etc/fstab
|
<literal># Begin /etc/fstab
|
||||||
@ -29,36 +34,35 @@ shm /dev/shm tmpfs defaults 0 0
|
|||||||
# End /etc/fstab</literal>
|
# End /etc/fstab</literal>
|
||||||
EOF</userinput></screen>
|
EOF</userinput></screen>
|
||||||
|
|
||||||
<para>Replace <replaceable>[xxx]</replaceable>,
|
<para>Replace <replaceable>[xxx]</replaceable>,
|
||||||
<replaceable>[yyy]</replaceable>, and <replaceable>[fff]</replaceable>
|
<replaceable>[yyy]</replaceable>, and <replaceable>[fff]</replaceable>
|
||||||
with the values appropriate for the system, for example, <filename
|
with the values appropriate for the system, for example, <filename
|
||||||
class="partition">hda2</filename>, <filename
|
class="partition">hda2</filename>, <filename
|
||||||
class="partition">hda5</filename>, and <systemitem
|
class="partition">hda5</filename>, and <systemitem
|
||||||
class="filesystem">ext2</systemitem>. For details on the six
|
class="filesystem">ext2</systemitem>. For details on the six
|
||||||
fields in this file, see <command>man 5 fstab</command>.</para>
|
fields in this file, see <command>man 5 fstab</command>.</para>
|
||||||
|
|
||||||
<para>The <filename class="directory">/dev/shm</filename> mount point
|
<para>The <filename class="directory">/dev/shm</filename> mount point
|
||||||
for <systemitem class="filesystem">tmpfs</systemitem> is included to
|
for <systemitem class="filesystem">tmpfs</systemitem> is included to
|
||||||
allow enabling POSIX-shared memory. The kernel must have the required
|
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
|
support built into it for this to work (more about this is in the next
|
||||||
section). Please note that very little software currently uses
|
section). Please note that very little software currently uses
|
||||||
POSIX-shared memory. Therefore, consider the <filename
|
POSIX-shared memory. Therefore, consider the <filename
|
||||||
class="directory">/dev/shm</filename> mount point optional. For more
|
class="directory">/dev/shm</filename> mount point optional. For more
|
||||||
information, see
|
information, see
|
||||||
<filename>Documentation/filesystems/tmpfs.txt</filename> in the kernel
|
<filename>Documentation/filesystems/tmpfs.txt</filename> in the kernel
|
||||||
source tree.</para>
|
source tree.</para>
|
||||||
|
|
||||||
<para>There are other lines which may be added to the
|
<para>There are other lines which may be added to the
|
||||||
<filename>/etc/fstab</filename> file. One example is a line for USB
|
<filename>/etc/fstab</filename> file. One example is a line for USB
|
||||||
devices:</para>
|
devices:</para>
|
||||||
|
|
||||||
<screen>usbfs /proc/bus/usb usbfs devgid=14,devmode=0660 0 0 </screen>
|
<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
|
<para>This option will only work if <quote>Support for Host-side USB</quote>
|
||||||
<quote>USB device filesystem</quote> are configured in the kernel. If
|
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
|
<quote>Support for Host-side USB</quote> is compiled as a module, then
|
||||||
<filename>usbcore</filename> must be listed in
|
<filename>usbcore</filename> must be listed in
|
||||||
<filename>/etc/sysconfig/modules</filename>.</para>
|
<filename>/etc/sysconfig/modules</filename>.</para>
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
|
@ -1,88 +1,93 @@
|
|||||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
<?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">
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||||
%general-entities;
|
%general-entities;
|
||||||
]>
|
]>
|
||||||
|
|
||||||
<sect1 id="ch-bootable-grub">
|
<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">
|
<title>Making the LFS System Bootable</title>
|
||||||
<primary sortas="a-Grub">GRUB</primary>
|
|
||||||
<secondary>configuring</secondary></indexterm>
|
|
||||||
|
|
||||||
<para>Your shiny new LFS system is almost complete. One of the last
|
<indexterm zone="ch-bootable-grub">
|
||||||
things to do is to ensure that the system can be properly booted. The
|
<primary sortas="a-Grub">GRUB</primary>
|
||||||
instructions below apply only to computers of IA-32 architecture,
|
<secondary>configuring</secondary>
|
||||||
meaning mainstream PCs. Information on <quote>boot loading</quote> for
|
</indexterm>
|
||||||
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
|
<para>Your shiny new LFS system is almost complete. One of the last
|
||||||
words are in order. Be familiar with the current boot loader and any other
|
things to do is to ensure that the system can be properly booted. The
|
||||||
operating systems present on the hard drive(s) that need to be
|
instructions below apply only to computers of IA-32 architecture,
|
||||||
bootable. Make sure that an emergency boot disk is ready to
|
meaning mainstream PCs. Information on <quote>boot loading</quote> for
|
||||||
<quote>rescue</quote> the computer if the computer becomes
|
other architectures should be available in the usual resource-specific
|
||||||
unusable (un-bootable).</para>
|
locations for those architectures.</para>
|
||||||
|
|
||||||
<para>Earlier, we compiled and installed the GRUB boot loader software
|
<para>Boot loading can be a complex area, so a few cautionary
|
||||||
in preparation for this step. The procedure involves writing some
|
words are in order. Be familiar with the current boot loader and any other
|
||||||
special GRUB files to specific locations on the hard drive. We highly
|
operating systems present on the hard drive(s) that need to be
|
||||||
recommend creating a GRUB boot floppy diskette as a backup. Insert a
|
bootable. Make sure that an emergency boot disk is ready to
|
||||||
blank floppy diskette and run the following commands:</para>
|
<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
|
<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>
|
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
|
<para>Remove the diskette and store it somewhere safe. Now, run the
|
||||||
<command>grub</command> shell:</para>
|
<command>grub</command> shell:</para>
|
||||||
|
|
||||||
<screen><userinput>grub</userinput></screen>
|
<screen><userinput>grub</userinput></screen>
|
||||||
|
|
||||||
<para>GRUB uses its own naming structure for drives and partitions in
|
<para>GRUB uses its own naming structure for drives and partitions in
|
||||||
the form of <emphasis>(hdn,m)</emphasis>, where <emphasis>n</emphasis>
|
the form of <emphasis>(hdn,m)</emphasis>, where <emphasis>n</emphasis>
|
||||||
is the hard drive number and <emphasis>m</emphasis> is the partition
|
is the hard drive number and <emphasis>m</emphasis> is the partition
|
||||||
number, both starting from zero. For example, partition <filename
|
number, both starting from zero. For example, partition <filename
|
||||||
class="partition">hda1</filename> is <emphasis>(hd0,0)</emphasis> to
|
class="partition">hda1</filename> is <emphasis>(hd0,0)</emphasis> to
|
||||||
GRUB and <filename class="partition">hdb3</filename> is
|
GRUB and <filename class="partition">hdb3</filename> is
|
||||||
<emphasis>(hd1,2)</emphasis>. In contrast to Linux, GRUB does not
|
<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
|
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">hdb</filename> and a second hard drive
|
||||||
on <filename class="partition">hdc</filename>, that second hard drive
|
on <filename class="partition">hdc</filename>, that second hard drive
|
||||||
would still be <emphasis>(hd1)</emphasis>.</para>
|
would still be <emphasis>(hd1)</emphasis>.</para>
|
||||||
|
|
||||||
<para>Using the above information, determine the appropriate
|
<para>Using the above information, determine the appropriate
|
||||||
designator for the root partition (or boot partition, if a separate
|
designator for the root partition (or boot partition, if a separate
|
||||||
one is used). For the following example, it is assumed that the root
|
one is used). For the following example, it is assumed that the root
|
||||||
(or separate boot) partition is <filename
|
(or separate boot) partition is <filename
|
||||||
class="partition">hda4</filename>.</para>
|
class="partition">hda4</filename>.</para>
|
||||||
|
|
||||||
<para>Tell GRUB where to search for its
|
<para>Tell GRUB where to search for its
|
||||||
<filename>stage{1,2}</filename> files. The Tab key can be used
|
<filename>stage{1,2}</filename> files. The Tab key can be used
|
||||||
everywhere to make GRUB show the alternatives:</para>
|
everywhere to make GRUB show the alternatives:</para>
|
||||||
|
|
||||||
<screen><userinput>root (hd0,3)</userinput></screen>
|
<screen><userinput>root (hd0,3)</userinput></screen>
|
||||||
|
|
||||||
<warning><para>The following command will overwrite the current boot
|
<warning>
|
||||||
loader. Do not run the command if this is not desired, for example, if
|
<para>The following command will overwrite the current boot loader. Do not
|
||||||
using a third party boot manager to manage the Master Boot Record
|
run the command if this is not desired, for example, if using a third party
|
||||||
(MBR). In this scenario, it would make more sense to install
|
boot manager to manage the Master Boot Record (MBR). In this scenario, it
|
||||||
GRUB into the <quote>boot sector</quote> of the LFS partition. In this
|
would make more sense to install GRUB into the <quote>boot sector</quote>
|
||||||
case, this next command would become <userinput>setup
|
of the LFS partition. In this case, this next command would become
|
||||||
(hd0,3)</userinput>.</para></warning>
|
<userinput>setup (hd0,3)</userinput>.</para>
|
||||||
|
</warning>
|
||||||
|
|
||||||
<para>Tell GRUB to install itself into the MBR of
|
<para>Tell GRUB to install itself into the MBR of
|
||||||
<filename class="partition">hda</filename>:</para>
|
<filename class="partition">hda</filename>:</para>
|
||||||
|
|
||||||
<screen><userinput>setup (hd0)</userinput></screen>
|
<screen><userinput>setup (hd0)</userinput></screen>
|
||||||
|
|
||||||
<para>If all went well, GRUB will have reported finding its files in
|
<para>If all went well, GRUB will have reported finding its files in
|
||||||
<filename class="directory">/boot/grub</filename>. That's all there is
|
<filename class="directory">/boot/grub</filename>. That's all there is
|
||||||
to it. Quit the <command>grub</command> shell:</para>
|
to it. Quit the <command>grub</command> shell:</para>
|
||||||
|
|
||||||
<screen><userinput>quit</userinput></screen>
|
<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"
|
<screen><userinput>cat > /boot/grub/menu.lst << "EOF"
|
||||||
<literal># Begin /boot/grub/menu.lst
|
<literal># Begin /boot/grub/menu.lst
|
||||||
@ -102,8 +107,8 @@ root (hd0,3)
|
|||||||
kernel /boot/lfskernel-&linux-version; root=/dev/hda4</literal>
|
kernel /boot/lfskernel-&linux-version; root=/dev/hda4</literal>
|
||||||
EOF</userinput></screen>
|
EOF</userinput></screen>
|
||||||
|
|
||||||
<para>Add an entry for the host distribution if desired. It might look
|
<para>Add an entry for the host distribution if desired. It might look
|
||||||
like this:</para>
|
like this:</para>
|
||||||
|
|
||||||
<screen><userinput>cat >> /boot/grub/menu.lst << "EOF"
|
<screen><userinput>cat >> /boot/grub/menu.lst << "EOF"
|
||||||
<literal>title Red Hat
|
<literal>title Red Hat
|
||||||
@ -112,8 +117,8 @@ kernel /boot/kernel-2.6.5 root=/dev/hda3
|
|||||||
initrd /boot/initrd-2.6.5</literal>
|
initrd /boot/initrd-2.6.5</literal>
|
||||||
EOF</userinput></screen>
|
EOF</userinput></screen>
|
||||||
|
|
||||||
<para>If dual-booting Windows, the following entry will allow
|
<para>If dual-booting Windows, the following entry will allow
|
||||||
booting it:</para>
|
booting it:</para>
|
||||||
|
|
||||||
<screen><userinput>cat >> /boot/grub/menu.lst << "EOF"
|
<screen><userinput>cat >> /boot/grub/menu.lst << "EOF"
|
||||||
<literal>title Windows
|
<literal>title Windows
|
||||||
@ -121,16 +126,15 @@ rootnoverify (hd0,0)
|
|||||||
chainloader +1</literal>
|
chainloader +1</literal>
|
||||||
EOF</userinput></screen>
|
EOF</userinput></screen>
|
||||||
|
|
||||||
<para>If <command>info grub</command> does not provide all necessary material, additional
|
<para>If <command>info grub</command> does not provide all necessary material,
|
||||||
information regarding GRUB is located on its website at:
|
additional information regarding GRUB is located on its website at:
|
||||||
<ulink url="http://www.gnu.org/software/grub/"/>.</para>
|
<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
|
<para>The FHS stipulates that GRUB's <filename>menu.lst</filename> file should
|
||||||
<filename class="symlink">/etc/grub/menu.lst</filename>. To satisfy this requirement, issue the
|
be symlinked to <filename class="symlink">/etc/grub/menu.lst</filename>. To
|
||||||
following command:</para>
|
satisfy this requirement, issue the following command:</para>
|
||||||
|
|
||||||
<screen><userinput>mkdir -v /etc/grub &&
|
<screen><userinput>mkdir -v /etc/grub &&
|
||||||
ln -sv /boot/grub/menu.lst /etc/grub</userinput></screen>
|
ln -sv /boot/grub/menu.lst /etc/grub</userinput></screen>
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
<?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">
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||||
%general-entities;
|
%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
|
<sect1 id="ch-bootable-introduction">
|
||||||
discusses creating an <filename>fstab</filename> file, building a
|
<?dbhtml filename="introduction.html"?>
|
||||||
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>
|
||||||
|
|
||||||
|
<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>
|
</sect1>
|
||||||
|
|
||||||
|
@ -1,212 +1,243 @@
|
|||||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
<?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">
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||||
%general-entities;
|
%general-entities;
|
||||||
]>
|
]>
|
||||||
|
|
||||||
<sect1 id="ch-bootable-kernel" role="wrap">
|
<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/>
|
<indexterm zone="ch-bootable-kernel">
|
||||||
<para>The Linux package contains the Linux kernel.</para>
|
<primary sortas="a-Linux">Linux</primary>
|
||||||
|
</indexterm>
|
||||||
|
|
||||||
<segmentedlist>
|
<sect2 role="package">
|
||||||
<segtitle>&buildtime;</segtitle>
|
<title/>
|
||||||
<segtitle>&diskspace;</segtitle>
|
|
||||||
<seglistitem><seg>4.20 SBU</seg>
|
|
||||||
<seg>181 MB</seg></seglistitem>
|
|
||||||
</segmentedlist>
|
|
||||||
|
|
||||||
<segmentedlist>
|
<para>The Linux package contains the Linux kernel.</para>
|
||||||
<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">
|
<segmentedlist>
|
||||||
<title>Installation of the kernel</title>
|
<segtitle>&buildtime;</segtitle>
|
||||||
|
<segtitle>&diskspace;</segtitle>
|
||||||
|
|
||||||
<para>Building the kernel involves a few steps—configuration, compilation,
|
<seglistitem>
|
||||||
and installation. Read the <filename>README</filename> file in the kernel source
|
<seg>4.20 SBU</seg>
|
||||||
tree for alternative methods to the way this book configures the kernel.</para>
|
<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>
|
<screen><userinput>make mrproper</userinput></screen>
|
||||||
|
|
||||||
<para>This ensures that the kernel tree is absolutely clean. The
|
<para>This ensures that the kernel tree is absolutely clean. The
|
||||||
kernel team recommends that this command be issued prior to each
|
kernel team recommends that this command be issued prior to each
|
||||||
kernel compilation. Do not rely on the source tree being clean after
|
kernel compilation. Do not rely on the source tree being clean after
|
||||||
un-tarring.</para>
|
un-tarring.</para>
|
||||||
|
|
||||||
<para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to
|
<para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to
|
||||||
compile the keymap into the kernel, issue the command below:</para>
|
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> > \
|
<screen role="nodump"><userinput>loadkeys -m /usr/share/kbd/keymaps/<replaceable>[path to keymap]</replaceable> > \
|
||||||
drivers/char/defkeymap.c</userinput></screen>
|
drivers/char/defkeymap.c</userinput></screen>
|
||||||
|
|
||||||
<para>For example, if using a Dutch keyboard, use
|
<para>For example, if using a Dutch keyboard, use
|
||||||
<filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para>
|
<filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para>
|
||||||
|
|
||||||
<para>Configure the kernel via a menu-driven interface. BLFS has some
|
<para>Configure the kernel via a menu-driven interface. BLFS has some
|
||||||
information regarding particular kernel configuration requirements of
|
information regarding particular kernel configuration requirements of
|
||||||
packages outside of LFS at <ulink
|
packages outside of LFS at <ulink
|
||||||
url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>:</para>
|
url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>:</para>
|
||||||
|
|
||||||
<screen role="nodump"><userinput>make menuconfig</userinput></screen>
|
<screen role="nodump"><userinput>make menuconfig</userinput></screen>
|
||||||
|
|
||||||
<para>Alternatively, <command>make oldconfig</command> may be more appropriate in some
|
<para>Alternatively, <command>make oldconfig</command> may be more
|
||||||
situations. See the <filename>README</filename> file for more
|
appropriate in some situations. See the <filename>README</filename>
|
||||||
information.</para>
|
file for more information.</para>
|
||||||
|
|
||||||
<para>If desired, skip kernel configuration by copying the kernel
|
<para>If desired, skip kernel configuration by copying the kernel
|
||||||
config file, <filename>.config</filename>, from the host system
|
config file, <filename>.config</filename>, from the host system
|
||||||
(assuming it is available) to the unpacked <filename
|
(assuming it is available) to the unpacked <filename
|
||||||
class="directory">linux-&linux-version;</filename> directory. However,
|
class="directory">linux-&linux-version;</filename> directory. However,
|
||||||
we do not recommend this option. It is often better to explore all the
|
we do not recommend this option. It is often better to explore all the
|
||||||
configuration menus and create the kernel configuration from
|
configuration menus and create the kernel configuration from
|
||||||
scratch.</para>
|
scratch.</para>
|
||||||
|
|
||||||
<note><para>NPTL requires the kernel to be compiled with GCC-3.x or later, in this case
|
<note>
|
||||||
&gcc-version;. It is not recommended to compile the kernel with GCC-2.95.x, as
|
<para>NPTL requires the kernel to be compiled with GCC-3.x or later, in
|
||||||
this causes failures in the Glibc test suite. Normally, this wouldn't be
|
this case &gcc-version;. It is not recommended to compile the kernel with
|
||||||
mentioned as LFS doesn't build GCC-2.95.x. Unfortunately, the kernel
|
GCC-2.95.x, as this causes failures in the Glibc test suite. Normally,
|
||||||
documentation is outdated and still claims GCC-2.95.3 is the recommended
|
this wouldn't be mentioned as LFS doesn't build GCC-2.95.x. Unfortunately,
|
||||||
compiler.</para></note>
|
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>
|
<screen><userinput>make</userinput></screen>
|
||||||
|
|
||||||
<para>If using kernel modules, an <filename>/etc/modprobe.conf</filename> file
|
<para>If using kernel modules, an <filename>/etc/modprobe.conf</filename> file
|
||||||
may be needed. Information pertaining to modules and kernel configuration is
|
may be needed. Information pertaining to modules and kernel configuration is
|
||||||
located in the kernel documentation in the <filename
|
located in the kernel documentation in the <filename
|
||||||
class="directory">linux-&linux-version;/Documentation</filename> directory.
|
class="directory">linux-&linux-version;/Documentation</filename> directory.
|
||||||
Also, <filename>modprobe.conf(5)</filename> may be of interest.</para>
|
Also, <filename>modprobe.conf(5)</filename> may be of interest.</para>
|
||||||
|
|
||||||
<para>Be very careful when reading other documentation relating to kernel
|
<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,
|
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.
|
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
|
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
|
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
|
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
|
in the <filename>/etc/modprobe.conf</filename> file do not work with
|
||||||
Udev:</para>
|
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
|
<para>Because of the complications with Hotplug, Udev, and modules, we
|
||||||
strongly recommend starting with a completely non-modular kernel
|
strongly recommend starting with a completely non-modular kernel
|
||||||
configuration, especially if this is the first time using Udev.</para>
|
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>
|
<screen><userinput>make modules_install</userinput></screen>
|
||||||
|
|
||||||
<para>After kernel compilation is complete, additional steps are
|
<para>After kernel compilation is complete, additional steps are
|
||||||
required to complete the installation. Some files need to be copied to
|
required to complete the installation. Some files need to be copied to
|
||||||
the <filename class="directory">/boot</filename> directory.</para>
|
the <filename class="directory">/boot</filename> directory.</para>
|
||||||
|
|
||||||
<para>The path to the kernel image may vary depending on the platform
|
<para>The path to the kernel image may vary depending on the platform
|
||||||
being used. The following command assumes an x86 architecture:</para>
|
being used. The following command assumes an x86 architecture:</para>
|
||||||
|
|
||||||
<screen><userinput>cp -v arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
|
<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.
|
<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,
|
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
|
as well as the addresses of the kernel data structures for the running
|
||||||
kernel. Issue the following command to install the map file:</para>
|
kernel. Issue the following command to install the map file:</para>
|
||||||
|
|
||||||
<screen><userinput>cp -v System.map /boot/System.map-&linux-version;</userinput></screen>
|
<screen><userinput>cp -v System.map /boot/System.map-&linux-version;</userinput></screen>
|
||||||
|
|
||||||
<para>The kernel configuration file <filename>.config</filename>
|
<para>The kernel configuration file <filename>.config</filename>
|
||||||
produced by the <command>make menuconfig</command> step
|
produced by the <command>make menuconfig</command> step
|
||||||
above contains all the configuration selections for the kernel
|
above contains all the configuration selections for the kernel
|
||||||
that was just compiled. It is a good idea to keep this file for future
|
that was just compiled. It is a good idea to keep this file for future
|
||||||
reference:</para>
|
reference:</para>
|
||||||
|
|
||||||
<screen><userinput>cp -v .config /boot/config-&linux-version;</userinput></screen>
|
<screen><userinput>cp -v .config /boot/config-&linux-version;</userinput></screen>
|
||||||
|
|
||||||
<para>It is important to note that the files in the kernel source
|
<para>It is important to note that the files in the kernel source
|
||||||
directory are not owned by <emphasis>root</emphasis>. Whenever a
|
directory are not owned by <emphasis>root</emphasis>. Whenever a
|
||||||
package is unpacked as user <emphasis>root</emphasis> (like we did
|
package is unpacked as user <emphasis>root</emphasis> (like we did
|
||||||
inside chroot), the files have the user and group IDs of whatever
|
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
|
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
|
for any other package to be installed because the source tree is
|
||||||
removed after the installation. However, the Linux 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
|
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
|
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
|
on the machine. That person would then have write access to the kernel
|
||||||
source.</para>
|
source.</para>
|
||||||
|
|
||||||
<para>If the kernel source tree is going to be retained, run
|
<para>If the kernel source tree is going to be retained, run
|
||||||
<command>chown -R 0:0</command> on the <filename
|
<command>chown -R 0:0</command> on the <filename
|
||||||
class="directory">linux-&linux-version;</filename> directory to ensure
|
class="directory">linux-&linux-version;</filename> directory to ensure
|
||||||
all files are owned by user <emphasis>root</emphasis>.</para>
|
all files are owned by user <emphasis>root</emphasis>.</para>
|
||||||
|
|
||||||
<warning><para>Some kernel documentation recommends creating a symlink from
|
<warning>
|
||||||
<filename class="symlink">/usr/src/linux</filename> pointing to the kernel
|
<para>Some kernel documentation recommends creating a symlink from
|
||||||
source directory. This is specific to kernels prior to the 2.6 series and
|
<filename class="symlink">/usr/src/linux</filename> pointing to the kernel
|
||||||
<emphasis>must not</emphasis> be created on an LFS system as it can cause
|
source directory. This is specific to kernels prior to the 2.6 series and
|
||||||
problems for packages you may wish to build once your base LFS system is
|
<emphasis>must not</emphasis> be created on an LFS system as it can cause
|
||||||
complete.</para>
|
problems for packages you may wish to build once your base LFS system is
|
||||||
|
complete.</para>
|
||||||
|
|
||||||
<para>Also, the headers in the system's
|
<para>Also, the headers in the system's
|
||||||
<filename class="directory">include</filename> directory should
|
<filename class="directory">include</filename> directory should
|
||||||
<emphasis>always</emphasis> be the ones against which Glibc was compiled,
|
<emphasis>always</emphasis> be the ones against which Glibc was compiled,
|
||||||
that is, the ones from the Linux-Libc-Headers package, and therefore, should
|
that is, the ones from the Linux-Libc-Headers package, and therefore, should
|
||||||
<emphasis>never</emphasis> be replaced by the kernel headers.</para></warning>
|
<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>
|
<segmentedlist>
|
||||||
<segtitle>Installed files</segtitle>
|
<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>
|
<seglistitem>
|
||||||
<?dbfo list-presentation="list"?>
|
<seg>config-&linux-version;, lfskernel-&linux-version;, and
|
||||||
<?dbhtml list-presentation="table"?>
|
System.map-&linux-version;</seg>
|
||||||
|
</seglistitem>
|
||||||
|
</segmentedlist>
|
||||||
|
|
||||||
<varlistentry id="config">
|
<variablelist>
|
||||||
<term><filename>config-&linux-version;</filename></term>
|
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
|
||||||
<listitem>
|
<?dbfo list-presentation="list"?>
|
||||||
<para>Contains all the configuration selections for the kernel</para>
|
<?dbhtml list-presentation="table"?>
|
||||||
<indexterm zone="ch-bootable-kernel config"><primary sortas="e-/boot/config">/boot/config-&linux-version;</primary></indexterm>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry id="lfskernel">
|
<varlistentry id="config">
|
||||||
<term><filename>lfskernel-&linux-version;</filename></term>
|
<term><filename>config-&linux-version;</filename></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>The engine of the Linux system. When turning on the computer,
|
<para>Contains all the configuration selections for the kernel</para>
|
||||||
the kernel is the first part of the operating system that gets loaded.
|
<indexterm zone="ch-bootable-kernel config">
|
||||||
It detects and initializes all components of the computer's hardware,
|
<primary sortas="e-/boot/config">/boot/config-&linux-version;</primary>
|
||||||
then makes these components available as a tree of files to the
|
</indexterm>
|
||||||
software and turns a single CPU into a multitasking machine capable
|
</listitem>
|
||||||
of running scores of programs seemingly at the same time</para>
|
</varlistentry>
|
||||||
<indexterm zone="ch-bootable-kernel lfskernel"><primary sortas="b-lfskernel">lfskernel-&linux-version;</primary></indexterm>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry id="System.map">
|
<varlistentry id="lfskernel">
|
||||||
<term><filename>System.map-&linux-version;</filename></term>
|
<term><filename>lfskernel-&linux-version;</filename></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>A list of addresses and symbols; it maps the entry points and
|
<para>The engine of the Linux system. When turning on the computer,
|
||||||
addresses of all the functions and data structures in the
|
the kernel is the first part of the operating system that gets loaded.
|
||||||
kernel</para>
|
It detects and initializes all components of the computer's hardware,
|
||||||
<indexterm zone="ch-bootable-kernel System.map"><primary sortas="e-/boot/System.map">/boot/System.map-&linux-version;</primary></indexterm>
|
then makes these components available as a tree of files to the
|
||||||
</listitem>
|
software and turns a single CPU into a multitasking machine capable
|
||||||
</varlistentry>
|
of running scores of programs seemingly at the same time</para>
|
||||||
</variablelist>
|
<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>
|
</sect1>
|
||||||
|
Loading…
Reference in New Issue
Block a user