分享

UEFI 引导与 BIOS 引导在原理上有什么区别?

 丝广里 2021-03-30
摘要

其实UEFI 引导与 BIOS 引导在原理上区别总结下来就是:BIOS把MBR读出来交给CPU执行,做MBR做想做的事。UEFI是查找磁盘里的\efi\boot\bootx64.efi文件,启动这个可执行程序,让这程序做想做的事。直接好处除了开机快点外,最重要的是装系统超级方便了。把微软爸爸的系统镜像解压到U盘就能装机去了,不用再各种启动盘制作工具艹U盘的MBR(那些年战XP战各种主板兼容回忆起来真的一脸血)。

前几天明月给自己制作了一个 Win PE 引导优盘(可参考【体验最好的 windows PE 是什么?』一文),很多人可能不是很理解 UEFI 和 BIOS 引导在原理上的区别是什么,今天就收集整理出来分享给大家。算是一次科普知识分享吧。

其实 UEFI 引导与 BIOS 引导在原理上区别总结下来就是:BIOS 把 MBR 读出来交给 CPU 执行,做 MBR 做想做的事。UEFI 是查找磁盘里的\efi\boot\bootx64.efi 文件,启动这个可执行程序,让这程序做想做的事。直接好处除了开机快点外,最重要的是装系统超级方便了。把微软爸爸的系统镜像解压到 U 盘就能装机去了,不用再各种启动盘制作工具艹 U 盘的 MBR(那些年战 XP 战各种主板兼容回忆起来真的一脸血)。

UEFI 引导与 BIOS 引导在原理上有什么区别?

先从启动流程上看区别在哪里?

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 应用的配置。

UEFI 引导与 BIOS 引导在原理上有什么区别?

总结

区别其实很简单,传统 BIOS,我们也称之为 legacy bios,他的引导方式很简单,就是上电自检后,跑完 POST,干完一大堆活以后,会去读取启动设备的 0 磁道 1 扇区 上面的前 512 字节(MBR)的数据。这就是我们常说的启动扇区,boot sector,BIOS 会看最后两个字节是不是 55 AA,如果是就用一条 jmp 指令跳过去就是了

而 UEFI 引导则是基于文件系统的,理论上没有 MBR 这样的东西(当然,实际上为了兼容性等等一大堆问题,可能磁盘上还是会有个 MBR)。boot 的时候,加载启动设备上面的 uefi loader,换句话说,uefi loader 是一个永远也不会返回的 UEFI APP 就是了。

本文最后更新于2019年7月6日,已超过 1 年没有更新,如果文章内容或图片资源链接失效和错位的,请留言反馈,我们会及时处理,谢谢!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多