香港航空公司安全吗:GRUB入门教程

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 07:55:17

GRUB入门教程



目录

[隐藏]
  • 1 教程提示
    • 1.1 我应该学习这门教程吗?
  • 2 GRUB 基础
    • 2.1 什么是 GRUB?
    • 2.2 GRUB 很棒
    • 2.3 为什么使用 GRUB?
  • 3 安装 GRUB
    • 3.1 下载 GRUB
    • 3.2 安装步骤
    • 3.3 制作引导盘
      • 3.3.1 准备开始
      • 3.3.2 准备磁盘
      • 3.3.3 启动GRUB
      • 3.3.4 完成引导盘
  • 4 使用 GRUB
    • 4.1 准备
    • 4.2 启动 GRUB
    • 4.3 首次接触
    • 4.4 "root"
    • 4.5 GRUB 命名约定
  • 5 GRUB 内幕
    • 5.1 重新调查引导软盘
    • 5.2 两阶段过程
    • 5.3 阶段 1、1.5 和 2
    • 5.4 搜索和恢复
    • 5.5 硬盘引导
    • 5.6 引导菜单
    • 5.7 理解引导菜单
  • 6 总结
    • 6.1 GRUB 的弹性
    • 6.2 优秀的 GRUB 参考资料

[编辑] 教程提示

[编辑] 我应该学习这门教程吗?

本教程向您显示如何安装和使用 GRUB (Grand Unified Boot Loader)。就像 LILO 一样,GRUB 允许引导Linux 系统,它负责装入和引导内核。但与 LILO 不同,GRUB 的功能非常多,更易于使用,更可靠和灵活,而且非常小巧。

如果已经有些熟悉 LILO,并了解了磁盘分区的基本知识,那么您就掌握了学习本教程应具备的预备知识。通过学习本教程和安装 GRUB 之后,您将改进 Linux 系统的可靠性和可用性。

如果只是想尝试 GRUB,可以学习本教程的前半部分,并制作 GRUB 引导盘,然后练习使用它来引导系统。这样做以后,您将学会在紧急情况下如何使用 GRUB 来引导系统。

但是,如果想更深入地体验 GRUB,可以学完整个教程,它将为您演示如何将 GRUB 设置成缺省引导装入器。

[编辑] GRUB 基础

[编辑] 什么是 GRUB?

GRUB 是引导装入器 -- 它负责装入内核并引导 Linux 系统。GRUB 还可以引导其它操作系统,如FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT 和2000。尽管引导操作系统看上去是件平凡且琐碎的任务,但它实际上很重要。如果引导装入器不能很好地完成工作或者不具有弹性,那么就可能锁住系统,而无法引导计算机。另外,好的引导装入器可以给您灵活性,让您可以在计算机上安装多个操作系统,而不必处理不必要的麻烦。

[编辑] GRUB 很棒

GRUB 是一个很棒的引导装入器。它有许多功能,可以使引导过程变得非常可靠。例如,它可以直接从 FAT、minix、FFS、ext2 或ReiserFS 分区读取 Linux 内核。这就意味着无论怎样它总能找到内核。另外,GRUB有一个特殊的交互式控制台方式,可以让您手工装入内核并选择引导分区。这个功能是无价的:即使 GRUB 菜单配置不正确,你仍可以引导系统。哦,对了-- GRUB 还有一个彩色引导菜单。我们只是刚开始。

[编辑] 为什么使用 GRUB?

您也许会奇怪,为什么全世界都需要 GRUB -- 毕竟,Linux 世界在很长一段时间里一直使用 LILO引导装入器,而且它可以让上百万的 Linux 用户引导系统。是的,的确是这样,LILO 很有效。但是,LILO的维修率很高,而且很不灵活。与其花很多时间来描述 GRUB 的优点,还不如演示如何创建自己的 GRUB引导盘以及如何使用它来引导系统。然后,我将说明 GRUB 的一些很“酷”的技术细节,并指导您完成将 GRUB 安装到MBR(主引导记录)的过程,以使它成为缺省引导装入器。

如果您有点胆小,不必害怕。可以学习本教程的前半部分,创建 GRUB 引导盘,尝试使用 GRUB 而不必弄乱现有的引导装入器。或者,可以用其安全的“驻留”方式来熟悉 GRUB。那么,让我们立即开始吧。

[编辑] 安装 GRUB

[编辑] 下载 GRUB

要开始探究 GRUB 的精妙之处,首先需要下载、编译和安装它。但不要害怕 -- 根本不会修改您的引导记录 -- 我们只是要编译和安装 GRUB,就像其它程序一样,在此过程中我们可以创建 GRUB 引导盘。请不要担心;在修改引导过程之前,我会告诉您。

现在开始。访问 ftp://alpha.gnu.org/gnu/grub/ 并下载可以找到的最新版本的 GRUB tar 压缩包。我编写本教程时,最新的 tar 压缩包是 grub-0.5.96.1.tar.gz。下载了最新版本后,就可以安装了。

[编辑] 安装步骤

这里是从 tar 压缩包安装 GRUB 所需输入的命令。我将在 /tmp 中编译源文件,并将所有部分都安装到硬盘的 /usr 目录下。

cd /tmptar xzvf /path/to/archive/here/grub-0.5.96.1.tar.gzcd grub-0.5.96.1sudo ./configure --prefix=/usrsudo makesudo make install

现在已经安装了 GRUB,准备开始使用它。

[编辑] 制作引导盘

[编辑] 准备开始

要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建 ext2 文件系统。然后,将其安装,并将一些 GRUB 文件复制到该文件系统,最后运行 "grub" 程序,它将负责设置软盘的引导扇区。

[编辑] 准备磁盘

好,将一张空盘插入 1.44MB 软驱,输入:

sudo mke2fs /dev/fd0

创建了 ext2 文件系统后,需要安装该文件系统:

sudo mount /dev/fd0 /mnt/floppy

现在,需要创建一些目录,并将一些关键文件(原先安装 GRUB 时已安装了这些文件)复制到软盘:

sudo mkdir /mnt/floppy/bootsudo mkdir /mnt/floppy/boot/grubsudo cp /usr/share/grub/i386-pc/stage1 /mnt/floppy/boot/grubsudo cp /usr/share/grub/i386-pc/stage2 /mnt/floppy/boot/grub

只需要再有一个步骤,就能得到可用的引导盘。

[编辑] 启动GRUB

解压、编译和安装 GRUB 源 tar压缩包时,会将程序 grub 放到 /usr/sbin 中。该程序非常有趣并值得注意,因为它实际上是GRUB 引导装入器的半功能性版本。是的,尽管 Linux 已经启动并正在运行,您仍可以运行 GRUB 并执行某些任务,而且其界面与使用GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面完全相同。

这是有趣的设计策略,现在该使用驻留版本的 GRUB 来设置引导盘的引导扇区了。从 root 用户,输入 "grub"。GRUB 控制台将启动,显示如下:

GRUB version 0.5.96.1 (640K lower / 3072K upper memory)[ Minimal BASH-like line editing is supported. For the first word, TABlists possible command completions. Anywhere else TAB lists the possiblecompletions of a device/filename. ]grub>

欢迎使用 GRUB 控制台。现在,研究命令。

[编辑] 完成引导盘

在 grub> 提示符处,输入:

grub> root (fd0)grub> setup (fd0)grub> quit


现在,引导盘完成了。在继续下一步骤之前,在看一下刚才输入的命令。第一个 "root" 命令告诉 GRUB 到哪里查找辅助文件 stage1 和stage2。缺省情况下,GRUB 会在指定的分区或磁盘上的 /boot/grub目录中进行查找。在安装引导盘时,也就是几分钟以前,我们已将这些文件复制到正确的位置。接着,输入了 setup 命令,它告诉 GRUB将引导装入器安装到软盘的引导记录上;我们将在以后详细讨论这一过程。然后退出。现在,已经制作好引导盘,可以开始使用 GRUB 了。

[编辑] 使用 GRUB

[编辑] 准备

使用 GRUB 引导系统之前,需要知道一些信息。首先,应知道哪个分区保存了 Linux 内核,以及 root 文件系统的分区名称。然后,应查看现有 LILO 配置来寻找需要传递给内核的变量,如 "mem=128M"。一旦获取了这些信息,就可以开始了。

[编辑] 启动 GRUB

要启动 GRUB,需要关闭系统并退出引导盘。如果由于某些原因而不能立即关闭系统(比如上班时在部门的服务器上测试 GRUB),那么只要在提示中输入 "grub" 并继续操作。所有程序的运行情况都不会改变,只是您不能执行引导(因为 Linux 正在运行)。

[编辑] 首次接触

装入引导盘时,在屏幕顶部将出现一条消息,告诉您正在装入第一阶段和第二阶段。几秒后,将会出现一个熟悉的屏幕,显示如下:

GRUB version 0.5.96.1 (640K lower / 3072K upper memory)[ Minimal BASH-like line editing is supported. For the first word, TABlists possible command completions. Anywhere else TAB lists the possiblecompletions of a device/filename. ]grub>

可以看到,这些内容与在 Linux 中以驻留方式运行 GRUB 时出现的消息完全相同 -- 只不过现在我们是使用 GRUB 来引导 Linux。

[编辑] "root"

在 Linux 中,当谈到 "root" 文件系统时,通常是指主 Linux 分区。但是,GRUB 有它自己的 root分区定义。GRUB 的 root 分区是保存 Linux 内核的分区。这可能是您的正式 root 文件系统,也可能不是。例如,在 GentooLinux 中,有一个单独的小分区专用于保存 Linux内核与引导信息。大多数情况下,我们不安装这个分区,这样在系统意外崩溃或重新引导时,就不会把它弄乱。


这些,我们讨论的是 GRUB,需要指定 GRUB 的 root 分区。进入 root 分区时,GRUB将把这个分区安装成只读型,这样就可以从该分区中装入 Linux 内核。GRUB 的一个很“酷”的功能是它可以读取本机的FAT、FFS、minix、ext2 和 ReiserFS 分区,我们很快就会讨论这个功能。但现在,让我们输入 root 分区。在提示中输入root,但不要按 Enter 键:

grub> root (

现在,按一次 Tab 键。如果系统中有多个硬盘,GRUB 将显示可能完成的列表,从 "hd0" 开始。如果只有一个硬盘,GRUB 将插入"hd0,"。如果有多个硬盘,继续进行,在 ("hd2") 中输入名称并在名称后紧跟着输入逗号,但不要按 Enter 键。部分完成的 root命令看起来如下:

grub> root (hd0,

现在,继续操作,再按一次 Tab 键。GRUB 将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按 Tab 键时得到以下列表:

grub> root (hd0, (tab)Possible partitions are:Partition num: 0, Filesystem type is ext2fs, partition type 0x83Partition num: 1, Filesystem type unknown, partition type 0x82Partition num: 2, Filesystem type unknown, partition type 0x7Partition num: 4, Filesystem type is reiserfs, partition type 0x83Partition num: 5, Filesystem type is reiserfs, partition type 0x83

如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解 GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了。

[编辑] GRUB 命名约定

到目前为止,您可能会感到一点困惑,因为 GRUB 所使用的硬盘/分区命名约定与 Linux 使用的命名约定不同。在 Linux中,第一个硬盘的第五个分区称作 "hda5"。而 GRUB 把这个分区称作 "(hd0,4)"。GRUB 对硬盘和分区的编号都是从 0开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。现在,回来看一下 GRUB 提示,可以发现如果要引导 Linux 硬盘hda5,应输入 "root (hd0,4)"。如果已经明白了 GRUB 硬盘/分区命名,您也许要调整当前 root 命令行,以使它指向保存Linux 内核的分区。按以下格式输完命令,然后按 Enter 键:

grub> root (hd0,4) (hit enter)Filesystem type is reiserfs, partition type 0x83

[编辑] GRUB 内幕

[编辑] 重新调查引导软盘

如果一切正常,就可以使用使用 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的交互式性质,它为恢复软盘生成了一个很好的引导装入器。但是,如果将好的内核复制到引导盘上,那它就更好了。那样,即使硬盘上的内核坏了或者被意外删除了,也可以追溯到引导盘内核,并启动和运行系统。要将备用内核复制到引导盘,执行以下操作:

sudo mount /dev/fd0 /mnt/floppysudo cp /path/to/bzImage /mnt/floppy/bootsudo 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 0timeout 30color white/blue blue/greentitle=Boot Linuxroot (hd0,4)kernel /boot/bzImage root=/dev/hda5title=Boot Linux using initrdroot (hd0,5)kernel /boot/bzImage root=/dev/loop0 init=/initdisk.gzinitrd /initdisk.gztitle=Windows NTroot (hd0,3)chainloader +1

我将在以下的屏面中说明 menu.lst 格式。

[编辑] 理解引导菜单

引导菜单很容易理解。前三行设置缺省菜单项(项目号 0,第一个)、设置超时值(30 秒),并选择整个菜单的一些颜色。

接着的三行配置 "Boot Linux" 菜单项。要创建手工引导命令系列之外的菜单项,只要添加一行 "title=" 作为第一行,并从最后一行中除去 "boot" 命令(GRUB 会自动添加这个命令)。

接着的四行显示了如何使用 GRUB 来引导 initrd(初始 root 磁盘),如果您愿意的话。现在,讨论最后三行…… 链式装入器(chainloader)

这里是示例 menu.lst 的最后三行……

title=Windows NTroot (hd0,3)chainloader +1

这里,我添加了一项来引导 Windows NT。要完成此操作,GRUB 使用了“链式装入器”。链式装入器从分区 (hd0,3)的引导记录中装入 NT 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 --它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。

[编辑] 总结

[编辑] GRUB 的弹性

GRUB 最好的优点之一就是其强健的设计 -- 在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装 GRUB。事实上,如有必要,只要更新 menu.lst 文件即可,一切将保持正常。

只有少数情况下,才需要将 GRUB 引导装入器重新安装到引导记录。首先,如果更改 GRUB root 分区的分区类型(例如,从ext2 改成 ReiserFS),则需要重新安装。或者,如果更新 /boot/grub 中的 stage1 和 stage2文件,由于它们来自更新版本的 GRUB,很有可能要重新安装引导装入器。其它情况下,可以不必理睬!

[编辑] 优秀的 GRUB 参考资料

我们在这里只是介绍了 GRUB 的一部分。例如,可以使用 GRUB 来执行网络引导,引导 BSD 文件系统,或更多操作。另外,GRUB有许多配置和安全性命令也很有用。如需所有 GRUB 功能的完整描述,请阅读 GRUB 出色的 GNU 文档。只要在 bash 提示中输入"info grub" 就可以阅读该文档。

希望您喜欢本教程,喜欢 GRUB (Grand Unified Boot Loader) 的强大功能和灵活性!