在引导的原理上并没有区别(只是在具体实现上有区别),因为硬件需要如何被引导是由硬件设计说了算的,这个层面的软件无非是按照硬件的设计要求在按顺序初始化而已,无论是BIOS还是UEFI都是如此。

BIOS和UEFI的最主要区别在于,BIOS是独乐乐,UEFI是众乐乐。

历史上的BIOS是一个封闭的,由单个公司负责的模块。因此其规模、扩展性等都有很大限制。

而UEFI是一个标准平台,可以看作是操作系统之前的一个微型操作系统,有驱动的概念,接口开放,厂家可以通过编写符合UEFI标准的驱动拓展UEFI的能力,扩展性强。

BIOS 启动流程

  • 系统开机 - 上电自检(Power On Self Test 或 POST)。
  • POST 过后初始化用于启动的硬件(磁盘、键盘控制器等)。
  • BIOS 会运行 BIOS 磁盘启动顺序中第一个磁盘的首 440bytes(MBR 启动代码区域)内的代码。
  • 启动引导代码从 BIOS 获得控制权,然后引导启动下一阶段的代码(如果有的话)(一般是系统的启动引导代码)。
  • 再次被启动的代码(二阶段代码)(即启动引导)会查阅支持和配置文件。
  • 根据配置文件中的信息,启动引导程序会将内核和 initramfs 文件载入系统的 RAM 中,然后开始启动内核。

UEFI 启动流程

  • 系统开机 - 上电自检(Power On Self Test 或 POST)。
  • UEFI 固件被加载,并由它初始化启动要用的硬件。
  • 固件读取其引导管理器以确定从何处(比如,从哪个硬盘及分区)加载哪个 UEFI 应用。
  • 固件按照引导管理器中的启动项目,加载 UEFI 应用。
  • 已启动的 UEFI 应用还可以启动其他应用(对应于 UEFI shell 或 rEFInd 之类的引导管理器的情况)或者
  • 启动内核及 initramfs(对应于 GRUB 之类引导器的情况),这取决于 UEFI 应用的配置。
最后修改:2022 年 01 月 18 日
如果觉得我的文章对你有用,请随意赞赏