aboutsummaryrefslogtreecommitdiffstats
path: root/chapter08/grub.xml
diff options
context:
space:
mode:
Diffstat (limited to 'chapter08/grub.xml')
-rw-r--r--chapter08/grub.xml86
1 files changed, 69 insertions, 17 deletions
diff --git a/chapter08/grub.xml b/chapter08/grub.xml
index 4d50002a0..12487ec71 100644
--- a/chapter08/grub.xml
+++ b/chapter08/grub.xml
@@ -7,35 +7,82 @@
<title>Making the LFS System Bootable</title>
<?dbhtml filename="grub.html"?>
-
-<para>We highly recommend that you create a Grub boot floppy diskette just in case.
-Insert a blank floppy diskette and run the following commands:</para>
+<indexterm zone="ch-bootable-grub">
+<primary sortas="a-Grub">Grub</primary>
+<secondary>configuring</secondary></indexterm>
+
+<para>Your shiny new LFS system is almost complete. One of the last
+things to do is to ensure that the system can be properly booted. The
+instructions below apply only to computers of IA-32 architecture,
+meaning mainstream PCs. Information on <quote>boot loading</quote> for
+other architectures should be available in the usual resource-specific
+locations for those architectures.</para>
+
+<para>Boot loading can be a complex area, so a few cautionary
+words are in order. Be familiar with the current boot loader and any other
+operating systems present on the hard drive(s) that need to be
+bootable. Make sure that an emergency boot disk is ready to
+<quote>rescue</quote> the computer if the computer becomes
+unusable (un-bootable).</para>
+
+<para>Earlier, we compiled and installed the Grub boot loader software
+in preparation for this step. The procedure involves writing some
+special Grub files to specific locations on the hard drive. We highly
+recommend creating a Grub boot floppy diskette as a backup. Insert a
+blank floppy diskette and run the following commands:</para>
<screen><userinput>dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1
dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1</userinput></screen>
-<para>Remove the diskette and store it somewhere safe. Now we'll run the
+<para>Remove the diskette and store it somewhere safe. Now, run the
<command>grub</command> shell:</para>
<screen><userinput>grub</userinput></screen>
-<para>First, tell Grub where to search for its <filename>stage{1,2}</filename>
-files -- you can use the Tab key everywhere to make Grub show the alternatives:</para>
+<para>Grub uses its own naming structure for drives and partitions in
+the form of <emphasis>(hdn,m)</emphasis>, where <emphasis>n</emphasis>
+is the hard drive number and <emphasis>m</emphasis> is the partition
+number, both starting from zero. For example, partition <filename
+class="partition">hda1</filename> is <emphasis>(hd0,0)</emphasis> to
+Grub and <filename class="partition">hdb3</filename> is
+<emphasis>(hd1,2)</emphasis>. In contrast to Linux, Grub does not
+consider CD-ROM drives to be hard drives. For example, if using a CD
+on <filename class="partition">hdb</filename> and a second hard drive
+on <filename class="partition">hdc</filename>, that second hard drive
+would still be <emphasis>(hd1)</emphasis>.</para>
+
+<para>Using the above information, determine the appropriate
+designator for the root partition (or boot partition, if a separate
+one is used). For the following example, it is assumed that the root
+(or separate boot) partition is <filename
+class="partition">hda4</filename>.</para>
+
+<para>Tell Grub where to search for its
+<filename>stage{1,2}</filename> files. The Tab key can be used
+everywhere to make Grub show the alternatives:</para>
<screen><userinput>root (hd0,3)</userinput></screen>
-<para>Tell Grub to install itself into the MBR (Master Boot Record) of
+<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>
<screen><userinput>setup (hd0)</userinput></screen>
-<para>If all is well, Grub will have reported finding its files in
-<filename class="directory">/boot/grub</filename>. That's all there is to it:</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>Now we need to 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
@@ -55,7 +102,7 @@ root (hd0,3)
kernel /boot/lfskernel-&linux-version; root=/dev/hda4</literal>
EOF</userinput></screen>
-<para>You may want to add an entry for your host distribution. It might look
+<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"
@@ -65,8 +112,8 @@ kernel /boot/kernel-2.4.20 root=/dev/hda3
initrd /boot/initrd-2.4.20</literal>
EOF</userinput></screen>
-<para>Also, if you happen to dual-boot Windows, the following entry should
-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
@@ -74,11 +121,16 @@ rootnoverify (hd0,0)
chainloader +1</literal>
EOF</userinput></screen>
-<para>The FHS stipulates that Grub's menu.lst file should be symlinked to
-/etc/grub/menu.lst. To satisfy this requirement, issue the following
-command:</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>
<screen><userinput>mkdir /etc/grub &amp;&amp;
ln -s /boot/grub/menu.lst /etc/grub</userinput></screen>
</sect1>
+