GRUB是一个启动引导程序。它允许在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

 

GRUB具有以下优点:

     1、GRUB可动态配置

     2、GRUB支持多种可执行格式

          除了可适用于支持多启动的操作系统外,还通过链式启动功能支持诸如Windows之类的不支持多启动的操作系统。GRUB支持所有的Unix文件系统,也支持Windows适用的FAT和NTFS。

     3、GRUB可以通过GRUB提示符直接与用户进行交互

     4、在启动操作系统时用方向键进行选择

 

GRUB的启动过程:

         计算机启动后,BIOS将寻找第一个可启动的设备(通常为硬盘),而后从MBR中载入启动程序。MBR位于硬盘的前512字节内。

         GRUB的步骤1包含在MBR中。由于MBR的大小有限,所有步骤一所做的几乎只是装载GRUB的下一步骤(存放在硬盘的其它位置)。步骤1既可以直接装载GRUB2,也可以装载GRUB1.5:GRUB1.5包含在MBR后面的30KB中。GRUB1.5载入GRUB2。

          当GRUB2启动后,它将呈现一个界面来让用户选择启动的操作系统。通过这一步,用户可以手工指定启动参数。GRUB还可以设置超时后自动从某一个内核启动。

 

 安装GRUB:
 本实验操作系统为RHEL5.8,以新的一块磁盘/dev/sdb为例:

      先为grub的安装提供好环境,编辑并执行下面这个脚本就OK了:

      编辑脚本:

 
  
  1. //删除磁盘上的数据
  2. dd if=/dev/zero of=/dev/sdb bs=512 count=1 &> /dev/null  
  3.  
  4. //对磁盘分区
  5. echo '  
  6. n  
  7. p  
  8. 1  
  9.  
  10. +100M  
  11. n  
  12. p  
  13. 2  
  14.  
  15. +1G  
  16. n  
  17. p  
  18. 3  
  19.  
  20. +128M  
  21. t  
  22. 3  
  23. 82  
  24. w' | fdisk /dev/sdb &> /dev/null  
  25.  
  26. sleep 2  
  27. partprobe /dev/sdb &> /dev/null  
  28. sleep 5  
  29.  
  30. //格式化分区
  31. mkswap /dev/sdb3 &> /dev/null  
  32. mke2fs -j /dev/sdb1 &> /dev/null  
  33. mke2fs -j /dev/sdb2 &> /dev/null 
  34.  
  35. //挂载分区
  36. [ -d /mnt/boot ] || mkdir -p /mnt/boot
  37. [ -d /mnt/sysroot ] || mkdir -p /mnt/sysroot
  38. mount /dev/sdb1 /mnt/boot
  39. mount /dev/sdb2 /mnt/sysroot

   执行脚本:
 

 
  
  1. #bash -n mkdisk.sh  
  2. #chmod mkdisk.sh  
  3. #./mkdisk.sh 


1、在grub的命令行模式下安装:

在命令行中输入grub,即可进入grub的命令行模式
#grub


2、使用grub-install命令安装grub:
#grub-install   --root-directory=gurb的根目录  安装grub的磁盘