|
|
|
好用的多系统引导装入器---GRUB的优点
作者:佚名 来源:Linux 宝库 点击: 日期:2006-12-22 |
|
GRUB?是引导装入器(boot?loader)?--?它负责装入内核并引导?Linux?系统。GRUB?还可以引导其它操作系统,如?FreeBSD、NetBSD、OpenBSD、GNU?HURD?和?DOS,以及?Windows?95、98、NT?和?2000。尽管引导操作系统看上去是件平凡且琐碎的任务,但它实际上很重要。如果引导装入器不能很好地完成工作或者不具有弹性,那么就可能锁住系统,而无法引导计算机。另外,好的引导装入器可以给您灵活性,让您可以在计算机上安装多个操作系统,而不必处理不必要的麻烦。? GRUB?是一个很棒的boot?loader。它有许多功能,可以使引导过程变得非常可靠。例如,它可以直接从?FAT、minix、FFS、ext2?或?ReiserFS?分区读取?Linux?内核。这就意味着无论怎样它总能找到内核。另外,GRUB?有一个特殊的交互式控制台方式,可以让您手工装入内核并选择引导分区。这个功能是无价的:假设?GRUB?菜单配置不正确,但仍可以引导系统。哦,对了?--?GRUB?还有一个彩色引导菜单。? 更令人惊讶的是,这是一个自由软件!!!? ##################? #?GRUB菜单?#? ##################? 先来看一个例子,这是位于/boot/grub/目录下的menu.lst文件。? 此文件将在开机是产生一个菜单,包含有Debian?linux,Windows2000,RedHat?linux和?Mandrake?linux,共四个选择项。我一共分了8个区,一个fat16(0x6),一个ntfs(0x7),三个ext2fs分区(0x83),一个swap分区(0x82)。ntfs用来装win2000,三个ext2fs装了三个linux,c盘fat16分区没有装任何东西。? #例子由此开始? ######################? #?#? #?一个GRUB?configure?的例子?#? #?#? ######################? timeout?10? default?2? #?-->?Debian?linux?<--? title?Debian?linux? root?(hd0,2)? kernel?/boot/vmlinuz-2.2.18?root=/dev/hda3?ro? initrd?/boot/initrd-2.2.18.gz? #?-->?Debian?END?<--? #?-->?Windows?菜单选项?<--? title?Windows2000? root?(hd0,0)? chainloader?+1? #?-->?Winddows?结束?<--? #?-->?RedHat?linux?菜单选项?<--? title?RedHat?linux? root?(hd0,? chainloader?+1?#?在硬盘主引导分区装了lilo,所以也用了chainloader。? #?-->?RedHat?linux?结束?<--? #?-->?Mandrake?linux?菜单选项?<--? title?Mandrake?linux? root?(hd0,5)? kernel?/boot/vmlinuz-2.4.3-20mdk?root=/dev/hda6?ro? initrd?/boot/initrd-2.4.3-20mdk.img? #?-->?Mandrake?linux?结束?<--? #例子到此结束? 以符号井"#"开头的行表示被注释掉,没有任何意义。? timeout表示默认等待的时间,这儿是10秒钟。超过10秒,用户还没有作出选择的话,系统将自动选择默认的操作系统。? 默认的操作系统就是由default控制的。default后加一个数字n,表明是第n+1个。需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一个软驱是fd0,等等。所以,default?2?表示默认的操作系统在这儿是?Redhat?linux。? 接下来,正如你所想象的,title表示的是"Debian?linux"菜单项。root?(hd0,2)表示第一个硬盘,第三个分区。这儿的root?于linux的root分区及其不同,此root非彼root也!? 在?Linux?中,当谈到?"root"?文件系统时,通常是指主?Linux?分区。但是,GRUB?有它自己的?root?分区定义。GRUB?的?root?分区是保存?Linux?内核的分区。这可能是您的正式?root?文件系统,也可能不是。我们讨论的是?GRUB,需要指定?GRUB?的?root?分区。进入?root?分区时,GRUB?将把这个分区安装成只读型,这样就可以从该分区中装入?Linux?内核。GRUB?的一个很"酷"的功能是它可以读取本机的?FAT、FFS、minix、ext2?和?ReiserFS?分区。? 到目前为止,您可能会感到一点疑惑,因为?GRUB?所使用的硬盘/分区命名约定与?Linux?使用的命名约定不同。在?Linux?中,第一个硬盘的第五个分区称作?"hda5"。而?GRUB?把这个分区称作?"(hd0,4)"。GRUB?对硬盘和分区的编号都是从?0?开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。现在,可以发现如果要引导?Linux?硬盘?hda5,应输入?"root?(hd0,4)"。? 知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。? kernel?/boot/vmlinuz-2.2.18?root=/dev/hda3?ro说明/boot/vmlinuz-2.2.18?就是要载入的内核。后面的都是传递给内核的参数。root=/dev/hda3就是linux的硬盘分区表示法,ro是以readonly的意思。? initrd用来初始的linux?image,并设置相应的参数。? 是不是感觉很简单啊!再来看一看windows的定义段吧。? 这里,我添加了一项来引导?Windows2000。要完成此操作,GRUB?使用了"链式装入器"(chainloader)。链式装入器从分区?(hd0,0)?的引导记录中装入?win2000?自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因?--?它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的?DOS?或?Windows。? 我的RedHat?linux在硬盘主引导分区装了lilo,所以也用了chainloader。? GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把"color?light-gray/blue?"加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试"color?light-blue/red",惊喜吗??有趣吧!? ######################? #?GRUB的交互性?#? ######################? GRUB?最好的优点之一就是其强健的设计?--?在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装?GRUB。事实上,如有必要,只要更新?menu.lst?文件即可,一切将保持正常。? 只有少数情况下,才需要将?GRUB?引导装入器重新安装到引导记录。首先,如果更改?GRUB?root?分区的分区类型(例如,从?ext2?改成?ReiserFS),则需要重新安装。或者,如果更新?/boot/grub?中的?stage1?和?stage2?文件,由于它们来自更新版本的?GRUB,很有可能要重新安装引导装入器。其它情况下,可以不必理睬!? GRUB的最大的特点就是交互性特别强。在开机时,按一下"c",将进入GRUB?控制台。显示如下:? GRUB?version?0.5.96.1?(640K?lower?/?3072K?upper?memory)? [?Minimal?BASH-like?line?editing?is?supported.?For?the?first?word,?TAB? lists?possible?command?completions.?Anywhere?else?TAB?lists?the?possible? completions?of?a?device/filename.?]? grub>? 欢迎使用?GRUB?控制台。现在,再研究命令:? 我将通过GRUB?控制台绕过lilo来启动RedHat?linux,? grub>?root?(h? 现在,按一次?Tab?键。如果系统中有多个硬盘,GRUB?将显示可能完成的列表,从?"hd0"?开始。如果只有一个硬盘,GRUB?将插入?"hd0,"。如果有多个硬盘,继续进行,在?("hd2")?中输入名称并在名称后紧跟着输入逗号,但不要按?Enter?键。部分完成的?root?命令看起来如下:? grub>?root?(hd0,? 现在,继续操作,再按一次?Tab?键。GRUB?将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按?Tab?键时得到以下列表:? grub>?root?(hd0,?(tab,按tab一下键)? Possible?partitions?are:? Partition?num:?0,?Filesystem?type?is?fat,?partition?type?0x6? Partition?num:?2,?Filesystem?type?is?ext2fs,?partition?type?0x83? Partition?num:?4,?Filesystem?type?unknown,?partition?type?0x7? Partition?num:?5,?Filesystem?type?is?ext2fs,?partition?type?0x83? Partition?num:?6,?Filesystem?type?is?fat,?partition?type?0xb? Partition?num:?7,?Filesystem?type?is?fat,?partition?type?0xb? Partition?num:?8,?Filesystem?type?is?ext2fs,?partition?type?0x83? Partition?num:?9,?Filesystem?type?unknown,?partition?type?0x82? 如您所见,GRUB?的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解?GRUB?新奇的硬盘和分区命名语法,然后就可以继续操作了? grub>?root?(hd0,? 现在已安装了?root?文件系统,到装入内核的时候了? grub>?kernel?/boot/vmlinuz-2.4.2?root=/dev/hda5?ro? [Linux-bzImage,?setup=0x1200,?size=0xe1a30]? 您已经安装了?root?文件系统并装入了内核。现在,可以引导了。只要输入?"boot",Linux?引导过程就将开始。是不是很cool啊,GRUB的menu.lst更像一个linux下的脚本程序。? #####################? #?GRUB启动盘?#? #####################? 要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建?ext2?文件系统。然后,将其安装,并将一些?GRUB?文件复制到该文件系统,最后运行?"grub"?程序,它将负责设置软盘的引导扇区。准备好了吗?? 将一张空盘插入?1.44MB?软驱,输入:? #?mke2fs?/dev/fd0? 创建了?ext2?文件系统后,需要安装该文件系统:? #?mount?/dev/fd0?/
|
|
|
|
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【论坛讨论】 |
相关文章: |
|
|
文章评论:(条) |
|
|
|
|
责任编辑:一分 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。 |
|