断开 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 -b和devices -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查看(这需要可写的文件系统)