UEFI学习笔记(十三):Capsule Update

UEFI学习笔记(十三):Capsule Update

    • 一、Capsule update相关概念
      • 1、胶囊文件(Capsule File):
      • 2、胶囊负载(Capsule Payload):
      • 3、交付机制:
      • 4、EFI 胶囊更新协议:
      • 5、更新过程:
      • 6、应用场景:
    • 二、Capsule Services
      • 1、Firmware Management Protocol(FMP)
        • 1)固件发现:
        • 2)固件更新:
        • 3)固件管理:
      • 2、EFI System Resource Table(ESRT)
        • 1)固件资源描述:
        • 2)支持固件更新:
        • 3)与 FMP 协议结合:
    • 三、如何更新Capsule
      • 1、Memory Persistant Reset:
      • 2、Capsule on disk:
        • 1)存储:
        • 2)读取和应用:
        • 3)恢复和回滚:
        • 4)安全性:

一、Capsule update相关概念

在UEFI(统一可扩展固件接口)中,胶囊更新(Capsule Update) 是通过胶囊文件来更新固件组件(如BIOS或系统固件)的机制。胶囊更新对于安全应用固件更新非常重要,且不需要通过操作系统来完成。两个特点:安全、

1、胶囊文件(Capsule File):

胶囊文件是一种封装了固件更新负载及相关元数据的文件。该文件可以通过不同方式传递,例如操作系统或从USB设备引导。

2、胶囊负载(Capsule Payload):

胶囊内包含的更新负载是实际要应用的固件或数据,可能包括更新的BIOS代码、ACPI表、微码或其他系统关键更新。

3、交付机制:

胶囊文件可以通过运行的操作系统使用UEFI的固件接口传递。
它也可以在启动时由固件直接从存储介质(如USB驱动器)加载。

4、EFI 胶囊更新协议:

UEFI 定义了 EFI_CAPSULE_UPDATE_PROTOCOL 来处理胶囊更新。此协议允许操作系统与固件之间进行通信,以便顺利执行更新过程。

5、更新过程:

加载胶囊: 通过操作系统应用程序或UEFI Shell命令将胶囊文件传递给系统固件。

系统重启: 大多数UEFI胶囊更新需要系统重启进入一个特殊的UEFI固件模式,处理胶囊文件。

处理胶囊: 在重启期间,UEFI固件检查是否存在待处理的胶囊更新,并处理负载。

验证: 胶囊更新通常通过数字签名进行验证,以确保其完整性和真实性。

固件更新: 如果验证通过,固件更新将被应用,完成后系统可能会再次重启。

6、应用场景:

固件的错误修复、安全补丁或新功能更新;CPU 微码更新;更新平台配置数据,如ACPI表。

二、Capsule Services

1、Firmware Management Protocol(FMP)

FMP(Firmware Management Protocol,固件管理协议是由 UEFI(统一可扩展固件接口)规范定义的一种协议,旨在提供固件更新和管理的标准化方法。FMP 主要用于支持固件更新的功能,包括固件的发现、管理和更新。核心功能

1)固件发现:

FMP 协议允许操作系统或应用程序查询系统中可用的固件组件(如 BIOS、UEFI 组件、设备固件等)。

可以获取固件的版本、状态以及相关信息,帮助用户了解当前固件的状态。

2)固件更新:

FMP 协议提供了一种标准化的方式来进行固件更新,支持固件的下载、验证和安装。

协议允许用户在系统运行时进行固件更新,而无需重新启动系统或中断服务。

3)固件管理:

FMP 还支持固件的管理功能,包括固件的启用、禁用、删除和备份等操作。

协议可以定义固件组件之间的依赖关系,确保更新的顺序和完整性。

2、EFI System Resource Table(ESRT)

ESRT(EFI System Resource Table,EFI 系统资源表是 UEFI(统一可扩展固件接口)规范中定义的一种数据结构,用于描述系统中固件更新资源的信息。ESRT 的主要目的是为操作系统或固件更新工具提供一个统一的接口,以便于发现和管理可更新的固件组件。主要功能:

1)固件资源描述:

ESRT 提供了系统中所有可更新固件组件的描述,包括每个组件的版本、状态、类型和位置等信息。

这些信息使得操作系统或更新工具可以轻松识别系统中可用的固件更新。

2)支持固件更新:

ESRT 支持固件更新流程的管理,包括更新的可用性、当前状态和更新历史等。

通过访问 ESRT,操作系统可以了解当前固件的版本,并决定是否需要进行更新。

3)与 FMP 协议结合:

ESRT 通常与 FMP(Firmware Management Protocol,固件管理协议)一起使用,为固件的发现和更新提供标准化的支持。

通过 FMP,ESRT 中描述的固件组件可以被下载、验证和更新。

三、如何更新Capsule

1、Memory Persistant Reset:

这是一种在计算机系统中用于恢复或重置内存状态的机制,尤其是在持久性内存(Persistent Memory)中。这种重置通常用于确保系统在发生故障或错误后能够恢复到已知的良好状态。

把capsule放到memory,然后重启系统。Memory里面的content是不变的,bios可以找到capsule (Memory reset / S3)

Protocol:

typedef struct \_EFI_FIRMWARE_MANAGEMENT_PROTOCOL {
EFI_FIRMWARE_MANAGEMENT_PROTOCOL_GET_IMAGE_INFO GetImageInfo;
EFI_FIRMWARE_MANAGEMENT_PROTOCOL_GET_IMAGE GetImage;
EFI_FIRMWARE_MANAGEMENT_PROTOCOL_SET_IMAGE SetImage;
EFI_FIRMWARE_MANAGEMENT_PROTOCOL_CHECK_IMAGE CheckImage;
EFI_FIRMWARE_MANAGEMENT_PROTOCOL_GET_PACKAGE_INFO GetPackageInfo;
EFI_FIRMWARE_MANAGEMENT_PROTOCOL_SET_PACKAGE_INFO SetPackageInfo;
} EFI_FIRMWARE_MANAGEMENT_PROTOCOL;

2、Capsule on disk:

这是UEFI(统一可扩展固件接口)规范中的一个概念,主要用于固件更新和管理。它指的是将固件更新包( Capsule)存储在磁盘上,以便在需要时进行读取和更新。主要功能:

1)存储:

胶囊可以存储在持久性存储设备上,如硬盘驱动器(HDD)、固态硬盘(SSD)或其他存储介质。这使得固件更新可以在系统启动后或运行时进行。

2)读取和应用:

系统可以在启动过程中或通过操作系统读取胶囊数据,执行固件更新。
更新过程通常包括验证胶囊的完整性和安全性,确保固件更新的有效性。

3)恢复和回滚:

在更新过程中,如果出现故障或错误,Capsule on Disk 可以支持固件的恢复和回滚操作。这意味着系统可以在固件更新失败时,恢复到先前的稳定版本。

4)安全性:

胶囊通常会包含数字签名和完整性校验,以防止未授权的更新和数据篡改。通过确保胶囊的合法性和完整性,Capsule on Disk 提高了系统的安全性。

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

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

相关文章

编写一个README.md

一、README 在下载github上的代码的时候,通常会有一个README.md文件让你了解该仓库的做了什么,他如何安装等内容。写好README.md是和他人交流的重要环节。 二、README.md的语法逻辑 a、预览模式 在Vscode中编辑README.md的时候可以打开预览模式&#xf…

Android简单控件实现简易计算器

学了一些Android的简单控件,用这些布局和控件,设计并实现一个简单计算器。 计算器的界面分为两大部分,第一部分是上方的计算表达式,既包括用户的按键输入,也包括计算结果 数字;第二部分是下方的各个按键&a…

开源生活-分布式管理

开源竞争(当自己没有办法彻底掌握一门技术的时候就彻底开源掉;培养出更多的依赖,让更多人帮助你完善你的技术,那么这不就是在砸罐子吗?一个行业里面总会有人先砸罐子的,你不如先砸罐子,还能听个…

责任链模式:解耦请求处理的设计模式

1. 引言 在复杂的软件系统中,请求的处理往往需要多个处理者共同参与。如何将这些处理者有效地串联起来,同时又不让请求的发起者直接依赖于具体的处理者,是一个值得关注的问题。责任链模式(Chain of Responsibility Pattern&#…

分布式数据库的发展历程与大规模应用的历史

分布式数据库技术经历了数十年的发展,从最初的理论研究到现今的广泛应用,逐渐成为应对海量数据和高并发需求的重要技术支撑。特别是在近20年里,分布式数据库的技术实现和应用场景不断丰富,已经成为互联网、大数据、云计算等现代产…

内容安全与系统构建加速,助力解决生成式AI时代的双重挑战

内容安全与系统构建加速,助力解决生成式AI时代的双重挑战 0. 前言1. PRCV 20241.1 大会简介1.2 生成式 Al 时代的内容安全与系统构建加速 2. 生成式 AI2.1 生成模型2.2 生成模型与判别模型的区别2.3 生成模型的发展 3. GAI 内容安全3.1 GAI 时代内容安全挑战3.2 图像…

Matplotlib可视化——三维图与莫比乌斯带可视化

实验名称 Matplotlib中的三维图绘制:莫比乌斯带的可视化 实验目标 三维的点和线三维轮廓图线框图和曲面图曲面三角形 举例:莫比乌斯带的可视化实验主要使用的Python库 名称版本简介Numpy1.19.5数组运算Matplotlib3.3.4数据可视化实验适用的对象 学习对象:本科学生、研究生…

clickhouse最佳实践(一):clickhouse千亿级日志系统单机到集群架构演进历程

clickhouse千亿级日志系统单机到集群架构演进历程 1. 初始阶段:单机部署2. 使用代理层3. 集群设计4. 数据迁移5. 监控和维护6.集群横向扩展 最佳实践系列文章持续完善中, 记录了业务系统从碰到瓶颈到迭代的过程 1. 初始阶段:单机部署 针对Cl…

ZeroNL2SQL:零样本 NL2SQL

发布于:2024 年 10 月 30 日 星期三 #RAG #NL2SQL # Zero-Shot 自然语言到 SQL(NL2SQL)的转换是一个重要的研究领域,它允许非技术用户轻松访问和分析数据,在商业智能、数据分析等领域具有广泛的应用前景。然而&#x…

前端部署指南:手把手教你部署 Vue 项目

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue-部署项目 前言 嗨喽伙伴们大家好,我是依旧青山。作为一名前端开发工程师&#xff…

usb外设枚举不到怎么查

明明内核配置了cdc_acm,dmesg | grep acm也有,lsusb却看不到设备。 排查思路: 主机端: 1、设备树是否使能。 2、主模式和从模式是否配置正确。 设备端: 设备端有条件的话可以插入其它设备看,或者复位…

Vivo开奖了,劝退价。。

vivo 也开奖了,不过有小伙伴反馈是个劝退价,甚至不如隔壁的 oppo,要说这两家也是渊源颇深,一家是绿厂,一家是蓝厂,高管也都是早期步步高出来的。 给大家盘一下开奖的信息,方便大家横向做个对比&…

Python 的 Pygame 库来开发一个游戏

import pygame import random# 初始化 Pygame pygame.init()# 设置屏幕大小 screen_width 800 screen_height 600 screen pygame.display.set_mode((screen_width, screen_height))# 设置标题 pygame.display.set_caption("飞机大战")# 加载图片 player_img pyga…

WPF+MVVM案例实战(八)- 自定义开关控件封装实现

文章目录 1、案例运行效果2、项目准备2、功能实现1、控件模板实现2、控件封装1、目录与文件创建2、各文件功能实现3、开关界面与主窗体菜单实现1、开关界面实现2、主窗体菜单实现4、源代码获取1、案例运行效果 2、项目准备 打开项目 Wpf_Examples,新建ToggleButtonWindow.xma…

【深度学习中的注意力机制10】11种主流注意力机制112个创新研究paper+代码——交叉注意力(Cross-Attention)

【深度学习中的注意力机制10】11种主流注意力机制112个创新研究paper代码——交叉注意力(Cross-Attention) 【深度学习中的注意力机制10】11种主流注意力机制112个创新研究paper代码——交叉注意力(Cross-Attention) 文章目录 【…

安宝特案例 | AR技术在院外心脏骤停急救中的革命性应用

00 案例背景 在院外心脏骤停 (OHCA) 的突发救援中,时间与效率直接决定着患者的生命。传统急救模式下,急救人员常通过视频或电话与医院医生进行沟通,以描述患者状况并依照指令行动。然而,这种信息传递方式往往因信息不完整或传递延…

测试自动化工具的横向对比

MicroAgent:这个AI智能体一键写代码并且自动测试!它比 Aider 更好吗? 待研究:https://blog.csdn.net/gitblog_00054/article/details/139541862 playright:这是一个python驱动的自动化框架,部署简单&#…

第八天: C语言深度探索:指针与函数的奥秘

1 字符指针与字符串处理 字符指针与数组的关系 在C语言中,字符串可以被视为字符数组。数组名可以看作是指向其第一个元素的指针。因此,我们可以使用相同类型的指针来访问数组中的每个元素。这种对应关系使得字符指针在处理字符串时显得特别方便。 c …

C++初阶——类与对象(上篇)

一、写在前面 类与对象是C不同于C语言的一个板块,内容很多,笔者把这部分分为三篇博客来讲解,希望能够帮助各位读者更容易地理解这些知识点。弄清楚这一部分之后,C就算是成功入门了。 二、面向过程和面向对象 C语言就是典型的面向…

Java如何实现PDF转高质量图片

大家好,我是 V 哥。在Java中,将PDF文件转换为高质量的图片可以使用不同的库,其中最常用的库之一是 Apache PDFBox。通过该库,你可以读取PDF文件,并将每一页转换为图像文件。为了提高图像的质量,你可以指定分…