UEFI Boot Manager

17 篇文章 1 订阅

 简介   

        UEFI boot manager是一个固件方针引擎,它可以通过修改global NVRAM 变量来配置;它会按照global NVRAM variable 定义的顺序来加载UEFI driver or UEFI application。当固件初始化完成,就会把控制权交给boot manager,boot manager然后来负责决定加载。

        UEFI包含启动顺序内容如下:

  1. 从globa NVRAM 变量中读取boot order list,修改这个变量在下一次reset后生效;boot order list定义了一个NVRAM 顺序变量表,包含了启动的信息;每一个NVRAM 变量定义了启动选项的名称;
  2. NVRAM 变量也包含指向硬件设备及其文件的指针,包含要加载的UEFI image
  3. 变量还要包含操作系统分区和目录的路径以及其他配置特定目录

一. 相关Global variables

        NVRAM中每个变量名为Boot####,####十六进制数;BootOrder 定义了启动顺序,其中值为####;BootNext 定义了下一次启动的第一启动项,它与BootCurrent的数据均为####。

二.Variable数据结构

        利用Getvariable()获取NVRAM中load option信息,Setvariable()则可以改变信息,变量名为“Boot####”,数据结构为EFI_LOAD_OPTION。

EFI_LOAD_OPTION:

typedef struct _EFI_LOAD_OPTION {
UINT32 Attributes;
UINT16 FilePathListLength;
// CHAR16 Description[];
// EFI_DEVICE_PATH_PROTOCOL FilePathList[];
// UINT8 OptionalData[];
} EFI_LOAD_OPTION;

Attributes: 即option属性,如果一个option mark as Active,boot manager 会尝试从此设备路径boot,这样就可以简单的进行enable/disable boot option;如果属性为Hidden,那么option会隐藏

FilePathListLength:表示后面FilePathList 数据长度

Description:用户可看的load option描述,一般就是我们可以看到的boot 设备名称,以“0000”结尾

FilePathList:可以看到其结构为EFI_DEVICE_PATH_PROTOCOL,因此是一组UEFI device path 数组,第一个路径元素来描述设备和这个load option image的位置OptionalData[]:预留数据区

三. 启动机制

        EFI 可以从一个支持EFI_SIMPLE_FILE_SYSTEM_PROTOCOL 或者 EFI_LOAD_FILE_PROTOCOL 的设备启动。如果一个设备支持EFI_SIMPLE_FILE_SYSTEM_PROTOCOL,它必须实现文件系统协议,才能可启动;如果一个设备不想支持完整的文件系统,它可能会产生一个EFI_LOAD_FILE_PROTOCOL,用于直接启动镜像;Boot Manager 会尝试先用EFI_SIMPLE_FILE_SYSTEM_PROTOCOL启动,如果fail,会再用EFI_LOAD_FILE_PROTOCOL。

        一般HDD,USB等Media设备采取file system 模式boot,它们的FilePath 中包含了file name 以及boot image。当一个设备没有完整的file system,它会加载EFI_LOAD_FILE_PROTOCOL来使boot image具体化,Network device一般用这种模式boot 因为它的boot image 不需要file system。

   

        

  • 42
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值