| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | <?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" [  <!ENTITY % general-entities SYSTEM "../general.ent">  %general-entities;]><sect1 id="ch-bootable-grub"><title>Making the LFS System Bootable</title><?dbhtml filename="grub.html"?><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 lastthings to do is to ensure that the system can be properly booted. Theinstructions below apply only to computers of IA-32 architecture,meaning mainstream PCs. Information on <quote>boot loading</quote> forother architectures should be available in the usual resource-specificlocations for those architectures.</para><para>Boot loading can be a complex area, so a few cautionarywords are in order. Be familiar with the current boot loader and any otheroperating systems present on the hard drive(s) that need to bebootable. Make sure that an emergency boot disk is ready to<quote>rescue</quote> the computer if the computer becomesunusable (un-bootable).</para><para>Earlier, we compiled and installed the GRUB boot loader softwarein preparation for this step. The procedure involves writing somespecial GRUB files to specific locations on the hard drive. We highlyrecommend creating a GRUB boot floppy diskette as a backup. Insert ablank 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, run the<command>grub</command> shell:</para><screen><userinput>grub</userinput></screen><para>GRUB uses its own naming structure for drives and partitions inthe form of <emphasis>(hdn,m)</emphasis>, where <emphasis>n</emphasis>is the hard drive number and <emphasis>m</emphasis> is the partitionnumber, both starting from zero. For example, partition <filenameclass="partition">hda1</filename> is <emphasis>(hd0,0)</emphasis> toGRUB and <filename class="partition">hdb3</filename> is<emphasis>(hd1,2)</emphasis>. In contrast to Linux, GRUB does notconsider CD-ROM drives to be hard drives. For example, if using a CDon <filename class="partition">hdb</filename> and a second hard driveon <filename class="partition">hdc</filename>, that second hard drivewould still be <emphasis>(hd1)</emphasis>.</para><para>Using the above information, determine the appropriatedesignator for the root partition (or boot partition, if a separateone is used). For the following example, it is assumed that the root(or separate boot) partition is <filenameclass="partition">hda4</filename>.</para><para>Tell GRUB where to search for its<filename>stage{1,2}</filename> files. The Tab key can be usedeverywhere to make GRUB show the alternatives:</para><screen><userinput>root (hd0,3)</userinput></screen><warning><para>The following command will overwrite the current bootloader. Do not run the command if this is not desired, for example, ifusing a third party boot manager to manage the Master Boot Record(MBR). In this scenario, it would make more sense to installGRUB into the <quote>boot sector</quote> of the LFS partition. In thiscase, 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 went well, GRUB will have reported finding its files in<filename class="directory">/boot/grub</filename>. That's all there isto 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><screen><userinput>cat > /boot/grub/menu.lst << "EOF"<literal># 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 &version;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 looklike this:</para><screen><userinput>cat >> /boot/grub/menu.lst << "EOF"<literal>title Red Hatroot (hd0,2)kernel /boot/kernel-2.6.5 root=/dev/hda3initrd /boot/initrd-2.6.5</literal>EOF</userinput></screen><para>If dual-booting Windows, the following entry will allowbooting it:</para><screen><userinput>cat >> /boot/grub/menu.lst << "EOF"<literal>title Windowsrootnoverify (hd0,0)chainloader +1</literal>EOF</userinput></screen><para>If <command>info grub</command> does not provide all necessary material, additionalinformation 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 -v /etc/grub &&ln -sv /boot/grub/menu.lst /etc/grub</userinput></screen></sect1>
 |