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 不把光盘驱动器作为硬盘驱动器。例如您的 hdb 是光盘驱动器,第二个硬盘驱动器是 hdc,对于 Grub 来说,第二个硬盘驱动器仍然是 (hd1)

用上面的信息为根分区(或是 boot 分区,如果您使用了单独的 boot 分区的话)确定正确的标志符,下面的例子里假定根分区(或单独的 boot 分区)是 hda4

告诉 Grub 在哪里搜索它的 stage{1,2}文件。您也可以在任何地方使用 Tab 键让 Grub 显示可选择的项:

root (hd0,3)
[Warning]

警告

下一个命令会覆盖当前的引导装载程序,如果不需要的话就不要运行这个命令,例如在用第三方引导管理器管理 MBR(Master Boot Record 主引导记录)的时候,这种情况下,把 Grub 安装到 LFS 分区的“引导扇区”可能更有意义,这时下一个命令就要变成 setup (hd0,3)

把 Grub 安装到 hda 的 MBR 里:

setup (hd0)

如果一切正常,Grub 会报告在 /boot/grub 里找到了它的文件。这里要做的事情就是这个,退出 grub shell :

quit

创建一个“menu list”文件来定义 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.1
root (hd0,3)
kernel /boot/lfskernel-2.6.11.12 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,下面的项可以引导 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 /etc/grub &&
ln -s /boot/grub/menu.lst /etc/grub