愚蠢的地球人

电脑BIOS系统引导过程详解

目前个人电脑主要的系统引导方式有两种:传统的Legacy BIOS和新型的UEFI BIOS。

要了解引导方式首先要了解一下磁盘分区表格式,一般来说,磁盘分区表有两种格式:MBR和GPT。MBR分区表在Windows操作系统下最多支持4个主分区(只允许有一个分区是活动的)或3个主分区+1个扩展分区(包含多个逻辑分区),扩展分区必须划分为逻辑分区才能使用,1个扩展分区可以划分多个逻辑分区。GPT分区表对分区数量没有限制,但在Windows系统上最多可以支持128个主分区。


传统的Legacy BIOS无法识别GPT分区表格式,所以也就没有LegacyBIOS+GPT的组合方式,也就是说传统Legacy BIOS引导系统的时候只能通过MBR来引导。MBR位于硬盘的0柱面、0磁头、1扇区,占用512个字节。MBR不属于任何一个操作系统,是所有系统公用的,它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统。安装操作系统的时候安装程序会在MBR中写入引导程序,电脑开机以后MBR中的引导程序会自动在活动分区中搜寻相应的启动程序并执行:

如果MBR中是MS-Dos 6.22的引导程序,那么该引导程序会执行io.sys,io.sys进一步加载msdos.sys。

如果MBR中是Grub引导程序,那么该引导程序会执行grldr,grldr读取menu.lst显示启动菜单或直接进入系统。
如果MBR中是WinNT/2k/XP的引导程序,那么该引导程序会执行ntldr,ntldr读取boot.ini显示启动菜单或直接进入系统。

如果MBR中是Vista以后的引导程序,那么该引导程序会执行bootmgr,bootmgr读取\Boot\BCD显示启动菜单或直接进入系统。

以上menu.lst和boot.ini都是文本文件,可以直接用文本编辑器来进行编辑,\Boot\BCD文件只能通过EasyBCD工具来查看和编辑。


使用传统Legacy BIOS引导Windows10系统的过程如下:
LegacyBIOS→MBR→活动分区根目录下的bootmgr→\Boot\BCD→C:\Windows\system32\winload.exe


UEFI BIOS可同时识别MBR分区和GPT分区,所以UEFI下,MBR和GPT磁盘都可用于启动操作系统。不过由于微软限制,UEFI下使用Windows安装程序安装操作系统是只能将系统安装在GPT磁盘中。GPT分区下的磁盘没有MBR记录,所以电脑的引导程序不再写入到MBR中,而是直接写入到EFI分区里面。EFI分区实际上是一个FAT格式的分区,不一定要是第一个分区,GPT磁盘下任何一个FAT文件格式的分区都可以用来放EFI引导程序。Windows系统的EFI分区有时候也叫ESP分区。

电脑使用UEFI方式启动时,UEFI BIOS会根据BIOS中的设置来找到用于启动的EFI分区,然后执行这个启动分区下的\EFI\boot\bootx64.efi(或者bootia32.efi)文件,这个文件实际上是一个可执行程序。我们在安装Windows系统时候,安装程序会自动建立\EFI\boot\bootx64.efi,这个程序在加载之后会默认读取\EFI\microsoft\boot\BCD(此文件可以用BOOTICE这个软件来查看和编辑)来显示启动菜单或直接进入系统,有些主板的BIOS甚至可以直接设置启动文件为\EFI\Microsoft\Boot\bootmgfw.efi,实际上这个文件跟\EFI\boot\bootx64.efi是完全一样的。


使用新型的UEFI BIOS引导Windows10系统的过程如下:

UEFIBIOS→EFI分区→\EFI\boot\bootx64.efi→\EFI\microsoft\boot\BCD→HD0\Partition2\Windows\system32\winload.efi。


如果你的电脑安装了第三方的引导软件,比如说Clover,那么它会将你的\EFI\boot\bootx64.efi替换为clover的启动程序CLOVERX64.efi,替换之后的\EFI\boot\bootx64.efi不再会默认读取\EFI\microsoft\boot\BCD,而是读取\EFI\CLOVER\config.plist的配置来显示启动菜单。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

友情链接

网站分类

最新留言

最近发表