《UEFI内核导读》UEFI Firmware Storage简介

news2024/9/21 12:42:52

 ==============================

敬请关注:“固件C字营

    ==============================

          UEFI固件一般存储在被称之为“固件仓库”的非易失性存储器中,简称为FD(固件设备),当前主流的存储介质是NorFlash它拥有非易失性、XIP以及可二次编程的特性。

        固件设备可以分为物理设备和逻辑设备,一个NorFlash固件设备可以被划分为多个逻辑设备FV(Firmware Volume),同理多个物理固件设备也可以组成更大的逻辑设备,FV是最基本的“固件设备”管理单元,被称之为FFS(Firmware File System)。FV以唯一的GUID来区分,同时它会有不同的类型如FFS2或FFS3,以及对其读写控制的其他的属性。FD组织方式是:Section->Firmware File->FV->FD,下文分别介绍。

        Firmware File:用来存储代码或数据,在FV当中它是由GUID来唯一命名,具有文件类型、存储对齐方式、文件大小等属性。UEFI提供了基本的服务来访问Fireware File,在PEI阶段用EFI_PEI_SERVICES->(FfsFindNextFile, FfsFindFileByName、FfsGetFileInfo),在DXE阶段用EFI_FIRMWARE_VOLUME2_PROTOCOL->(ReadFile, ReadSection、WriteFile、GetNextFile), 或EFI_BOOT_SERVICES->LoadImage()。

        Firmware File Section:组成Firmware File的最小单元,由2个最基本的属性,一个是类型,另一个是所占用的存储空间大小。UEFI提供了基本的服务来访问Fireware File Section,在PEI阶段用EFI_PEI_SERVICES->FfsFindSectionData,在DXE阶段用EFI_FIRMWARE_VOLUME2_PROTOCOL->ReadSection

FFS PI Firmware File Types:

PI File Type

Value

Mnemonic

EFI_FV_FILETYPE_RAW

0x01

Binary data

EFI_FV_FILETYPE_FREEFORM

0x02

Sectioned data

EFI_FV_FILETYPE_SECURITY_CORE

0x03

Platform core code used during the SEC phase

EFI_FV_FILETYPE_PEI_CORE

0x04

PEI Foundation

EFI_FV_FILETYPE_DXE_CORE

0x05

DXE Foundation

EFI_FV_FILETYPE_PEIM

0x06

PEI module (PEIM)

EFI_FV_FILETYPE_DRIVER

0x07

DXE driver

EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER

0x08

Combined PEIM/DXE driver

EFI_FV_FILETYPE_APPLICATION

0x09

Application

EFI_FV_FILETYPE_MM

0x0A

Contains a PE32+ image that will be loaded into MMRAM in MM Traditional Mode.

EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE

0x0B

Firmware volume image

EFI_FV_FILETYPE_COMBINED_MM_DXE

0x0C

Contains PE32+ image that will be dispatched by the DXE Dispatcher and will also be loaded into MMRAM in MM Tradition Mode.

EFI_FV_FILETYPE_MM_CORE

0x0D

MM Foundation that support MM Traditional Mode

EFI_FV_FILETYPE_MM_STANDALONE

0x0E

Contains a PE32+ image that will be loaded into MMRAM in MM Standalone Mode.

EFI_FV_FILETYPE_MM_CORE_STANDALONE

0x0F

MM Foundation that support MM Tradition Mode and MM Standalone Mode

EFI_FV_FILETYPE_OEM_MIN… EFI_FV_FILETYPE_OEM_MAX

0xC0-0xDF

OEM File Types

EFI_FV_FILETYPE_DEBUG_MIN… EFI_FV_FILETYPE_DEBUG_MAX

0xE0- 0xEF

Debug/Test File Types

EFI_FV_FILETYPE_FFS_MIN… EFI_FV_FILETYPE_FFS_MAX

0xF0- 0xFF

Firmware File System Specific File Types

EFI_FV_FILETYPE_FFS_PAD

0xF0

Pad File For FFS

FFS PI Section Types:

PI Section Type

Value

Mnemonic

EFI_SECTION_COMPRESSION

0x01

Encapsulation section where other sections are compressed

EFI_SECTION_GUID_DEFINED

0x02

Encapsulation section where other sections have format defined by a GUID

EFI_SECTION_DISPOSABLE

0x03

Encapsulation section used during the build process but not required for execution

EFI_SECTION_PE32

0x10

PE32+ Executable image.

EFI_SECTION_PIC

0x11

Position-Independent Code

EFI_SECTION_TE

0x12

Terse Executable image

EFI_SECTION_DXE_DEPEX

0x13

DXE Dependency Expression

EFI_SECTION_VERSION

0x14

Version, Text and Numeric.

EFI_SECTION_USER_INTERFACE

0x15

User-Friendly name of the driver

EFI_SECTION_COMPATIBILITY16

0x16

DOS-style 16-bit EXE

EFI_SECTION_FIRMWARE_VOLUME_IMAGE

0x17

PI Firmware Volume image

EFI_SECTION_FREEFORM_SUBTYPE_GUID

0x18

Raw data with GUID in header to define format

EFI_SECTION_RAW

0x19

Raw data

EFI_SECTION_PEI_DEPEX

0x1b

PEI Dependency Expression

EFI_SECTION_MM_DEPEX

0x1c

Leaf section type for determining the dispatch order for an MM Traditional driver in MM Traditional Mode or MM Standaline driver in MM Standalone Mode

更多导读,尽情期待!

==============================

   敬请猛戳下面链接,关注&转发

敬请关注:“固件C字营

点击左下角“分享”,快乐更多人

==============================

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/133119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux如何发送查收邮件的详解

一,linux用户发送给linux中的其它用户 1,使用命令 yum install sendmail -y安装sendmail软件 2,使用yum install mailx -y安装 mailx软件 3,使用命令systemctl start sendmail启动sendmail(此过程消耗时间&#xff09…

你在项目里遇到的最大困难是什么,如何解决的?

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构等核心知识点,欢迎star~ Github地址:https://github.com/Tyson0314/Java-…

Weiler-Atherton 算法介绍(简单易懂)

目录 一、算法介绍 二、算法描述 三、算法总结 一、算法介绍 Weiler Atherton多边形裁剪算法是一种允许裁剪凹面算法的算法。与 Sutherland-Hodgman 多边形裁剪算法最主要的区别是,该算法能够裁剪凹多边形,并不留下任何残留物。 裁剪示意图&#xff1…

关于微服务,这些你都了解吗-微服务介绍

文章目录一 认识微服务1.1 什么是微服务1.2 微服务的特点1.3 微服务诞生背景1.4 微服务架构的优势二 微服务生态1.1 硬件层1.2 通信层1.3 应用平台层1.4 微服务层三 微服务详解1.1 微服务架构1.2 服务注册和发现1.3 rpc调用和服务监控四 微服务与DDD1.1 什么是DDD1.2 DDD作用1.…

python快速实现某东方视频解密wasm算法

开始之前请大家先去了解一下 wasm这种技术(可以百度搜索一下 WebAssembly是什么?) 现在开始.... 1,先看一张图 首先写一个本地加载wasm的方法 00043706.wasm就是当前网站load的wasm库,如果遇到报错,请联系我,文章最后有qq联系方式 let u {} functio…

C++类和对象2:默认成员函数

我们通过this指针可以看出来,C其实隐藏了非常多的东西,很多事情它会在编译的时候包揽,那么作为最为重要的类和对象,它是不是还隐含了更多我们平常看不到的东西呢? 我们创建一个空类里面啥也不放。 class Text{}; 看上…

2_类加载子系统

目录 概述 类加载器子系统作用 类的加载过程 加载阶段 加载class文件的方式 链接阶段 准备 Prepare 解析 Resolve 初始化阶段 类加载器的分类 虚拟机自带的加载器 扩展类加载器(Extension ClassLoader) 应用程序类加载器(系统类加…

阿里云计算工程师ACP考题归类解析

目录考纲答题技巧四式记的牢三妙招一、对象存储OSS二、专有网络VPC三、服务器ECS四、安全五、阿里云弹性伸缩Auto Scaling五、内容分发网络CDN总结考纲 重点学习ECS、VPC、OSS三部分。 答题技巧四式 战略是先做简单后做难度高的。 一、简化 做题问三个问题,按回答…

【云原生 | Kubernetes 实战】20、K8s Ingress 实现业务灰度发布

目录 通过 Ingress-nginx 实现灰度发布 一、Ingress Controller 多种发布策略介绍 场景一:将新版本灰度给部分用户 场景二:切一定比例的流量给新版本 二、模拟部署生产测试版本 Web 服务 2.1 部署一个 v1 版本: 2.2 再部署一个 v2 版本: 2.3 再…

论文投稿指南——中文核心期刊推荐(化学)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

本地方法接口

什么是本地方法 简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,…

AQS核心原理之

AQS系列 1、AQS核心原理之 2、ReentrantLock 原理及示例 文章目录AQS系列一、什么是AQS?二、AQS特性三、AQS内部维护 state四、队列4.1 同步等待队列4.2 条件等待队列5、总结一、什么是AQS? AQS全称是 AbstractQueuedSynchronizer(抽象对了同步器)&am…

Cento6从零开始用Nginx+mysql+php搭建Discuz在线论坛系统

首先我的liunx使用版本是 centos6.5 32位 discuz版本是Discuz_X3.2_SC_UTF8.zip Xshell版本是6 xftp是7版本 mysql也是是这个版本:mysql这里写目录标题1.yum安装php2.安装nginx包3.安装php-fpm4.安装php-mysql5. 安装Discuz在线论坛系统由于目前yum源已经无法使用需…

力扣 2037. 使每位学生都有座位的最少移动次数

题目 一个房间里有 n 个座位和 n 名学生,房间用一个数轴表示。给你一个长度为 n 的数组 seats ,其中 seats[i] 是第 i 个座位的位置。同时给你一个长度为 n 的数组 students ,其中 students[j] 是第 j 位学生的位置。 你可以执行以下操作任…

unidbg案例-爱库存app之sig和sign分析

新年的第一篇文章,新的一年继续加油,奥利给!冲冲冲。 今天分析的app是爱库存,版本号6.1.6,这次还是使用unidbg分析该样本,加密参数有很多,不过只关注sig和sign两个参数。 老规矩,上来先抓个包。 1.抓包 可以看到上面👆🏻的sign,就是本次研究的重点。 2.jadx静…

A* 算法详解(超级详细讲解,附有大图)

目录 引入 一.基本概念 二.算法原理 ①用宽度优先搜索 ②狄克斯特拉算法 ③A*算法 三.需要注意 四.c伪代码 最后 引入 今天想跟大家聊的,是我们经常用到,但是却让大家觉得十分神秘的那个算法:A* 。 这是一个远古而又非常经典的游戏…

【C++ STL】-- 用一棵红黑树的插入实现同时封装map与set

用一棵红黑树同时封装map与set的意义:所谓的 “用一棵红黑树同时封装map与set” 只是在程序员的角度,通过一系列手段,以一个红黑树同时满足map与set。但是在编译器的角度,实际上并不是一颗树实现的,程序员所写的只是一…

机器学习 10:激活函数大全

虽称为激活函数大全,但也不敢太过自满,如有遗漏与错误,还请指正 文章目录线性激活函数Sigmoid 函数LogSigmoidSwishTanh / 双曲正切激活函数TanhShrinkSoftsignReLU 函数BReLULeaky ReLUPReLURReLUELUSELUCELUGELUSoftmax 函数Maxout 函数Sof…

Android 实现多语言

工具下载连接 链接:https://pan.baidu.com/s/1Wq9DTzhP2fkHXLEbOQFr9A?pwdlmcz 提取码:lmcz 1.将你需要的翻译的strings放到exe目录下 2.双击执行xml转xls.exe 英文 日文 韩文(使用空格分割)回车,会在当前目录下生…

jvm学习的开端(一)----类的加载(类加载子系统)

文章目录1.Loading(加载阶段)2.Linking(链接阶段)2.lnitialization(初始化阶段)来自 百度百科: 类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的…