8.4. 使 LFS 系统能够启动

你全新的 LFS 系统差不多要完成了。最后要做的事之一是确保系统可以正常启动。下面的指令仅适用于 IA-32 架构的计算机,也就是主流的 PC 机。关于其他架构计算机 "boot loading"(引导装载)的信息可以在一般资源的具体位置里找到。

引导装载是一个很复杂的问题,因此接下来会有一些警告的话。要熟悉所需要能启动的当前引导装置和硬盘上其他操作系统。确保准备好能"拯救"计算机的应急启动盘以防计算机不能使用(不能启动)。

先前,我们编译和安装了 GRUB 引导装载程序,为此步凑做好了准备。这个程序包括了在硬盘的特定位置上写入一些特殊 GRUB 文件。我们强烈推荐你创建一张 GRUB 引导软盘作为备份,插入一张空白软盘并运行下面的命令:



dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1


dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1


取出软盘存放在安全的地方。现在,运行 grub shell:



grub


GRUB 使用它自己驱动器和分区命名的结构,形式是 (hdn,m),这里 n 是硬盘驱动号,m 是分区号,两个都是从零开始。例如,分区 hda1 是 GRUB 的 (hd0,0)hdb3(hd1,2)。与 Linux 不同的是,GRUB 不把 CD-ROM 光驱认为是硬盘驱动器。例如,假如使用 hdb 作为光盘驱动器,用 hdc 作为第二个硬盘驱动器, 那么第二个硬盘驱动器仍然是 (hd1)

用上面的信息确定 root 分区(或 boot 分区,假如单独使用了一个分区)合适的标志符。下面的例子假定 root 分区(或单独的 boot分区)是 hda4

告诉 GRUB 哪里搜索它的 stage{1,2} 文件。Tab 键在各处都可以用来让 GRUB 显示可选择项:



root (hd0,3)


[警告]

警告

下一个命令会覆盖当前的引导装载程序,如果不是特别需要就不要运行这个命令,例如,设想使用第三方启动管理器来管理主引导记录(MBR)。现在的情形是,安装 GRUB 到 LFS 分区的 “boot sector” 更有意义。在这种情况下,下一个指令将会是 setup (hd0,3)

告诉 GRUB 安装它自己到 hda 的 MBR:



setup (hd0)


如果一切顺利,GRUB 会报告在 /boot/grub 找到它的文件。就这么简单。退出 grub shell:



quit


创建一个"显示菜单"文件来定义 GRUB 的启动菜单:



cat > /boot/grub/menu.lst << "EOF"


# 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 6.4


root (hd0,3)


kernel /boot/lfskernel-2.6.27.4 root=/dev/hda4


EOF


如果有必要可以为宿主系统增加一个条目。看起来像这样:



cat >> /boot/grub/menu.lst << "EOF"


title Red Hat


root (hd0,2)


kernel /boot/kernel-2.6.5 root=/dev/hda3


initrd /boot/initrd-2.6.5


EOF


如果是 Windows 的双启动系统,下面的条目能够启动它:



cat >> /boot/grub/menu.lst << "EOF"


title Windows


rootnoverify (hd0,0)


chainloader +1


EOF


如果 info grub 不能提供所有必要的材料,获取更多的有关 GRUB 的信息可以访问它的网站:http://www.gnu.org/software/grub/

FHS 规定 GRUB 的 menu.lst 文件要链接到 /etc/grub/menu.lst。为了符合上述要求,可以使用下面的命令:



mkdir -v /etc/grub


ln -sv /boot/grub/menu.lst /etc/grub



Host by Unixetc