| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | <sect1 id="ch08-grub"><title>Making the LFS system bootable</title><?dbhtml filename="grub.html" dir="chapter08"?><para>Your shiny new LFS system is almost complete. One of the last things todo is ensure you can boot it. The instructions below apply only to computersof IA-32 architecture, i.e. mainstream PC's. Information on "boot loading" forother architectures should be available in the usual resource specificlocations for those architectures.</para><para>Boot loading can be a complex area. First, a few cautionary words. Youreally should be familiar with your current boot loader and any otheroperating systems present on your hard drive(s) that you might wish to keepbootable. Please make sure that you have an emergency boot disk ready, so thatyou can rescue your computer if, by any chance, your computer becomes unusable(unbootable).</para><para>Earlier, we compiled and installed the Grub boot loader software inpreparation for this step. The procedure involves writing some special Grubfiles to specific locations on the hard drive. Before we get to that, wehighly recommend that you create a Grub boot floppy diskette just in case.Insert a blank floppy diskette and run the following commands:</para><screen><userinput>dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1dd 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<userinput>grub</userinput> shell:</para><screen><userinput>grub</userinput></screen><para>Grub uses its own naming structure for drives and partitions, in the formof (hdn,m), where <emphasis>n</emphasis> is the hard drive number, and<emphasis>m</emphasis> the partition number, both starting from zero. Thismeans, for instance, that partition <filename>hda1</filename> is (hd0,0) toGrub, and <filename>hdb2</filename> is (hd1,1). In contrast to Linux, Grubdoesn't consider CD-ROM drives to be hard drives, so if you have a CD on<filename>hdb</filename>, for example, and a second hard drive on<filename>hdc</filename>, that second hard drive would still be (hd1).</para><para>Using the above information, determine the appropriate designator foryour root partition. For the following example, we'll assume your rootpartition is <filename>hda4</filename>.</para><para>First, tell Grub where to search for its <filename>stage{1,2}</filename>files -- you can use Tab everywhere to make Grub show the alternatives:</para><screen><userinput>root (hd0,3)</userinput></screen><!-- HACK - Force some whitespace to appease tidy --><literallayout></literallayout><warning><para>The following command will overwrite your current boot loader.Don't run the command if this is not what you want. For example, you may beusing a third party boot manager to manage your MBR (Master Boot Record). Inthis scenario, it would probably make more sense to install Grub into the"boot sector" of the LFS partition, in which case the command would become:<userinput>setup (hd0,3)</userinput>.</para></warning><!-- HACK - Force some whitespace to appease tidy --><literallayout></literallayout><para>Then tell it to install itself into the MBR (Master Boot Record) of<filename>hda</filename>:</para><screen><userinput>setup (hd0)</userinput></screen><para>If all is well, Grub will have reported finding its files in<filename>/boot/grub</filename>. That's all there is to it:</para><screen><userinput>quit</userinput></screen><para>Now we need to create a "menu list" file, defining Grub's bootmenu:</para><screen><userinput>cat > /boot/grub/menu.lst << "EOF"</userinput># Begin /boot/grub/menu.lst# By default boot the first menu entry.default 0# Allow 30 seconds before booting the default.timeout 30# Use prettier colors.color green/black light-green/black# The first entry is for LFS.title LFS &milestone;root (hd0,3)kernel /boot/lfskernel root=/dev/hda4 ro<userinput>EOF</userinput></screen><para>You may want to add an entry for your host distribution.  It might looklike this:</para><screen><userinput>cat >> /boot/grub/menu.lst << "EOF"</userinput>title Red Hatroot (hd0,2)kernel /boot/kernel-2.4.20 root=/dev/hda3 roinitrd /boot/initrd-2.4.20<userinput>EOF</userinput></screen><para>Also, if you happen to dual-boot Windows, the following entry shouldallow booting it:</para><screen><userinput>cat >> /boot/grub/menu.lst << "EOF"</userinput>title Windowsrootnoverify (hd0,0)chainloader +1<userinput>EOF</userinput></screen><para>If <userinput>info grub</userinput> doesn't tell you all you want toknow, you can find more information regarding Grub on its website, located at:<ulink url="http://www.gnu.org/software/grub"/>.</para></sect1>
 |