Grub相关安装配置及使用实例汇总讲析

 (一)安装linux时安装grub
  
  安装redhat linux时会提示安装引导程序,如果选择grub为引导程序,建议把grub安装到硬盘的引导扇区MBR.grub 还可以引导其它操作系统,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT、2000、XP。
  
  (二)grub的配置
  
  一旦选择了grub为引导程序,下面我们来了解一下它的配置。/boot/grub/grub.conf是grub产生一个引导选择菜单以及设置一些选项。下面是我的grub.conf:
  
  #==========例子开始==========
  
  # grub.conf generated by anaconda
  #
  # Note that you do not have to rerun grub
  after making changes to this file
  # NOTICE: You have a /boot partition. This means that
  # all kernel and initrd paths are relative to /boot/, eg.
  # root (hd0,6)
  # kernel /vmlinuz-version ro root=/dev/hda10
  # initrd /initrd-version.img
  #boot=/dev/hda
  default=0
  timeout=10
  splashimage=(hd0,6)/grub/splash.xpm.gz
  # --> Redhat Linux 8.0 <--
  title Red Hat Linux (2.4.18-14)
  root (hd0,6)
  kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
  initrd /initrd-2.4.18-14.img
  # --> Microsoft Windows XP <--
  title Microsoft Windows XP
  rootnoverify (hd0,0)
  chainloader +1
  
  #===========例子结束==========
  
  配置选项解释:
  
  以"#"开头的是注释行。我这里有两个操作系统,分别是Red Hat Linux和Microsoft Windows XP。其中,timeout标识默认等待时间,我这设置为10秒,超过10秒用户还没作出选择的话,将自动选择默认的操作系统(我这里默认的是Redhat linux 8.0)
  
  默认的操作系统是由default一项来控制的,default后的数字表明第几个是默认的,这里0表示第一个,1表示第二个。
  
  所以如果你想修改默认的操作系统,就修改default后的数字。title一项是设置操作系统的名称,grub不支持中文(有点遗憾)。splashimage一项指定grub界面的背景图片,有兴趣的朋友可以修改grub的背景。
  
  root (hd0,6)标识从第一个硬盘,第7个分区来启动搜索引导内核。注意这儿的root与linux的root分区不同,此root非彼root也!grub的硬盘标识方法与linux的有点不同。在linux中第一个主分区为hda1,第二个主分区为hda1,第一个逻辑分区为hda5,而在grub中是以(hdx,y)来标识的,如第一个主分区为(hd0,0)第一个逻辑分区为(hd0,1)依此类推。
  
  所以这儿root后面的是你的/boot所在分区标识。知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是ke
  
  rnel的工作。kernel /vmlinuz-2.2.18-14 ro
  
  root=LABEL=/。说明/boot/vmlinuz-2.2.18-14就是要载入的内核。后面的都是传递给内核的参数。
  
  ro是以readonly的意思。注意我这里内核前面的路径是"/",因为我的boot单独分了一个区,如果你没有为boot单独分区,那么内核前面的路径就是"/boot"。initrd用来初始的linux image,并设置相应的参数。
  
  再来看一看windows的定义段吧。这里,我添加了一项来引导 WindowsXP。要完成此操作,GRUB使用了"链式装入器"(chainloader)。链式装入器从分区 (hd0,0) 的引导记录中装入 winXP 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链。
  
  这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。如果你在计算机中装有win98,winme,win2k,winxp的话,chainloader会把引导权交与win的NTLoader来引导。
  
  (三)Grub启动盘的制作
  
  要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建 ext2 文件系统。然后,将其安装,并将一些 GRUB 文件复制到该文件系统,最后运行 "grub" 程序,它将负责设置软盘的引导扇区。
  
  将一张空盘插入 1.44MB 软驱,输入:
  
  # mke2fs /dev/fd0
  创建了 ext2 文件系统后,需要安装该文件系统:
  
  # mount /dev/fd0 /mnt/floppy
  现在,需要创建一些目录,并将一些关键文件
  (原先安装 GRUB 时已安装了这些文件)复制到软盘:
  
  # mkdir /mnt/floppy/boot
  # mkdir /mnt/floppy/boot/grub
  # cp /boot/grub/stage1 /mnt/floppy/boot/grub
  # cp /boot/grub/stage2 /mnt/floppy/boot/grub
  
  再有一个步骤,就能得到可用的引导盘。
  
  在linux bash中,从root用户运行"grub",该程序非常有趣并值得注意,因为它实际上是GRUB引导装入器的半功能性版本。尽管 Linux 已经启动并正在运行,您仍可以运行 GRUB 并执行某些任务,而且其界面与使用 GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面(即GRUB控制台)完全相同。在 grub> 提示符处,输入:
  
  grub> root (fd0)
  grub> setup (fd0)
  grub> quit
  
  现在,引导盘完成了。
  
  (四)恢复被windows破坏的grub
  
  如果你用grub来引导linux和windows,当windows出毛病重新安装后,会破坏MBR中的grub,这时需要恢复grub。
  
  1.把linux安装光盘的第一张放到光驱,然后重新启动机器,在BOIS中把系统用光驱来引导。
  
  2.等安装界面出来后,按F4键,也就是linux rescue模式。
  
  3.一系列键盘以及几项简单的配制,过后就“继续”了这个过程,这里不说了,比较简单。
  
  4.然后会出现这样的提示符:
  
  sh#
  
  5.我们就可以操作GRUB了。输入grub:
  
  sh#grub
  
  会出现这样的提示符:
  
  grub>
  
  我们就可以在这样的字符后面,输入:
  
  grub>root (hdX,Y)
  grub>setup (hd0)
  
  如果成功会有一个successful......
  
  这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上,那X就是1了;Y,就是装有linux系统所在的根分区。 setup (hd0)就是把GRUB写到硬盘的MBR上。
  
  (五)用NTLoader来引导linux
  
  如果你在安装linux时没有选择安装grub,不必着急,现在我们来看看如何在安装linux后安装grub。并用windows的NTLoader来引导linux。
  
  1. 安装grub
  
  我用的grub是Redhat8.0带的grub安装包: grub-0.92-7.rpm
  
  安装: rpm -ivh grub-0.92-7.rpm
  
  其他安装方式也一样,只要你安装上grub就行了。RH8缺省用的grub, 1、2步骤可以省了。
  
  2. 建立grub的环境
  
  cp /usr/share/grub/i386-pc/* /boot/grub
  
  3. 生成grub的配置文件/boot/grub/menu.conf
  
  按照上面所讲的grub.conf来生成一个配置文件。
  
  注意了, 这里我的linux在/dev/hda4,所以menu.conf那些分区位置为(hd0,3),
  
  你的可能不一样了,不能完全照着"画瓢"噢! 下面第3步install的中的分区位置也应该和你的系统一致。
  
  安装grub至Linux分区boot
  
  将grub的stage1安装到/dev/hda4的boot扇区(hd0,3)。 过程如下:
  
  /sbin/grub (运行grub)
  grub> install (hd0,3)/boot/grub/stage1
  d (hd0,3) (hd0,3)/boot/grub/stage2
  p (hd0,3)/boot/grub/menu.conf
  
  (注意,上面"grub>"为grub的提示符,其后内容写在一行上。)
  
  4. 取得grub的boot信息
  
  过程如下:
  
  dd if=/dev/hda4 of=/grub.lnx
  bs=512 count=1
  
  这样得到grub的引导信息,只要用NT Loader来加载它就行了。
  
  5. 将上面得到的grub.lnx弄到Windows的C盘根目录下,可以先把grub.lnx弄得软盘上,然后启动windows,拷贝到C:/; 情况允许也可以直接在Linux下拷贝到C:了。 我的C盘(即设备/dev/hda1)为FAT32, 可以直接从Linux下弄过去了。 如下:
  
  mount -t vfat /dev/hda1 /mnt/c
  cp /grub.lnx /mnt/c
  umount /mnt/c
  
  6. 修改NT Loader的boot.ini
  
  在其中加入一行: C:/grub.lnx="Redhat Linux - GRUB"
  
  加入后boot.ini的内容如下:
  
  [boot loader]
  timeout=15
  default=C:/boot.lnx
  [operating systems]
  multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional"
  /fastdetect
  
  [VGA mode]" /basevideo /sos
  C:/grub.lnx="Redhat Linux - GRUB"
  
  可以用NT Loader加载Linux了, 其实上面过程基本上和用NT Loader加载LILO一样。其基本思想就是用NT Loader来加载LILO或grub的引导区(grub.lnx), 其中的关键就是LILO或grub的引导区的获取。
  
  (六)活用grub的交互功能
  
  grub具有强大的交互功能。学会了将会使你受益非浅!
  
  1.grub没有显示菜单怎么办?
  
  当开机后进入grub界面但没了菜单,只剩下一个grub>提示符,怎么启动呢?别急,看下面:
  
  grub>cat (hd0,6)/boot/grub/grub.conf
  (为了看参数)
  grub>root (hd0,6)
  grub>kernel (hd0,6)
  /vmlinuz-2.4.18

你可能感兴趣的:(Grub相关安装配置及使用实例汇总讲析)