| 论坛注册| 加入收藏 | 设为首页| RSS
Google
您当前的位置:首页 > Linux频道 > Linux入门与提高 > 安装与配置

GNU GRUB启动管理器综述

时间:2007-11-14 17:18:35  来源:Linux联盟收集整理  作者:

什么是启动管理器? Ar5Linux联盟

启动管理器是存储在磁盘开始扇区中的一段程序,例如,硬盘的MBR(Master Ar5Linux联盟

Boot Record),在系统完成启动测试后,如果系统是从MBR启动,则BIOS(Basic Ar5Linux联盟

Input/Output System)将控制传送给MBR。然后存储在MBR中的这段程序将运行。这 Ar5Linux联盟

段程序被称为启动管理器。它的任务就是将控制传送给操作系统,完成启动过程。 Ar5Linux联盟

有许多可用的启动管理器,包括GNU GRUB (Grand Unified Boot Loader), Ar5Linux联盟

Bootmanager, LILO (LInux LOader), NTLDR (boot loader for Windows NT Ar5Linux联盟

systems),等等。下面我将讨论GNU GRUB以及它的使用方法。 Ar5Linux联盟

什么是GRUB? Ar5Linux联盟

GRUB是一款功能强大的启动管理器,它能加载多种操作系统,例如Windows, DOS, Ar5Linux联盟

 Linux, GNU Hurd, *BSD,等等。 Ar5Linux联盟

目前,LILO是最流行的启动管理器,被用来管理多个系统的引导。但是,如果使用 Ar5Linux联盟

了LILO,你必须记住,当你每次改变了它的配置或安装了新的内核,都要重新运行 Ar5Linux联盟

一下LILO。而且,LILO的灵活性也逊色于GRUB。 Ar5Linux联盟

GRUB使用灵活。它的最新版本,0.5.96.1,支持的文件系统包括ext2(Linux使用的 Ar5Linux联盟

一种文件系统),FFS(Fast File System used by *BSD UNIX),ReiserFS(一种为 Ar5Linux联盟

Linux开发的新型日志文件系统,以被融入2.4.1内核中,minix(一种为MINIX系统 Ar5Linux联盟

开发的老式文件系统,在早期的Linux中也使用)。使用GRUB,你甚至不用引导操作 Ar5Linux联盟

系统,就能“看”到这些文件系统。例如,假如你想查看一下存放在文本文件中的 Ar5Linux联盟

日期和时间,而又不想引导整个操作系统,你可以使用GRUB shell(提示“grub> Ar5Linux联盟

”),键入如下命令: Ar5Linux联盟

grub> cat (partition number)/home/god/filename.txt. Ar5Linux联盟

你可以看到与文件有关的所有信息,包括日期和时间。 Ar5Linux联盟

GRUB最好的应用是,你可以方便的引导不在列表中的任何分区上的任何内核。例如 Ar5Linux联盟

,如果你没有将新编译的内核加在启动列表中,而你又需要引导它,你可以将它先 Ar5Linux联盟

加在列表中,重新启动后使用。但是使用GRUB后,可以简单到只使用GRUB shell就 Ar5Linux联盟

可以加载所需要的内核映象。 Ar5Linux联盟

现在我将解释使用GRUB的三个基本步骤:编译、安装和配置。 Ar5Linux联盟

第一步:编译和安装GRUB Ar5Linux联盟

可以从ftp://alpha.gnu.org/pub/gnu/grub 下载GRUB的源代码。 Ar5Linux联盟

可以用命令“tar -xvzf filename.tar.gz”解开压缩文档。我得到的文件是 Ar5Linux联盟

grub-0.5.96.1.tar.gz,所以我这样做: Ar5Linux联盟

# tar -xvzf grub-0.5.96.1.tar.gz Ar5Linux联盟

这个命令将解开的文件和目录放在一个名为grub-0.5.96.1的目录中。现在运行如 Ar5Linux联盟

下命令: Ar5Linux联盟

[root@heaven ~/grub-0.5.96.1 ]# ./configure Ar5Linux联盟

如果你想定制GRUB,使之包含流行的文件系统和对网卡的支持,或者删除你不需要 Ar5Linux联盟

的网卡,可以运行如下命令: Ar5Linux联盟

[root@heaven ~/grub-0.5.96.1 ]# ./configure --help Ar5Linux联盟

这个命令将输出所有的命令选项。现在可以使用—enable和—disable选项增加或 Ar5Linux联盟

删除对特定网卡的支持。(注意:GRUB支持网络启动) Ar5Linux联盟

为了开始编译过程,键入如下命令: Ar5Linux联盟

[root@heaven ~/grub-0.5.96.1 ]# make Ar5Linux联盟

为了将所有文件进行正确的安装,键入命令: Ar5Linux联盟

[root@heaven ~/grub-0.5.96.1 ]# make install Ar5Linux联盟

至此你已经为安装GRUB真正做好了准备。 Ar5Linux联盟

将GRUB的相关文件保存在诸如/boot/grub的目录中不失为一个好主意。为此,按如 Ar5Linux联盟

下步骤: Ar5Linux联盟

1.默认状态下,GRUB所有文件将安装在/usr/share/grub/i386-pc或者 Ar5Linux联盟

/usr/local/share/grub/i386-pc目录下,这只取决于你的shell变量的设置。 Ar5Linux联盟

2.建立一个叫做/boot/grub的目录,然后拷贝下列文件到这个目录: Ar5Linux联盟

stage1 Ar5Linux联盟

stage2 Ar5Linux联盟

*_stage1_5 Ar5Linux联盟

稍候我将解释这些文件。同时也要把GRUB(可能在/usr/sbin或者/usr/local/sbin Ar5Linux联盟

目录下)拷贝到/boot/grub目录下。 Ar5Linux联盟

安装GRUB之前,你需要了解GRUB是怎样识别你的硬盘和分区信息的。首先,计数是 Ar5Linux联盟

从0开始的,而不是从1。在Linux中,你的连接到主控制器上的第一块硬盘被称为 Ar5Linux联盟

“had”。在GRUB中即为“hd0”。同样的,在GRUB中,你的第一个软驱是“fd0” Ar5Linux联盟

。这样,第一块硬盘上的第一、二、三个分区分别为“hd0,0”、“hd0,1”、“ Ar5Linux联盟

hd0,2”。注意:逗号是GRUB分区命名法的必要组成部分。 Ar5Linux联盟

为了将逗号隔开的部分整合在一起,需要使用括号。例如:(hd0,0) (hd0,1) Ar5Linux联盟

(hd0,2)等等。(hd0,0)是第一块硬盘上的第一个分区。类似的,(hd1,5)是第二快 Ar5Linux联盟

硬盘上的第六个分区,(hd2,0)是第三块硬盘上的第一个分区。 Ar5Linux联盟

message. This may take a long time. Ar5Linux联盟

第二步:安装GRUB Ar5Linux联盟

安装GRUB可以分为三个单独的步骤: Ar5Linux联盟

1.将“stage1”安装到MBR中。 Ar5Linux联盟

2.设置“stage2”的地址或者位置。 Ar5Linux联盟

3.设置一个菜单或选项,用来决定启动哪一个操作系统。 Ar5Linux联盟

使用下面的命令开始安装GRUB。 Ar5Linux联盟

[root@heaven /boot/grub ]# ./grub Ar5Linux联盟

这个命令根据BIOS的设置检测硬件设备,同时产生一些输出信息。这会花较长的时 Ar5Linux联盟

间。 Ar5Linux联盟

end_request: I/O error, dev 02:00 (floppy), sector 0 Ar5Linux联盟

GRUB version 0.5.96.1 (640K lower / 3072K upper memory) Ar5Linux联盟

注意:虽然它让人感到非常惊奇,GRUB确实有简洁的界面—就象支持行编辑一样。 Ar5Linux联盟

TAB列出可能的命令列表。其它情况下TAB会列出设备或文件名。看到这些你会很惊 Ar5Linux联盟

奇吧。类似下面的提示会出现: Ar5Linux联盟

grub> Ar5Linux联盟

现在,我假设你将Linux安装在了第一块硬盘的第一个扩展分区中或者/dev/hda5中 Ar5Linux联盟

。记住GRUB的命名规则,将上面的名字改为(hd0,4)。键入下面的命令: Ar5Linux联盟

grub> install (hd0,4)/boot/grub/stage1 (hd0) (hd0,4)/boot/grub/stage2 Ar5Linux联盟

p (hd0,4)/boot/grub/menu.conf Ar5Linux联盟

现在让我们分析一下这个命令的细节。 Ar5Linux联盟

install Ar5Linux联盟

一个内置的命令,它告诉GRUB将(hd0,4)/boot/grub/grub/stage1安装到hd0的主引 Ar5Linux联盟

导纪录中。 Ar5Linux联盟

(hd0,4)/boot/grub/stage2 Ar5Linux联盟

告诉GRUB stage2映象的位置。 Ar5Linux联盟

p with the the following options: (hd0,4)/boot/grub/menu.conf Ar5Linux联盟

为菜单的显示设置配置文件。稍候我将讨论这个配置文件的结构。 Ar5Linux联盟

下面是对这个命令用法的总结: Ar5Linux联盟

1.nstall Ar5Linux联盟

2.ource_of_stage1 Ar5Linux联盟

3.where_to_install Ar5Linux联盟

4.source_of_stage2 Ar5Linux联盟

5.p source_of_configuration_file Ar5Linux联盟

现在,你完成了硬盘上的基本安装工作。 Ar5Linux联盟

在软盘上的安装: Ar5Linux联盟

为了在软盘上安装GRUB,你要会用“dd”命令,并且了解它是如何工作的。为了做 Ar5Linux联盟

一张GRUB启动盘,你要将stage1和stage2文件放到软盘的开始扇区中。 Ar5Linux联盟

安装stage1到软盘上: Ar5Linux联盟

插入一张已格式化的软盘,键入命令: Ar5Linux联盟

[root@heaven /boot/grub ]# dd if=stage1 of=/dev/fd0 bs=512 count=1 Ar5Linux联盟

命令的详细说明如下: Ar5Linux联盟

if=input file Ar5Linux联盟

i.e., stage1 Ar5Linux联盟

of=output file Ar5Linux联盟

i.e., floppy drive (this may be different on your computer) Ar5Linux联盟

bs=bytes to read and write Ar5Linux联盟

Here it is 512 bytes. Ar5Linux联盟

count=how many times to perform this operation Ar5Linux联盟

每次拷贝“bs”数目的块到目标地址。 Ar5Linux联盟

安装stage2到软盘 Ar5Linux联盟

[root@heaven /boot/grub ]# dd if=stage2 of=/dev/fd0 bs=512 seek=1 Ar5Linux联盟

这里的步骤同stage1的相同,除了一个seek选项外。Seek选项将调过一个“bs”。 Ar5Linux联盟

例如,在上面的命令中bs的值是512,这样seek=1意味着将跳过软盘上前512个字节 Ar5Linux联盟

,从513字节开始。这将使得第一步操作不会覆盖stage1的前512字节。 Ar5Linux联盟

现在你完成了基本的软盘驱动器安装。 Ar5Linux联盟

第三步:配置GRUB Ar5Linux联盟

在这一节,我们来看一下如何在启动后进入各种操作系统,如何建立menu.conf文 Ar5Linux联盟

件。 Ar5Linux联盟

我们就从GRUB支持的启动过程开始。可以有两种方法来完成启动过程: Ar5Linux联盟

·A.通过调用内核本地启动 Ar5Linux联盟

·B.连续启动或者将控制转给另一个引导器 Ar5Linux联盟

A模式启动过程 Ar5Linux联盟

1.置跟设备或者告诉GRUB你的根文件系统。 Ar5Linux联盟

2.诉GRUB你的内核影像的位置,然后将参数传送给内核。 Ar5Linux联盟

3.重新启动,试一下。 Ar5Linux联盟

为了启动Linux,我将内核以bzImage的文件名放在/boot/目录中,跟文件系统是 Ar5Linux联盟

/dev/hda5,或者GRUB中的(hd0,4)。我的启动过程如下: Ar5Linux联盟

1.root (hd0,4) [This sets the root partition] Ar5Linux联盟

2.kernel /boot/bzImage root=/dev/hda5 [This sets the kernel] Ar5Linux联盟

B模式启动过程(这种模式假设当前的分区中安装了另一个启动管理器,例如LILO Ar5Linux联盟

或者NTLDR): Ar5Linux联盟

1.设置根分区但不要安装它 Ar5Linux联盟

2.激活这个分区 Ar5Linux联盟

3.配置需要启动的分区的第一个扇区 Ar5Linux联盟

4.重新启动,看一下效果。 Ar5Linux联盟

我们在试试启动安装在/dev/hda1或者(hd0,0)的widows。启动windows的过程如下 Ar5Linux联盟

: Ar5Linux联盟

1.rootnoverify (hd0,0) Ar5Linux联盟

2.makeactive Ar5Linux联盟

3.chainloader +1 [+1 sets the first sector of the current root Ar5Linux联盟

partition] Ar5Linux联盟

4.boot [transfers the control and quits GRUB] Ar5Linux联盟

menu.conf文件:它用于建立启动多操作系统时的菜单。建立menu.conf并不难。它 Ar5Linux联盟

使用简单的英语,就象你在这一节看到的那样。 Ar5Linux联盟

所有的菜单项目都以没有逗号分隔的“title TITLENAME”开头。你可以随意设置 Ar5Linux联盟

TITLENAME。 Ar5Linux联盟

设置Linux启动菜单步骤如下: Ar5Linux联盟

1.设置标题 Ar5Linux联盟

2.设置根分区 Ar5Linux联盟

3.设置内核的相应参数 Ar5Linux联盟

4.启动 Ar5Linux联盟

一个菜单例子: Ar5Linux联盟

title Debian GNU/Linux 2.2 kernel 2.4.1 Ar5Linux联盟

root (hd0,4) Ar5Linux联盟

kernel /boot/bzImage.2.4.1 Ar5Linux联盟

boot Ar5Linux联盟

#---- Ar5Linux联盟

前面有#的行是一个注释。 Ar5Linux联盟

建立启动Windows 或者 DOS的菜单: Ar5Linux联盟

title Windoze Ar5Linux联盟

rootnoverify (hd0,0) Ar5Linux联盟

makeactive Ar5Linux联盟

chainloader +1 Ar5Linux联盟

boot Ar5Linux联盟

#---- Ar5Linux联盟

如果你安装了两个版本的Windows—一个是你自己用的,另一个给你的家人用的— Ar5Linux联盟

这样第二个就无法安装,因为有提示说Windows已经安装了。 Ar5Linux联盟

有一种简单的方法可以安装两个版本的Windows,即在启动时隐藏一个分区而使用 Ar5Linux联盟

另一个。你甚至可以为你的分区设置密码保护,这样可以避免别人错误的加载你的 Ar5Linux联盟

分区。下面介绍如何完成两个Windows的安装,hda1和hda2 或者 (hd0,0) 和 Ar5Linux联盟

(hd0,1),用到的命令有lock, password, hide 和 unhide。 Ar5Linux联盟

建立windows 项目"My Entry": Ar5Linux联盟

title My Entry Ar5Linux联盟

lock Ar5Linux联盟

unhide (hd0,0) Ar5Linux联盟

hide (hd0,1) Ar5Linux联盟

rootnoverify (hd0,0) Ar5Linux联盟

makeactive Ar5Linux联盟

chainloader +1 Ar5Linux联盟

boot Ar5Linux联盟

#---- Ar5Linux联盟

为了更好的使用lock命令,你需要在配置文件开头使用password命令。Password命 Ar5Linux联盟

令的语法如下:password secret(“secret”就是密码)。任何时候你都可以通过 Ar5Linux联盟

按p键儿输入密码。 Ar5Linux联盟

建立Windows 项目"Family Entry" Ar5Linux联盟

title Family Entry Ar5Linux联盟

unhide (hd0,1) Ar5Linux联盟

hide (hd0,0) Ar5Linux联盟

rootnoverify (hd0,1) Ar5Linux联盟

makeactive Ar5Linux联盟

chainloader +1 Ar5Linux联盟

boot Ar5Linux联盟

---- Ar5Linux联盟

任何人都可以启动这个项目,而无须输入密码。 Ar5Linux联盟

这有一个使用password命令的有趣的窍门。为了在缺省菜单列表或配置文件中隐藏 Ar5Linux联盟

某些项目,你可以使用下面的命令加载一个定制的列表: Ar5Linux联盟

password secret Ar5Linux联盟

在这个命令中,“secret”是密码,而/boot/grub/secret-list.conf是密码文件 Ar5Linux联盟

。这样做之前,你要先进入到根目录或者给出全路径名。例如: Ar5Linux联盟

password secret (hd0,4)/boot/grub/secret-list.conf Ar5Linux联盟

还有一个更重要的命令是“map”。当你有两块硬盘,一个无法从第二块硬盘启动 Ar5Linux联盟

的操作系统,例如Windows,就可以使用map命令。例如,你能够将hd0映射为hd1, Ar5Linux联盟

将hd1映射为hd0。换句话说,你可以虚拟的交换两个硬盘而启动所需要的操作系统 Ar5Linux联盟

。命令形式如下: Ar5Linux联盟

grub> map (hd0) (hd1) Ar5Linux联盟

grub> map (hd1) (hd0) Ar5Linux联盟

启动FreeBSD: Ar5Linux联盟

title FreeBSD 4.0 Ar5Linux联盟

root (hd0,4,a) Ar5Linux联盟

kernel /boot/loader Ar5Linux联盟

boot Ar5Linux联盟

#---- Ar5Linux联盟

这里我们调用了FreeBSD的启动管理器。Root (hd0,4,a)由四个参数,是因为 Ar5Linux联盟

FreeBSD对一个单独分区进行了虚拟分割。我们称根分区为“a”。如果FreeBSD占 Ar5Linux联盟

据了整个第二块硬盘,这里就应该是root (hd0,a)。这样,就不是调用内核而是调 Ar5Linux联盟

用FreeBSD的启动管理器,它要比调用内核更易使用。 Ar5Linux联盟

(注意:我推荐在使用OpenBSD和GNU/Hurd之前,要先试一下链式加载。) Ar5Linux联盟

现在你已经完成了基本的GRUB编译、安装和配置。你对GRUB了解的越多,就越会发 Ar5Linux联盟

现GRUB是一种控制启动的易用和高效的方法。 Ar5Linux联盟

各种GRUB命令: Ar5Linux联盟

default xx Ar5Linux联盟

表明xx是缺省的启动项目 Ar5Linux联盟

timeout yy Ar5Linux联盟

表明在yy秒后缺省启动项目将启动 Ar5Linux联盟

fallback zz Ar5Linux联盟

在第一个启动项目失败后,过了timeout时间后,就将启动zz项目。 Ar5Linux联盟

color Ar5Linux联盟

这个命令将生成彩色菜单。它的语法是:color normal current_selection。这两 Ar5Linux联盟

个域都可以有两个值,形如foreground/background。例如: Ar5Linux联盟

color green/black or light-gray/blue Ar5Linux联盟

你也可以使用相关的数字。 Ar5Linux联盟

记住:所有的值都是从0开始,所以0是第一个。 Ar5Linux联盟

在我的下一篇文章中,我将会讲到对GNU/Hurd and OpenBSD的测试,也许还有一些 Ar5Linux联盟

网络启动的内容。但是你必须要等至少三个月或更多的时间,到是我会谈一下我的 Ar5Linux联盟

测试结果。等着看吧。 Ar5Linux联盟

来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
    无相关信息
栏目更新
栏目热门