Linux引导程序(Bootloader)中,主要有两种多重操作系统引导管理器,这里我们着重写写GRUB

LILOLinux Loader,是个很悠久的引导程序,但是有个缺陷,不适合引导大硬盘。

GRUBGrand Unified Bootloader,可以引导多种操作系统,不仅可以引导Linux,还可以引导windows操作系统,甚至还能引导freeBSDUNIX等操作系统。它的功能非常的强大,支持的操作系统的内核加载的功能也非常的多,而且GRUB还支持命令行编辑,还可以在GRUB界面中编辑启动参数,还支持界面背景。另外,在redhat 5系列的GRUB版本默认支持的最大硬盘好像是2T,再大就应该装更新的GRUB了。

在这里我们应该知道引导文件是写在MBRMaster Boot Record,主引导记录)中的,MBR是位于磁盘的0柱面,0磁头,1扇区的。它总共大小为512字节,其中前446个字节是用来记录引导程序(Bootloader)的,中间64个字节是记录分区表信息的,最后两个字节是MBR的有效标志。但是,有没有想过,我们的GRUB功能这么强大,446个字节可以记录下么?那肯定是不行了,但是GRUB采用了一种巧妙的手段,采用两段式引导。

 第一阶段我们称为stage1:它是写入到MBR中的,它没啥用,就是用来启动第二阶段的;

第二阶段我们成为stage2:它通常是放在/boot/grub/目录中的一些执行程序;

其实在它们两个阶段中还有一个阶段,我们成为stage1.5:它是用来识别磁盘的文件系统的,从而找到第二阶段的文件了。(注:1.5阶段的作用其实并不是用来识别文件系统的,只是为了好理解这么说的)

第二阶段是读取stage2的配置文件的,它的配置文件的名字叫:grub.conf。那么这个配置文件都定义了什么呢?让我们一起来看看吧!

上面蓝色的都是注释,就不多作解释了,看看主要有哪儿些内容吧!

1、 default=0:默认启动第一个操作系统;

2、  timeoutGRUB界面显示5秒,然后就默认启动第一个操作系统;

3、 splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz:指定GRUB背景图片的位置的;

4、 hiddenmenu:用来隐藏GRUB菜单的,没有这个命令,就显示GRUB菜单;

5、 title Red Hat Enterprise Linux Server (2.6.18-164.el5)title后跟的就是GRUB菜单中显示的标题的,这个标题可以是你喜欢的随意名称,另外,每个title只能指定一个内核或一个操作系统;

6、 root (hd0,0):指定根所在的分区的,也是grup的根,用来把某个分区设为文件访问的起始点。这里补充下,在GRUB中它表示的分区名称是以hd命名的,而不是以sda1sdb1来命名的。例如第一块磁盘的第一个分区在GRUB中是这样命名的:hd00),第二个分区就是:hd01)。第二块磁盘的第一个分区:hd10),以此类推;

7、  kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/vol0/root rhgb quietkernel后面是指定的内核;ro :表示以只读的方式加载后面的内容;root=/dev/vol0/root:指定操作系统的根文件系统,就是操作系统启动的根了;rhgb:是来说明这个是红帽的;quiet:用于设定静默模式的(如果不设置这个,在系统启动中会输出很多信息);

8、 initrd /initrd-2.6.18-164.el5.img:指定用来提供驱动程序的文件。当某个磁盘的驱动程序在内核中时,这项是可以省去的。

9、  password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m.:用来设置密码的,在图中的位置表示,在完成GRUB选择后,开始启动操作系统时,需要输入密码;而这项如果在第一个title前面时,表示给GRUB加密,如果不输入密码,GRUB就无法修改和启动了。

一、其他的不多说了,下面来看看如何安装GRUB吧!

GRUB的安装方法有两种:在下面的两种方法中有一个大前提,就是将磁盘分好区,给个简单的分区方法吧!其实这个方法就是将一些参数通过管道的方式送给了fdisk这个分区命令了而已: 

 
  
  1. #echo ‘  
  2. >n  
  3. >p  
  4. >1  
  5. >   
  6. >+100M 
  7. >w ‘ | fdisk sdb 

1、第一种方法

使用grub-install命令来安装:在红帽5.4boot分区需要大约100M,红帽6中大约需要500M,多了也没用。我们这里是以新加的第二块磁盘来说明的:

1)、  首先在我们要将磁盘要挂载的目录建立好(安装GRUB,只能在boot目录下): 

 
  
  1. #mkdir /mnt/boot 

2)、  将磁盘分区挂载到建好的目录下来: 

 
  
  1. #mount /dev/sdb1 /mnt/boot 

3)、  现在就可以使用grub-install命令来安装GRUB了: 

 
  
  1.  #grub-install –root-directory=/mnt /dev/sdb  

弄完这三步,GRUB就在磁盘上安装好了。

2、第二种方法

这个就需要复制文件,并进入grub>命令行中来实现了,这里我们以redhat为例,依旧是以新装的第二块磁盘为例来说明的:

1)、  将磁盘挂在/mnt/boot目录下:

 
  
  1. #mount /dev/sdb1 /mnt/boot 

2)、  boot目录下新建grub目录:

 
  
  1. #mkdir /mnt/boot/grub 

3)、  /usr/share/grub/i386-redhat/目录下的所有文件复制到/mnt/boot/grub目录中:

 
  
  1. #cp /usr/share/grub/i386-redhat/* /mnt/boot/grub 

4)、  进入grub模式中进行设置:

 
  
  1. #grub 
  2.  
  3. grub>root (hd1,0) 
  4.  
  5. grub>setup (hd1) 
  6.  
  7. grub>quit

经过这几步第二种方法也完成了,是不是很简单呢?不过还是需要多练啊,熟能生巧嘛,建议在虚拟机上多多练习。