引导加载程序之争:了解 LILO 和 GRUB(3)
- UID
- 1066743
|
引导加载程序之争:了解 LILO 和 GRUB(3)
初始引导过程与 LILO 类似,当 GRUB 初始加载时,从 MBR 加载第一阶段程序。加载后,它进入第一阶段和第二阶段引导加载程序之间的中间阶段(为了方便讨论,可称为第 1.5 阶段)。之所以存在第 1.5 阶段,是为了能够对 /boot/grub 中的 GRUB 配置文件进行常规的文件系统访问,而不是去访问磁盘块。然后进入引导加载程序的第二阶段,GRUB 加载 grub.conf 文件。
现在应该能够看到 GRUB GUI 了。对于熟悉 Windows 的用户来说,这看起来感觉比 LILO 更友好。不过,不要因为 GRUB 拥有 GUI 就认为它是一个不能处理数据的引导加载程序。可选项多得惊人。(见 中的提示。)
如果像我那样配置,那么现在应该能看到屏幕中有两个选项:引导到 Red Hat Linux 或者引导到 Windows XP。默认情况下,它将加载 Linux。选择任意一个的结果不言而喻。
现在来看一些好东西。
引导时的附加配置在 GRUB GUI 中,按下任何键都会停止超时的计时。然后按下 P 键,可以输入 GRUB 口令,并获得对 GRUB 交互式引导选项的完全访问权限。按下以下其中一个键,应该能够使用三个选项之中的一个:
- 要在引导之前编辑命令,请按下 E。这将让您能够为当前选中的 OS 编辑具体的选项。GRUB 只会显示出与那个 OS 的引导相关的选项,然后您可以恰当地进行编辑。当为 root 文件系统指定了错误的 HDD 时,这尤其有用。如果需要以单用户模式访问机器(不需要指定口令就能够让您获得 root 访问权限!),那么在 GRUB 主屏幕上选择 Linux OS。然后与前面一样,按下 E,并移到内核那一行(在我的示例中是 kernel /vmlinuz-2.4.18-14 ro root=LABEL=/)。然后在那一行最后添加 single,并按下 B 来使用修改过的 grub.conf 进行引导。在编辑模式下所做的任何修改都不会保存到 grub.conf 文件中。
- 要修改内核参数,请按下 A。如果您是一位经验丰富的 Linux 用户,可以根据需要调整内核参数。
- 要获得类似于 BASH 的命令行界面,请按下 C。这个小型的命令行界面允许您在系统中查找 GRUB 配置文件,加载另外的配置文件,编辑配置文件中的行,以及直接输入 GRUB 命令。如果配置的变化(比如删除了某个分区)让系统无法引导,那么可能会用到这个界面。如果需要将系统引导为单用户模式,或者要让运行级别为 3 而不是普通的运行级别,也可能会使用到它。
这些选项有很多用途,但超出了本文的范围。
可见,GRUB 真正开放了引导期间的可能性。不过,这可能是一件好坏参半的事情,因为 GRUB 也潜在地允许攻击者在 OS 加载之前访问系统。会被误用的主要开放领域是:
- 访问单用户模式。所有加载到单用户模式的人都会得到 root 访问权限,使得 Linux 可被随意滥用。
- 访问其他操作系统。任何配置为不需要口令的可引导操作系统,比如 DOS,都将是开放的。
- 访问 GRUB 编辑器。这允许用户获得修改 GRUB 配置的完全访问权限。
在 GRUB 配置中,设置安全性非常重要;设置口令,并使用 MD5 加密,可以保证整个系统的安全。
GRUB 的未来GRUB 将要被 GRUB2 所取代。原来的 GRUB 将要被重新命名为 GRUB Legacy;除了修复 bug 以外,不会再对它进行积极开发。GRUB2 将是对原来 GRUB 的完全重写。到目前为止,以下特性是变化的核心部分:
- 通过创建压缩的核心映像取代了第 1.5 阶段
- 支持核心映像的动态加载
- 争取让整个 GRUB 框架成为面向对象的
- 支持国际化,比如 非-ASCII 字符集
- 支持不同硬件体系结构和不同平台(不同于 Linux 的平台)
请参考 GRUB Web 站点(见下面的 部分)以了解最新的进展。
GRUB 与 LILO 的比较如本文开始处所述,所有引导加载程序都以类似的方式工作,满足共同的目的。不过,LILO 和 GRUB 之间有很多不同之处:
- LILO 没有交互式命令界面,而 GRUB 拥有。
- LILO 不支持网络引导,而 GRUB 支持。
- LILO 将关于可以引导的操作系统位置的信息物理上存储在 MBR 中。如果修改了 LILO 配置文件,必须将 LILO 第一阶段引导加载程序重写到 MBR。相对于 GRUB,这是一个更为危险的选择,因为错误配置的 MBR 可能会让系统无法引导。使用 GRUB,如果配置文件配置错误,则只是默认转到 GRUB 命令行界面。
结束语与所有软件相同,对某个用户来说是最好的选择,并不是对所有人来说都是最好的。至于这里所涉及的两个引导加载程序,我个人喜欢的是 GNU GRUB。它是一个非常好的全面的加载程序,组合了灵活的用户界面和大量的功能。但是,还有很多使用过并忠爱 LILO 的人仍然选择 LILO 作为引导加载程序。幸运的是,如果您刚刚开始接触 Linux 引导加载,使用哪个都不会有太大问题。
关于安全性,任何可以接触到引导磁盘/CD 的人,只需要使用没有设置安全性的 grub.conf 或 lilo.conf,就可以绕过本文中提及的所有安全措施。特别是使用 GRUB 时,因为能够引导到单用户模式,所以是一个严重的安全漏洞。解决此问题的一个简单方法是在机器的 BIOS 中禁止通过 CD 和软盘进行引导,并确保为 BIOS 设置了一个口令,使得其他人不能修改这些设置。 |
|
|
|
|
|