首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

引导加载程序之争:了解 LILO 和 GRUB(2)

引导加载程序之争:了解 LILO 和 GRUB(2)

初始引导过程当 LILO 初始引导时,它会按次序打印出每个字母 —— L-I-L-O。如果所有字母都显示出来,那么第一阶段引导就成功了。缺少任何内容都表示出现了问题:
  • L:第一阶段引导加载程序已经被加载。如果 LILO 停止在这里,那么是在引导第二阶段引导加载程序时出现了问题。这通常会伴随有一个错误代码。在这个阶段的常见问题是介质问题,或者在 lilo.conf 文件中指定了不正确的磁盘参数。
  • LI:第二阶段引导加载程序已经被加载。LILO 在此处停止表示第二阶段引导加载程序不能被执行。同样,这可能是因为出现了与只显示 L 类似的问题:正在加载,或者因 boot.b 文件被破坏、移动或删除而不能加载。
  • LIL:第二阶段引导加载程序正在被执行。此时,可能会再次出现介质问题,或者映射文件(如 lilo.conf 文件中所指定的)在寻找描述符表时可能会出现问题。
  • LIL?:加载到与上面相同的阶段。这通常意味着加载第二阶段引导加载程序使用了错误的地址,最常见的原因是 boot.b 所在的位置与 lilo.conf 文件所指定的不同。
  • LIL-:加载到与上面相同的阶段。加载描述符表时出现问题,最常见的原因是描述符表错误。
  • LILO:LILO 成功被加载,没有出现任何错误。
引导时的附加配置LILO 被成功加载后,将看到 LILO 提示符。还是使用前面的示例 lilo.conf 文件,此时将有两个选择,可能对 LILO 新手来说并不直观。首先,可以让 LILO 超时(10 秒后),这将引导 /dev/hdb3,即 Linux 分区。另外,可以按下 TAB 键,这将列出将要引导的操作系统选项。在我们的示例 lilo.conf 中,将得到的选项是 “Linux” 和 “Windows”。输入哪一个,就会引导到哪个 OS。指定加载 Linux 选项,会提示输入一个口令,在本例中是 linux。如果输入的口令有误,则会返回 LILO 提示符。
不幸的是,LILO 不支持引导期间的交互式配置,所以,只能在 lilo.conf 中或者运行 /sbin/lilo 时指定选项。
关于第一次尝试 LILO 的最后一点建议是:我发现使用软盘引导磁盘比使用硬盘实现 LILO 配置更为安全。为此,必须在 lilo.conf 文件中使用 boot=/dev/fd0 替换 boot=/dev/hda。那样,如果弄乱了 lilo.conf 文件中的任何配置,都可以取出引导磁盘并像先前一样引导到 Linux。当使用软盘进行引导一切正常以后,可以将 lilo.conf 修改回 boot=/dev/hda,然后最后一次运行 /sbin/lilo 来上传修改。
GNU GRUB近来,GRand Unified Boot loader(通常称为 GRUB)似乎要取代 LILO 在引导加载程序方面的统治地位。GNU GRUB 基于原来的 GRUB 程序(最初由 Erich Stefan Boleyn 所创建),正在由自由软件基金会(Free Software Foundation)进行积极开发。
使用 GRUB 作为引导加载程序与使用 LILO 相同,使用 GRUB 作为活动的引导加载程序所需要的步骤,取决于是安装全新的 OS 还是已经安装了 Linux 并计划转移到 GRUB。如果是进行全新安装,那么可以直接跳转到  那一节。如果已经安装了某个 Linux 发行版,那么通常可以选择安装并配置 GRUB(并可以将机器引导到新的 Linux 安装)。
计划迁移到 GRUB 的当前 Linux 用户需要去获得最新版本的 GRUB(见 )。同样,与 LILO 相同,在做任何其他事情之前,需要在手边准备一张 Linux 引导盘。使用交互模式(后面将描述)则不需要这张磁盘,不过最好拥有一张以备急需时使用。将 LILO 安装到系统中之后,让它接管 MBR 非常简单。以 root 用户身份输入:
# /boot/grub/grub
这样将加载一个类似于 BASH 的命令提示符,可以在这里使用 GRUB 命令:
grub> install (hd1,3)/boot/grub/stage1 (hd0)         (hd1,3)/boot/grub/stage2 p (hd1,3)/boot/grub/menu.conf
这个命令使用了 GRUB 安装命令,需要为它给出第一阶段映像的位置以及 MBR 的位置(install  (hd1,3)/boot/grub/stage1 (hd1))。也要给出第二阶段映像的位置((hd1,3)/boot/grub/stage2)。最后,可选项 p  (hd1,3)/boot/grub/menu.conf 告诉 GRUB GUI 菜单配置文件的位置。
在前面的示例中,hd1 是我的 Linux Disk,hd0 是我的 Windows 磁盘。这样将使用当前 GRUB 默认值,并抹去 MBR 中当前所有内容(请阅读 ,以确保能够按预期引导起来)。
配置 GRUBGRUB 的配置都是通过位于 /boot/grub/grub.conf 的一个配置文件来完成的。清单 2 给出了一个示例配置,使用的是我的家用机器,支持 Linux 和 Windows 机器的双重引导:
清单 2. grub.conf 示例文件
1
2
3
4
5
6
7
8
9
10
11
12
13
default=0
timeout=10
splashimage=(hd1,3)/grub/splash.xpm.gz
password --md5 $1$opeVt0$Y.br.18LyAasRsGdSKLYlp1
title Red Hat Linux
    password --md5 $1$0peVt0$Y.br.18LyAasRsGdSKLYlp1
    root (hd1,3)
    kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
    initrd /initrd-2.4.18-14.img
title Windows XP
    password --md5 $1$0peVt0$Y.br.18LyAasRsGdSKLYlp1
    rootnoverify (hd0,0)
    chainloader +1




清单 2 中的选项:
  • default= 选项通知 GRUB 在超时之后默认使用哪个映像进行引导。这一选项与 grub.conf 文件中的某个映像相关联。0 表示指定了第一个,1 表示指定了第二个,依次类推。如果没有在配置文件指定此选项,那么它将引导文件中指定的第一个映像。
  • timeout= 是在自动引导默认 OS(在本例中是 Red Hat Linux)之前引导提示会等待多少秒。
  • splashimage= 是用作 GRUB GUI 背景的图片所在的位置。
  • password 选项指定了使用 MD5 加密的口令,用于访问 GRUB 的交互式引导选项。注意,这不会阻止用户选择引导已经定义的 OS;需要为 每一个 -title 设置它。为了生成一个 md5 口令,请运行 GRUB 所附带的 grub-md5-crypt 工具(以 root 身份)。它将提示输入一个希望加密的口令。然后输出使用 MD5 加密的口令。将这个口令拷贝到 grub.conf 中 password -md5 之后,但是要在同一行上。通常这个口令可以设置为 root 口令,因为无论如何也只有 root 才可以读取 grub.conf 文件。
  • title 标明了在运行期间能够从用户界面引导的具体 OS。与 LILO 不同,在这个名称中可以有空格。
  • password的设置方式与前面的 password 相同。如果计划与其他用户共享此机器,那么不要将这个口令设置为 root 口令。
  • root 告诉 GRUB OS 文件系统的实际位置。可见,GRUB 引用介质的方式与 LILO 不同。在 LILO 示例中,/dev/hdb3 是第二块硬盘中的第三个分区。Grub 将此硬盘引用为(hd1,3),即第二块硬盘的第三个分区(disk 0 是第一块硬盘)。
  • kernel:vmlinuz-X.X.XX-XX 是 root 目录中默认引导映像的名称。
  • initrd:initrd-X.X.XX-XX.img 是 root 目录中默认 initrd 映像的名称。
  • title 与所有其他 title 选项相同。
  • password:见其他口令选项。
  • rootnoverify 告诉 GRUB 不要尝试去改变 OS 的 root。这样,当文件系统不被 GRUB 所支持时,不会出现引导错误。
  • chainloader +1 告诉 GRUB 使用一个链式加载程序来加载这个 OS,加载 Windows 时需要这个选项。
在 grub.conf 文件中可以使用很多其他参数,不过清单 2 中的参数就足以让机器可用了。要获得关于 grub.conf 的这些以及其他参数的进一步资料,请参考手册页(man grub.conf)。
与 LILO 的配置文件不同,grub.conf 会在引导时被读取,当被修改时不必去更新 MBR。
返回列表