固件更新对于我们来说都不陌生。那么什么是UEFI Capsule Update呢?Capsule,顾名思义,是“胶囊”的意思,所以UEFI Capsule Update可以理解为胶囊式固件更新。我们今天来谈谈UEFI Capsule Update 的实现过程。
UEFI规范定义了Firmware Management协议(FMP)、capsule格式以及EFI System Resource Table (ESRT) 用于支持系统和设备固件更新。使用FMP协议可以获取固件信息并且把ESRT报告给OS。 出于安全性考虑,Flash设备在系统启动时是锁住的,所以在操作系统中直接更新Flash是行不通的。一个可行的办法是操作系统把待更新的固件信息发送至系统固件,在下一次启动过程中,系统在Flash设备上锁前更新固件。这个待更新的固件就被称作“capsule”。需要注意的是,capsule不仅仅用来做固件更新,还用于OS传递信息至固件。UEFI规范定义了一些capsule services,比如,操作系统调用UpdateCapsule()传递capsule image至固件,固件根据capsule flag决定立即处理capsule还是重启后再处理。总结一下,胶囊式固件更新是在编译阶段把到更新的固件封装成capsule,由OS传递capsule image至系统固件,然后由系统固件来处置待更新的capsule。 |