使用QEMU启动OVMF固件时UEFI Shell无法加载Udp4Dxe.efi
解决加载Udp4Dxe.efi时找不到EFI_RNG_PROTOCOL的问题
问题原因
Udp4Dxe驱动依赖EFI_RNG_PROTOCOL协议,该协议由RNG(随机数生成)驱动提供。你的目标UEFI环境中未加载对应的RNG驱动,而EDK2模拟器默认集成了该驱动,因此模拟器中可正常加载。
解决方案
手动加载RNG驱动:先在UEFI Shell中加载
RngDxe.efi(该驱动通常位于EDK2的CryptoPkg/RngDxe或MdeModulePkg/RngDxe目录下),执行命令:load RngDxe.efi确认加载成功后,再执行
load Udp4Dxe.efi。调整固件驱动加载顺序:如果是自定义构建的UEFI固件,将
RngDxe添加到DXE阶段的驱动列表中,让固件开机时自动加载RNG驱动,避免手动操作。验证协议状态:加载RNG驱动后,可通过UEFI Shell命令确认协议是否存在:
- 用
drivers命令查看已加载的驱动列表,确认RngDxe在列; - 用
protocols命令搜索GUID5B1B31A1-9562-11D2-8E3F-00A0C969723B,确认EFI_RNG_PROTOCOL已安装。
- 用
错误日志
FSOpen: Open '\net\Udp4Dxe.efi' Success FSOpen: Open '\net\Udp4Dxe.efi' Success [Security] 3rd party image[0] can be loaded after EndOfDxe: PciRoot(0x0)/Pci(0x1,0x1)/Ata(Primary,Master,0x0)/HD(1,MBR,0xBE1AFDFA,0x3F,0xFBFC1)/\net\Udp4Dxe.efi. None of Tcg2Protocol/CcMeasurementProtocol is installed. InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B 3E154040 Loading driver at 0x0003E127000 EntryPoint=0x0003E12E5C5 Udp4Dxe.efi InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF 3E154E98 ProtectUefiImageCommon - 0x3E154040 - 0x000000003E127000 - 0x0000000000009840 Failed to locate EFI_RNG_PROTOCOL: Not Found ASSERT_EFI_ERROR (Status = Not Found) ASSERT [Udp4Dxe] /home/uefi/edk2/NetworkPkg/Library/DxeNetLib/DxeNetLib.c(938): !(((RETURN_STATUS)(Status)) >= 0x8000000000000000ULL)
内容的提问来源于stack exchange,提问作者Tuesday
相关产品推荐
相关产品推荐

