跳转至

断开 EFI 驱动程序

这些笔记可能有助于调试可能由 EFI 驱动程序引起的问题

  • 创建一个带有 FAT32 文件系统的磁盘镜像,其中包含 UEFI full shell,保存为 \EFI\Boot\BootX64.efi
  • 以及一些用于测试该场景的东西 (我们假设是 ipxe.efi,但请根据你的场景更改),把它保存为磁盘上的 /ipxe.efi
  • 用刚创建的磁盘镜像启动有问题的硬件
  • 你应该会进入 UEFI shell 提示符。然后输入 fs0:ls,你应该能看到你的 FAT 文件系统和 ipxe.efi
  • 如果看不到,使用 map 查找不同的 fsX: 并逐个尝试,直到找到你的文件系统。
  • 通过运行 ipxe.efi 重现问题

再次进入 shell

  • 使用 drivers -bdevices -b 查看句柄列表,其中附有某种文字描述

-b 用于每次显示一屏文本

  • 找到某个看似可疑的项,尝试运行 disconnect <handle>
  • 其中 <handle> 是该句柄的 2 位或 3 位十六进制值
  • 然后重试运行 ipxe.efi(从 shell 中运行,无需先重启)

以 Hyper-V 为例,我们可能会寻找类似:"Hyper-V"、"VMBus"、"VmbusDxe"、"NetVSC"、"RNDIS" 等

然后查看 devices 中它连接的位置,并尝试从那里断开它

长输出时 -b 的替代方案

  • 大多数 efi shell 命令支持 -b 以获得分页输出
  • 大多数情况下,输出也会在任何已连接的串口上提供。
  • 或者把输出通过管道写入文件,例如 drivers > drivers.txt,然后使用编辑器 edit drivers.txt 查看(这需要可写的文件系统)