Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104603852
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-30 08:57:00

   来源:赛迪网技术社区    作者:lynn

GRUB是一个多重开机管理工具,它可用来激活Linux、BSD、OS/2、BeOS与Windows95/98/NT等众多操作系统,GRUB是一个独立于操作系统之外的开机程序,并不像LILO是依靠Linux才能进行设定与维护,也提供了类似Bash的命令列模式,让使用者更方便地设定GRUB。
  
  取得与安装GRUB:
  
  GRUB的原始码压缩档可至GNU的ftp站台( ftp://alpha.gnu.org/gnu/GRUB/ )下载最新版本 ,下载回来后可存放在/usr/local/src/目录下并将其解压缩:
  
  cp grub.tar.gz /usr/local/src/
  
  tar zxvf grub.tar.gz
  
  在GRUB的目录下执行configure文件、make与make install,如下:
  
  ./configure
  
  make
  
  make install
  
  当make install完成后GRUB也已顺利安装完毕,并有三个指令文件也被安装至系统中:grub、grub-install与mbchk。而GRUB的相关档案通常被安装到/usr/local/share/grub的目录下。
  
  接下来先假设硬盘分割如下:
  
  hda1:Windows98 (hd0,0)
  
  hda2:Slackware Linux (hd0,1)
  
  hdb1:Mandrake Linux (hd1,0)
  
  注意的是GRUB认硬盘的方式跟Linux是不一样的,在Linux中第一颗IDE硬盘是hda(SCSI:sda)以此类推,而GRUB则将第一颗IDE硬盘视为hd0(SCSI:sd0)以此类推;在Linux中第一颗IDE硬盘的第一个分割区是hda1(SCSI:sda1)以此类推,而GRUB将第一颗IDE硬盘的第一个分割区表示为hd0,0(SCSI:sd0,0)以此类推。
  
  制作GRUB激活磁盘:
  
  制作GRUB激活磁盘其实不难,首先需要两个必备档案,分别是stage1与stage2,可以在GRUB的安装目录下的i386-pc目录中找到这两个档案,以及一片已格式化的干净磁盘,然后依照下面的制作步骤就可制作出GRUB的激活磁盘:
  
  cd /usr/local/share/grub/i386-pc/
  
  dd if=stage1 of=/dev/fd0 bs=512 count=1
  
  dd if=stage2 of=/dev/fd0 bs=512 seek=1
  
  制作好了GRUB的开机磁盘之后,就可以试着使用GRUB来进行多重操作系统的开机激活。
  
  利用GRUB开机磁盘激活系统:
  
  接着重新激活系统并设定BIOS由磁盘开机,然后就可以看到grub>的命令列正等待指令,这就是GRUB的命令列环境,表示GRUB已顺利地从激活磁盘加载并正常运作当中了。现在假设要激活上述的Slackware Linux的话,在GRUB提示符号下键入如下的指令,如此就会进入Slackware Linux系统:
  
  grub> root (hd0,1)
  
  grub> kernel /boot/vmlinuz root=/dev/hda2 ro
  
  grub> boot
  
  root指令会mount后面参数的硬盘分割区位置。当mount完成后kernel指令会加载其参数的系统核心,Linux的核心通常是在/boot目录下名为vmlinuz的档案。最后的两个参数都是要传给刚加载的核心,root=/dev/hda2是告诉核心根目录的位置是在/dev/hda2,并要求挂载成只读(ro)。
  最后执行boot指令以进行Slackware系统的开机激活。同理,位在hdb1上的Mandrake Linux也可以用类似的方式激活:
  
  grub> root (hd1,0)
  
  grub> kernel /boot/vmlinuz root=/dev/hdb1 ro
  
  grub> boot
  
  现在root指令改mount (hd1,0)的分割区,此分割区就是Mandrake Linux的根目录位置。然后kernel指令加载Mandrake的核心文件,告诉核心Mandrake系统的根目录是在/dev/hdb1,并要求挂载成只读。最后以boot指令进行系统的激活。
  
  以上的方式都可以顺利地激活Linux系统,但是对Windows系统可是不管用的,要激活在hda1上的Windows98的话,则要换些指令才行得通,请在GRUB命令列中依序键入下列指令就可以进入Windows98:
  
  grub> rootnoverify (hd0,0)
  
  grub> chainloader +1
  
  grub> makeactive
  
  grub> boot
  
  以rootnoverity指令让GRUB不要mount (hd0,0)的分割区,只要知道待会是要激活此分割区上的操作系统。chainloader +1的意思是指定此分割区上的第一个扇区来做激活。makeactive指令是要在此分割区上设定active的旗标,只要是Windows的操作系统都是要这么做的。最后以boor指令进行开机。
  
  使用硬盘上的GRUB开机激活:
  
  GRUB的开机磁盘固然方便好用,但制作GRUB开机磁盘的目的只在于系统救援之用,要能确实享用GRUB的强大功能,最好是可以用硬盘上的GRUB来进行开机,就像LILO一样安装到硬盘的MBR上。
  
  首先要在系统上建立GRUB专用的开机目录/boot/grub,如同制作GRUB的开机磁盘一样须要stage1文件和stage2檔,所以请把GRUB安装目录下的i386-pc目录中的stage1文件和stage2檔copy到刚刚建立的/boot/grub目录底下:
  
  mkdir /boot/grub
  
  cp /usr/local/share/grub/i386-pc/stage* /boot/grub
  
  完成之后键入指令GRUB指令进入GRUB命令列环境,在GRUB命令列环境里键入如下的指令:
  
  grub> root (hd0,2)
  
  grub> setup (hd0)
  
  grub> quit
  
  如此即可完成GRUB在/boot/grub中的开机设定,先用root指令mount目录/boot/grub所在的位置,其中的(hd0,2)就是指上面假设的Slackware系统,也就是说/boot/grub目录是在Slackware系统中所建立的。所若是要改成由Windows98来放置GRUB的stage档的话,就要在Windows98的系统上建立/boot/grub的目录,并将stage1檔和stage2檔存放在Windows98上的\boot\grub目录里,而root指令的参数也要改为Windows98所在的分割区,也就是上面假设的(hd0,0)。第二个指令setup是指要将GRUB安装在哪个位置来开机激活,如果是要安装到硬盘的MBR上的话只须加上硬盘的位置如(hd0),若是要安装到硬盘第一个分割区上的第一个扇区的话就要加上分割区的位置如(hd0,0)。
  
  除非是有特殊的情况,不然最好是装在硬盘的分割区上较安全。最后使用quit指令离开GRUB命令列环境。
  
  使用选项清单:
  
  现在虽然可以用GRUB来做多重开机的管理,但每次都要输入繁杂的指令也不方便,因此GRUB也提供了选项清单的方式,让每次开机时只须按上下键选择要开机的系统再按下Enter键即可进行开机而不必再输入任何的指令。GRUB在开机时会先寻找/boot/grub目录下的menu.lst档,找到的话GRUB就会依照menu.lst文件的内容显示一个选项清单的图形接口,让使用者选择要开机的操作系统。
  
  首先在/boot/grub目录下建立一个新档名为menu.lst,底下是menu.lst文件的设定范例:
  
  #/boot/grub/menu.lst
  
  timeout 30
  
  default 0 #Default Slackware Linux
  
  fallback 1 #Windows98
  
  fallback 2 #Mandrake Linux
  
  color light-green/brown blink-red/blue
  
  # For booting Slackware Linux
  
  title Slackware
  
  root (hd0,1)
  
  kernel /boot/vmlinuz root=/dev/hda2 ro
  
  #For booting Windows
  
  title Windows98
  
  rootnoverify (hd0,0)
  
  chainloader +1
  
  makeactive
  
  #For booting Mandrake Linux
  
  title Mandrake
  
  root (hd1,1)
  
  kernel /boot/vmlinuz root=/dev/hdb1 ro
  
  上面menu.lst文件的范例是针对之前所假设的硬盘分割区上配置的操作系统而设定的。menu.lst是以#符号当作注解的开头,GRUB会忽略所有以#符号启始的注解行。timeout指令是指GRUB激活之后的等待时间,以秒为单位,所以上面的范例就是等待30秒的意思。default指令就是当GRUB激活之后等待的时间超过指令timeout所设定的时间的话,就会指令default后面参数所指定的系统,参数0代表menu.lst文件中第一个被设定的操作系统,以上面的范例而言就是指Slackware Linux,因为它是最先被设定的,如果参数改为1的话就是激活Windows98,以此类推。fallback指令是指当GRUB激活指令default所指定的操作系统失败的话,便会激活指令fallback所指定的操作系统,以上面的范例而言,当Slackware激活失败的话GRUB就会激活fallback所指定的便是Windows98。指令color可以设定GRUB选项清单的前景/背景的颜色,有关GRUB可以指定的颜色可以查看GRUB的info文件。接下来的指令就是设定操作系统,指令title可以设定该操作系统的标题。
  
  设定好menu.lst文件后,将此设定文件存在/boot/grub目录底下即可,然后重新开机便会看到GRUB漂亮的选项清单,现在就可以试着激活不同的操作系统了。
  
  以上是GRUB的基本使用说明,当硬盘上有许多的操作系统时,使用GRUB是理所当然的,并且是正确的选择,就算硬盘上只有一两种操作系统也可以使用GRUB。当然GRUB的功能是很强大的,已足以取代传统的LILO,可以多阅读GRUB的info文件里面的说明。

阅读(149) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~