UEFI学习笔记(三):FDF文件及FD、FV、FFS

UEFI学习笔记(三):FDF文件及FD、FV、FFS

一、基本概念

1.FDF文件:

Flash Description File (固件描述文件)定义了固件的布局、包含的模块和其他与映像生成相关的内容。

作用:

.fdf 文件用于指定固件映像的布局,包括:固件区域的定义、模块和驱动程序的链接位置、固件的启动设置。GenFds 工具用于将 FDF 文件转换为 FD 文件。

2.FD:

FD (Firmware Descriptor)文件通常包含多个固件区域,如启动区、驱动程序区、应用程序区等。一个FD由一组FV组成,它将这些固件卷组合成一个完整的固件映像,准备被烧录或加载到设备上。

作用:

FD 文件用于将多个固件组件打包成一个单一的固件映像。它定义了固件映像中各个部分的位置和大小。

生成:

在 UEFI 固件构建过程中,FD 文件是通过工具(如 GenFds)从 FDF 文件生成的。它表示固件的最终映像格式,包含所有需要的固件模块和区域。

3.FV

FV (Firmware Volume)是固件卷,它是固件映像中的一个逻辑区域,用于组织和存储固件组件。每个 FV 文件包含一个或多个 FFS 文件 ,构成固件映像中的不同区域(如启动区域、驱动区域)。在 .fdf 文件中,FV 是一个逻辑区块,实际存储多个固件文件。

作用:

FV 提供了一个结构化的方式来组织固件组件,使得不同的固件模块可以按需加载和管理。FV 通常用于 UEFI 固件映像的打包和管理。FV通过GUID(全局唯一标识符)来标识和访问其中的模块

生成:

在固件构建过程中,FV 文件通过将多个 FFS 文件组合在一起生成,形成固件卷。

4.FFS

FFS (Firmware File System)是固件文件系统中的一个单独的文件,它可以是一个模块、驱动程序、库、或应用程序(如 .efi 文件)。FFS 文件是固件卷(FV)中的基本组成部分。

作用:

FFS 文件用于存储和组织固件中的不同模块和驱动程序。每个 FFS 文件都有一个头部,描述其类型、大小和其他属性。

生成:

FFS 文件在固件构建过程中由编译器和链接器生成,然后被打包到 FV 文件中。

4.Capsule

它是用于定义固件更新包的配置部分。Capsule 是一种特定格式的固件更新映像,通常由多个组件打包而成,供系统在运行时或重启时进行更新。Capsule 的定义涉及到如何将固件更新数据组织到一个整体的映像中,以便通过 UEFI 更新机制进行处理。

Capsule 在 .fdf 文件中的作用:

Capsule 在 .fdf 文件中用于描述固件更新映像的布局、内容以及如何将这些内容打包成 Capsule 文件。

二、关联

FD、FV 、FFS和section:

FD、FV 、FFS、section之间存在密切的层级关系 ,从大到小依次构成整个固件。

FD是FV的上层容器,FV是FD中存储固件组件的一种结构。在 UEFI 固件的构建过程中,这些文件格式协同工作,以确保固件映像的正确组织和打包。GenFds 工具用于将 FDF 文件转换为 FD 文件,FD 文件再包含多个 FV 和 FFS 文件,FFS由section组成,以生成最终的固件映像。

FDF和INF:

在 .fdf 文件中,FV 会引用通过 INF 文件定义的模块 ,将它们打包到固件卷中。通常,.fdf 文件会指向多个由 INF 文件生成的模块,并将它们组织到一个或多个 FV 中。
(!!!新增app或driver的时候,需要把.inf添加到fdf中)

参考文章:

UEFI中的edk2编译流程_edk2代码走读

【UEFI基础】FDF文件

相关推荐
searchforAI10 分钟前
2026国产AI笔记工具横评:Get笔记、Ai好记、通义听悟、BiBiGPT各有什么特色?
人工智能·笔记·学习·ai·音视频·知识图谱·知识库
三品吉他手会点灯8 小时前
C语言学习笔记 - 50.流程控制4 - 流程控制为什么非常非常重要
c语言·开发语言·笔记·学习
chushiyunen9 小时前
langchain4j笔记、tools
笔记·python·flask
影视飓风TIM11 小时前
数据结构 | 链表超全笔记(单链表+双链表+高频算法题)
数据结构·笔记·链表
二哈赛车手11 小时前
新人笔记---最终版智能体图片分析完整方案,包括一些总结于经验,以及各种优化点讲解
java·笔记·spring·ai·springboot
_李小白11 小时前
【智能驾驶:视觉感知后处理 阅读笔记】Day4: 相机成像模型与畸变
笔记·数码相机
十月的皮皮12 小时前
C语言学习笔记20260615-有序升序序列合并
c语言·笔记·学习
辣香牛肉面15 小时前
CintaNotes个人笔记管理软件v3.14(v3.13.0 绿色汉化版)
笔记
yoothey17 小时前
异常学习笔记:为什么自定义异常后还要 throw?
笔记·学习
sulikey17 小时前
数据库系统概论4 - 更新与视图 期末速成课笔记
数据库·笔记·考试·期末速成·数据库系统概论