Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->入门与提高 ->正文

好用的多系统引导装入器---GRUB的优点

来源:Linuxdby.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  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,很有可能要重新安装引导装入器。其它情况下,可以不必理睬!?

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇: Ads3.0(nfs filesystem)安装手册   下一篇: 在Linux上安装Sybase的注意事项

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号