diff options
Diffstat (limited to 'chapter08/grub.xml')
-rw-r--r-- | chapter08/grub.xml | 86 |
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 > /boot/grub/menu.lst << "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 >> /boot/grub/menu.lst << "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 >> /boot/grub/menu.lst << "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 && ln -s /boot/grub/menu.lst /etc/grub</userinput></screen> </sect1> + |