shim:探索UEFI第一阶段引导加载器的设计与实现

需积分: 5 2 下载量 76 浏览量 更新于2024-10-29 1 收藏 2.12MB ZIP 举报
资源摘要信息:"shim:UEFI 垫片加载器" 标题解析: 标题中的"shim"指的是UEFI(统一可扩展固件接口)环境下的一个垫片加载器,名为"shim"。该加载器的设计目的和作用是在UEFI安全启动的环境下加载并执行其他应用程序。"UEFI垫片加载器"则强调了其作为安全启动过程中的一个中介或过渡工具的角色。 描述解析: 1. shim是一个简单的EFI应用程序:EFI(可扩展固件接口)是一种现代固件接口标准,它定义了操作系统和系统固件之间的软件接口,shim作为其中的一个应用程序,其目的是为了辅助其他程序的加载和执行。 2. 尝试通过标准EFI LoadImage()和StartImage()调用来执行:这是UEFI环境下的标准方式来加载和启动一个UEFI应用程序,类似于传统BIOS环境下的int 13h中断调用。 3. 若标准方式失败,则内置证书验证二进制文件:这一过程是指在UEFI安全启动模式下,系统要求所有被启动的代码或固件必须被验证过才能执行。若目标应用程序没有被预设的密钥签名,则不能被执行。shim在这里充当一个内置证书验证工具的角色,验证目标应用程序是否被授权。 4. 重新定位并执行二进制:一旦验证通过,shim会重新定位到正确的内存位置,然后执行该二进制程序。 5. 安装一个协议:shim除了执行加载任务之外,还会安装一个协议,这个协议允许第二阶段的引导加载程序执行相似的二进制验证。 6. 协议具有GUID,并提供单个入口点:GUID(全局唯一标识符)用于在UEFI环境中唯一标识协议,而单个入口点则提供了接口标准,以供其他程序或服务调用。 7. 在64位系统上使用SysV ABI而非MSABI:这是在提及调用约定时对不同操作系统平台的考虑。SysV ABI是UNIX系统上普遍采用的调用约定,而MSABI则是在Microsoft的Windows平台上的调用约定。shim在64位系统上要求使用SysV ABI调用,以确保兼容性和稳定性。 8. 在支持TPM的系统上,shim将使用它正在加载的目标的摘要扩展各种PCR:TPM(可信平台模块)是一种安全芯片,它用于保护硬件通过加密密钥,软件和用户凭证。PCR(平台配置寄存器)是TPM内部的一组寄存器,用于记录启动过程中的重要信息。shim在有TPM支持的系统上,会将正在加载的目标摘要信息扩展到PCR中,以保证系统启动过程的安全性。 标签解析: 标签"C"表明shim可能是用C语言编写的,C语言在嵌入式系统和系统软件开发中非常常见,因为它提供了接近硬件操作的能力,同时也允许开发人员进行高效的资源管理。 压缩包子文件的文件名称列表解析: "shim-main"表明压缩包中应该包含名为shim-main的文件,这很可能是shim的主执行文件或核心模块,用于实现上述描述的功能。 综合以上信息,shim作为一个UEFI垫片加载器,在确保计算机启动过程安全方面发挥着重要作用。通过提供内置证书验证功能和协议安装能力,它帮助系统安全地加载和执行第二阶段引导加载程序。随着UEFI和TPM技术的普及,shim这样的工具在维护系统安全和提升用户体验方面变得越来越重要。