BIOS引导流程与启动管理器

现今BIOS存在传统的Legacy BIOS和UEFI两种;

Legacy BIOS

存在的历史比较长,使用广泛,最近几年正在被UEFI所替代,主要原因我认为是这种方式的BIOS对X64体系的支持不够友好;再加上硬盘容量已经超过2TB,MBR分区表无法处理,需要用到GPT分区表.

Legacy BIOS的一般启动流程是:
1.由BIOS选择启动设备,如HDD/CDROM等;
2.加载该设备的MBR(主引导记录),MBR中记录了下一步启动的方式,通常是搜索激活的主分区;
3.加载该分区的PBR(分区引导记录),PBR中记录了需要引导分区中的哪个启动管理器,如NTLDR/BOOTMGR/GRLDR等;
4.加载启动管理器,由启动管理器进一步加载OS内核;


UEFI

全称“统一的可扩展固件接口”(Unified Extensible Firmware Interface), 是一种详细描述类型接口的标准。这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上。大约2010年以后生厂的电脑大多数都开始使用UEFI了,只不过版本可能比较低,兼容性没有最近几年的好。

UEFI的启动流程:
1.指定启动设备,如HDD/CDROM等;
2.搜索可识别的分区,通常是FAT32;
3.在该分区的/efi/boot/目录下寻找bootx64.efi或者bootia32.efi;
4.引导bootx64.efi文件,这个文件就是Legacy BIOS中的启动管理器启动管理器进一步加载OS内核;


虽然UEFI在各个方便对比传统BIOS有不少优势,但目前看来使用起来还是有不少困难,比如说支持的引导程序比较少,不支持实模式的DOS系统等。
而且Legacy BIOS和UEFI的运行模式完全不一样,引导文件的格式也不一样,因此在Legacy BIOS和UEFI模式下的引导文件是不能通用的。
再加上MS在UEFI中强行加入Secure Boot这个流氓,啊?


启动管理器(也叫做引导程序,对应的文件叫做引导文件)

常见的启动管理器如下:

1.NTLDR

Windows XP时代的启动管理器,通过/boot.ini文件来管理启动菜单,可以引导grub等其它引导程序。

目前只有Legacy BIOS模式下的引导文件,不支持UEFI启动。


2.BOOTMGR

Windows Vista以后的系统使用和启动管理器,功能上比NTLDR强大一些,支持VHD,WIM文件的挂载。

Legacy BIOS模式下引导文件为/bootmgr,通过/boot/bcd文件来管理启动菜单;

UEFI模式下引导文件为/efi/boot/bootx64.efi,通过/efi/microsoft/boot/bcd文件来管理启动菜单。在UEFI环境下它不能引导其它的启动管理器如grub。


3.GRUB4DOS

多系统引导程序,GNU GRUB 的一个分支,有一个强大的shell,可以通过命令行进行引导。

目前只有Legacy BIOS模式下的引导文件,不支持UEFI启动,一般情况下通过/menu.lst来管理启动菜单;

常用命令:
chainloader   加载MBR
          chainloader /bootmgr  可以导引bootmgr
          chainloader /g2ldr.mbr  可以引导grub2;
          chainloader +1  可以引导当前分区的PBR;
kernel      加载引导程序内核
          kernel /g2ldr 可以引导GRUB2;
boot        引导刚才加载的程序;
map        映射iso等镜像文件;


4.GRUB2.0

多系统引导程序,GNU GRUB的主线项目,有一个强大的shell,可以通过命令行操作。

Legacy BIOS模式下引导文件一般为/g2ldr.mbr,由g2ldr.mbr来引导/g2ldr;通过/grub/grub.cfg来配置启动菜单项。

UEFI模式下引导文件为/efi/boot/bootx64.efi,也可以通过/grub/grub.cfg来配置启动菜单项。

常用命令:

chainloader  Legacy BIOS模式下:没有成功过,总是提示Missing MBR-Helper, UEFI模式下可以加载其它efi格式的程序
linux       加载linux内核
initrd      加载linux的ramdisk
ntldr       加载ntldr,bootmgr,grldr
boot       引导刚才加载的程序
lookback     映射iso等镜像


你可能感兴趣的:(学习笔记)