GRUB:是一个来自GUN项目的多操作系统启动程序,是多启动规范的实现,他允许用户在计算机内同时拥有多个操作系统,并在计算机启动时选择希望的操作系统。GRUB可用于选择系统分区上的不同内核,也可用于向这些内核传递启动参数。
引导过程:由硬盘启动时BIOS通常是转向第一个磁盘的第一个扇区即主引导记录(MBR)。装载GRUB和操作系统的过程,包括以下几个操作步骤:
装载记录:基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。
装载GRUB:这第二引导装载程序实际上是引出更高级的功能,以允许用户装载一个特定的操作系统。
装载系统:如linux内核。GRUB把机器的控制权移交给操作系统。不同的是,微软操作系统都是使用一种称为链式装载的引导方法来启动的,主引导记录仅仅是简单地指向操作系统所在分区的第一个扇区.
MBR:即主引导记录,是对IBM兼容机的硬盘或可移动硬盘分区时,在驱动器最前端的一段扇区,MBR描述了逻辑分区的信息,包含文件系统以及组织方式。此外MBR还包含计算机在启动的第二阶段加载操作系统的可执行代码或每个分区的引导记录(VBR)。这个MBR代码通常被称为引导程序。由于MBR分区表最大可寻址的存储空间只有512字节,因此在大硬盘出现的现在,MBR分区方式逐渐被GUID分区表取代。为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区(引导程序、分区表及分隔标识),也就是上面所说的主引导记录;而狭义的MBR仅指引导程序而言。硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和分区有效标志。在总共512字节的主引导扇区里主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为0xAA55或0x55AA,这取决于处理器类型[2] ,如果是小端模式处理器[3] (如Intel系列),则该值为0xAA55;如果是大端模式处理器[3] (如Motorola6800),则该值为0x55AA。
主引导扇区(偏移地址0000H--0088H):它负责从活动分区中装载,并运行系统引导程序。这部分的代码会因为操作系统不同而不同,利用引导代码可以实现多重系统引导。多系统引导有两种方法可以实现:一种方法是用Windows操作系统在引导分区中设置一段代码,先加载进入用户选择系统的界面,允许用户选择要进入的系统,再进入指定的系统;第二种方法是改变MBR中的引导代码,该代码直接呈现给用户一个选择系统的界面。
出错信息数据区(偏移地址0089H--00E1H):为出错信息,00E2H--01BDH全为0字节。
分区表(DPT,Disk Partition Table):含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。
结束标志字(偏移地址01FE--01FF):2个字节值为结束标志0xAA55或0x55AA,称为“魔数”(magic number)。如果该标志错误系统就不能启动。
装载GRUB和操作系统的过程:
1、装载基本的引导装载程序,这通常是第一步,基本引导装载程序必须是位于主引导扇区中一个非常小的空间,少于512字节。因此,基本引导装载程序所做的唯一的事情就是装载第二引导装载程序,这主要是归结于在主引导扇区中没有足够的空间用于其它东西。
2、装载第二引导装载程序,这通常是第二步,这第二引导装载程序实际上是引出更高级的功能,以允许用户载入一个特定的操作系统。GRUB中,这步是让用户显示一个菜单或是输入命令。
3、装载在一个特定分区上的操作系统,如linux内核,一旦GRUB从它的命令行或配置文件中,接到开始操作系统的正确指令,它就寻找必要的引导文件,然后把机器的控制权移交给操作系统。
更多信息参看: