GNU GRUB
GNU GRUB(Grand Unified Boot Loader)是一个来自GNU项目的启动引导程序,主要用于类Unix系统。其任务是加载操作系统内核并移交控制权。允许用户选择要载入的已安装的操作系统或内核,也允许用户向内核传递参数。当前稳定版为2.00(GRUB2),官方所称GRUB即GRUB2,前一版本称为GRUB Legacy。
GRUB功能强大,支持直接和链式载入(启动另一启动引导程序,用于引导不支持多启动的操作系统,如Windows)方式,几乎可引导任何操作系统;支持所有Unix文件系统和Windows适用的FAT、NTFS文件系统,支持LBA;GRUB可以从网络下载操作系统镜像而支持无盘系统;GRUB支持在启动操作系统前解压它的镜像;GRUB提示符交互功能等。
基于BIOS和MBR的GRUB引导过程
GRUB阶段1程序(boot.img)位于MBR中。MBR引导程序作用是定位GRUB,并将阶段1载入内存。受MBR空间影响,阶段1所做几乎只是装载GRUB下一阶段(存于硬盘其它位置)。阶段1可以直接装载阶段2,或装载阶段1.5。阶段1.5存于MBR后30kB,用于载入阶段2。
阶段2载入内存,作用是显示GRUB菜单和命令环境,提供选择操作系统或内核、传递参数给内核和查看系统参数功能。完成选择后GRUB将内核载入内存,然后移交控制权给内核,由内核载入操作系统。
以上方式称为直接载入(direct loading),GRUB还支持Windows使用的链式载入(chain loading)。此方式下,MBR指向存放操作系统的分区的第一个扇区,找到所需文件(另一个启动器)来引导操作系统。
基于UEFI的GRUB引导过程
EFI挂载EFI系统分区(/boot/efi/),Ubuntu提供的EFI软件位于/boot/efi/EFI/ubuntu/,其中包含EFI固件架构编译的grubx64.efi文件。grubx64.efi作为缺省的引导程序被读入内存,可以选择操作系统,并进行控制权移交。对于基于UEFI的系统,链加载通常不是必需的。EFI引导管理者可以加载EFI系统分区里出现的任何操作系统引导加载程序。
GRUB移交控制权后,接下去的工作便交由操作系统完成。