重新调查引导软盘
如果一切正常,就可以使用使用 grub 引导盘来引导当前 linux 发行版.如您所见,grub 是功能非常强大的引导装入器,它让您可以随意动态配置以进行引导.我将向您介绍如何创建 grub 引导菜单,这样就可以从菜单中进行 os 选择,而不是输入三行命令来引导 linux.但在动手之前,现在是深入了解 grub 幕后是如何工作的好时机.我将说明引导盘引导过程的工作原理,这样您就可以对 grub 有一个更好的评价与了解.
两阶段过程
要制作引导软盘,需要做两件事 -- 将文件复制到软盘的 ext2 文件系统的 /boot/grub 目录中,运行 grub 的安装程序.运行 grub 安装程序时,grub 将 "stage 1" 装入器安装到软盘的引导记录中.它还将 stage 1 装入器配置成从 ext2 文件系统直接装入 stage2.通常,grub 通过在包含 stage2 数据的软盘上创建一列块来完成此操作,这样 stage1 装入 stage2 时不必知道 ext2 文件系统的任何情况.
但是,大多数情况下,grub 在安装完 stage1 之后,会立即将 stage1.5 装入器安装到引导记录中.这个特殊的 stage1.5 允许无需使用原始块列表就能从 ext2 文件系统装入 stage2,却要更灵活的标准基于路径的方法.grub 理解文件系统结构的这一能力使 grub 比 lilo 更强壮.例如,如果正好在整理引导盘文件系统的碎片,stage1 就可以找到 stage2(归功于 ext2 stage1.5).而 lilo 就不能完成此项操作.因为 lilo 只能依赖于映射文件,每次更新内核或在磁盘上物理移动数据时,即使不更改路径,也需要重新运行它.
阶段 1.1.5 与 2
您也许会想知道:如果使用 fat 而不是 ext2 文件系统创建引导盘,grub 是否可以工作.是的,它可以工作,因为在输入 "setup (fd0)" 时,grub 会安装与 root 文件系统类型匹配的 stage1.5.即使没有没有空间可以安装 stage1.5,grub 仍可以通过追溯到更原始的块列表,来装入 stage2.
搜索与恢复
在继续讨论之前,先研究一个与引导软盘相关的实用提示.由于 grub 的交互式性质,它为恢复软盘生成了一个很好的引导装入器.但是,如果将好的内核复制到引导盘上,那它就更好了.那样,即使硬盘上的内核坏了或者被意外删除了,也可以追溯到引导盘内核,并启动与运行系统.要将备用内核复制到引导盘,执行以下操作:
# mount /dev/fd0 /mnt/floppy # cp /path/to/bzimage /mnt/floppy/boot # umount /dev/fd0
现在,软盘已包含备用内核,可以在 grub 中使用它来引导 linux 发行版,操作如下:
grub> root (fd0)
grub> kernel /boot/bzimage root=/dev/hda5 (将 /dev/hda5 更改成想要引导的分区名称)
grub> boot
硬盘引导
好,现在如何将 grub 安装到硬盘上?这个过程几乎与引导盘安装过程一样.首先,需要决定哪个硬盘分区将成为 root grub 分区.在这个分区上,创建 /boot/grub 目录,并将 stage1 与 stage2 文件从 /usr/share/grub/i386-pc 复制到该目录中.可以通过重新引导系统并使用引导盘,或者使用驻留版本的 grub 来执行后一步操作.在这两种情况下,启动 grub,并用 root 命令指定 root 分区.例如,如果将 stage1 与 stage2 文件复制到 hda5 的 /boot/grub 目录中,应输入 "root (hd0,4)".现在,只差一步.
接着,决定在哪里安装 grub -- 在硬盘的 mbr,或者如果与 grub 一起使用另一个"主"引导装入器,则安装在特定分区的引导记录中.如果安装到 mbr,则可以指定整个磁盘而不必指定分区,如下(对于 hda):
grub> setup (hd0)
如果要将 grub 安装到 /dev/hda5 的引导记录中,应输入:
grub> setup (hd0,4)
现在,已安装 grub.引导系统时,应该立即以 grub 的控制台方式结束(如果安装到 mbr).现在,应创建引导菜单,这样就不必在每次引导系统时都输入那些命令.
引导菜单
要创建菜单,只需在 /boot/grub 中创建一个简单的文本文件 menu.lst.如果将它放在正确位置,它将在 root grub 驱动器的 stage1 与 stage2 文件的旁边.这里是一个样本 menu.lst 文件,可以将它作为一个您的菜单的基础:
default 0
timeout 30
color white/blue blue/green
title=boot linux
root (hd0,4)
kernel /boot/bzimage root=/dev/hda5
title=boot linux using initrd
root (hd0,5)
kernel /boot/bzimage root=/dev/loop0 init=/initdisk.gz
initrd /initdisk.gz
title=windows nt
root (hd0,3)
chainloader +1
理解引导菜单
引导菜单很容易理解.前三行设置缺省菜单项(项目号 0,第一个).设置超时值(30 秒),并选择整个菜单的一些颜色.
接着的三行配置 "boot linux" 菜单项.
...要创建手工引导命令系列之外的菜单项,只要添加一行 "title=" 作为第一行,并从最后一行中除去 "boot" 命令(grub 会自动添加这个命令).
接着的四行显示了如何使用 grub 来引导 initrd(初始 root 磁盘),如果您愿意的话.现在,讨论最后三行......
我将在以下的屏面中说明 menu.lst 格式.
链式装入器
这里是示例 menu.lst 的最后三行......
title=windows nt
root (hd0,3)
chainloader +1
这里,我添加了一项来引导 windows nt.要完成此操作,grub 使用了"链式装入器".链式装入器从分区 (hd0,3) 的引导记录中装入 nt 自己的引导装入器,然后引导它.这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链.这种链式装入技术可以用于引导任何版本的 dos 或 windows.
阅读(1042) | 评论(0) | 转发(0) |