UEFI引导模式引导流程如何?

时间:2019-09-19 01:28:32

标签: assembly sequence boot bios uefi

此问题的表达与What is UEFI's boot sequence?相同,但似乎不是我想要的。我想从指令的角度了解UEFI顺序。

例如,在BIOS引导模式下,以简化方式,

  • 计算机电源已打开。
  • 连接到主板的BIOS芯片的内容执行POST(开机自检)过程。
  • BIOS搜索MBR(主引导记录),该MBR具有按预设引导设备顺序的引导签名。
  • 如果找到具有引导签名的MBR,则将设备的第一个扇区(512字节)加载到DRAM,地址为0x7C00。此加载的扇区(512字节)成为“第一阶段引导程序”。
  • BIOS将控制权转移到此第一阶段的引导加载程序。换句话说,执行位于DRAM中物理内存地址0x7C00的操作码。

Image

相关文章: https://neosmart.net/wiki/mbr-boot-process/

但是

在使用UEFI的情况下,我很难掌握此顺序。

我已经浏览了UEFI规范文档和OS Dev UEFI部分。

UEFI: https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf

OS Dev: https://wiki.osdev.org/UEFI

在BIOS模式下,此efi_main()函数似乎等效于0x7C00。但是如何?

UEFI固件是否正在执行类似的操作

jmp efi_main

完成一系列工作之后?

问题1。 UEFI引导模式如何流动?

第二季度。是否有一个很好的UEFI示例或教程,例如brokenthorn基于BIOS的案例?

P.S。

我已经看到一条消息(已经过去了几年),英特尔将在2020年取消对BIOS的支持。

https://www.anandtech.com/show/12068/intel-to-remove-bios-support-from-uefi-by-2020

Once CSM is removed, the new platforms will be unable to run 32-bit operating systems, unable to use related software (at least natively), and unable to use older hardware, such as RAID HBAs (and therefore older hard drives that are connected to those HBAs), network cards, and even graphics cards that lack UEFI-compatible vBIOS (launched before 2012 – 2013)

第三季度。

难道不赞成与BIOS引导相关的所有内容(0x7C00处的第一级引导程序和BIOS中断等)已被弃用吗?

2 个答案:

答案 0 :(得分:4)

第一季度:

UEFI引导顺序分为多个“阶段”,您可以找到有关每个阶段here的一些基本信息。

要加载SEC阶段,SecCore位于存储器地址0xFFFFFFF0(此地址映射到UEFI闪存),因此是复位向量的目标。

在dxe阶段之后,可以在加载操作系统之前调用多个UEFI应用程序。

第二季度:

如果您想对UEFI的工作原理有一个基本的了解,我建议您阅读《超越BIOS》一书。

如果您想学习如何编写UEFI驱动程序/应用程序,我建议您查看EDK2 repositoryand how to build Applications with it)中的一些示例应用程序,有关更多详细信息,请参见规范。

答案 1 :(得分:1)