Windows 操做系统引导过程 BIOS & EFI

引导过程

引导过程指的是从计算机通电那一瞬间到CPU开始执行操做系统代码时的整个过程。在这个很是初期的阶段汇总,CPU执行标准的启动代码。这部分代码须要对硬件设备进行探测,寻找最有可能启动的操做系统而且根据用户定义的参数启动这个操做系统。html

传统形式的引导:BIOS

大部分PC机仍然使用BIOS引导,默认(通用)的引导加载器(boot loader)。BIOS是一种类型的固件,提供一些简单的菜单项,用户经过这写菜单项能够修改主板参数、引导设备顺序等内容。固件(firmware)能够看作一种软件,这种软件被写入芯片,因此是“固化”的。固件代码自己能够保存在只读存储器(ROM)中。也可保存在可编程只读存储器(PROM)或者电可擦除只读存储器(EEPROM)中,后两种形式更为常见。ios

BIOS芯片主要存放:编程

  • 自诊断程序:经过读取CMOS中的硬件配置,并对其自检和初始化
  • CMOS设置程序:引导过程当中,用特殊热键启动,进行设置后,存入CMOS RAM中
  • 系统自举装载程序(bootstrap):在自检成功后将磁盘相对0道0扇区上的引导程序装入内存运行
  • 主要I/O设置的驱动程序和中断服务

BIOS和固件的功能是同样的:加载一些基本的自举(bootstrap)代码给CPU执行。自举程序和BIOS或者固件的职责是:初始化硬件、检测硬件、定位这些引导设备、执行引导加载器程序;引导加载器程序的职责是:寻找选择的操做系统、将全部必要的命令行参数传递给操做系统内核。bootstrap

传统的BIOS引导操做系统(Windows)以下图(引用威锋网):url

计算机开机后,固化在ROM中的BIOS会被加载到内存运行,BIOS自检完毕后就会加载COMS的参数,经过COMS的参数,BIOS加载启动磁盘的MBR到内存运行。经过运行MBR的代码,记录在MBR分区表中,标记为活动分区的磁盘分区PBR(Partition Boot Record)被加载到内存运行,PBR在运行后可加载操做系统加载器(如Windows的bootmgr)的代码到内存运行,操做系统加载器可加载操做系统内核到内存运行,进而完成BIOS的引导流程。操作系统

下一代BIOS:EFI

EFI(Extensible Firmware Interface)是一种取代传统BIOS的技术。BIOS是一个固定的程序,并且一般是封闭的。EFI是一个全功能的运行时系统,在引导期间提供了更为强大的接口,甚至在以后的运行时也提供了接口,EFI程序一般是引导加载器。EFI程序其实是一个二进制程序。命令行

EFI的通常由一下几部分组成:cdn

  • Pre-EFI初始化模块
  • EFI驱动执行环境
  • EFI驱动程序
  • 兼容性支持模块(CSM)
  • EFI高层应用
  • GUID磁盘分区

###NVRAM变量htm

NVRAM是固件接口中一个很是强大的功能,并且这显然是BIOS没有的功能,NARAM变量是在系统范围内存在的,操做系统和固件自己均可以访问。通常来讲。NVRAM变量能够分为如下几类:blog

  • 引导相关的变量:用于指定要引导的内核和根文件系统,还负责向内核传递参数。
  • 固件内部变量:固件使用的变量,通常被操做系统忽略
  • 临时变量:根据须要设置或清空,一般在从新引导的时候不会保留

EFI引导操做系统(Windows)过程以下图(引用威锋网):

计算机开机后,就会加载固化在只读存储器RAM中的pre-EFI初始化程序,进行主桥及存储器的初始化工做,紧接着载入EFI驱动执行环境(DXE),EFI驱动会被相继加载及初始化,接着加载、启动EFI系统,在EFI系统启动后,GUID分区表就会被识别,以后EFI系统经过加载 NVRAM的参数来决定是否启动BootCamp程序(苹果双重引导的解决方案),不启动BootCamp程序就会启动启动装载程序(Boot Loader)加载操做系统内核,完成EFI的引导流程。

参考博客:

Mac 系统引导过程概述 & BootCamp 的秘密

参考文献:

百度百科:BIOS

百度百科:EFI

相关文章
相关标签/搜索