从 WinPE 或 Recovery CMD 加载驱动程序
在某些情况下,要使 Windows 安装程序或 Windows 恢复环境 (WinRE) 看到计算机的本地磁盘,您必须加载其他磁盘控制器驱动程序。这种情况通常发生在具有 NVMe SSD 控制器的计算机上。在我的示例中,将虚拟机从 VMware ESXi 迁移到 Proxmox 后,客户 Windows 操作系统缺少应提供对虚拟硬盘控制器的访问的 VirtIO 驱动程序。
因此,在虚拟机中启动 Windows 客户机时出现 0x0000007B (INACESSIBLE_BOOT_DEVICE) 错误。


在本文中,我们将了解如何在 WinPE 或 Windows 恢复环境中加载磁盘控制器驱动程序。看到本地硬盘后,您可以将控制器驱动程序添加到该磁盘上的脱机 Windows 映像。
一般来说,在执行 P2V 或 V2V 迁移之前,必须将支持新虚拟硬件的必要驱动程序注入到 Windows 映像中以避免此类问题。例如,可以通过在开始将 VM 迁移到 Proxmox 之前在来宾 Windows 中安装 VirtIO 驱动程序来完成此操作。
下载必要的驱动程序支持所需的硬盘驱动器控制器。对于 Proxmox,请下载带有适用于 Windows 的 VirtIO 驱动程序的 ISO 映像。如果您使用的是物理计算机,请将 ISO 映像安装到另一台计算机上,并将驱动程序文件夹复制到外部 USB 闪存驱动器。
使用恢复磁盘或 Windows 安装介质将计算机启动到恢复环境(WinRE 或 WinPE)。打开命令提示符。运行 diskpart 命令以确保 WinPE 看不到本地驱动器。
diskpart
磁盘部分>list disk
There are no fixed disks to show.


安装之前准备好的驱动程序介质(USB 闪存驱动器或 ISO 映像)。
如果您使用的是 Ventoy 多重启动 USB 驱动器,则可以使用注入插件将必要的驱动程序安装到 WinPE 环境:
{
"injection": [
{
"parent": "/ISO/win2k22.iso",
"archive": "/drivers/virtio-win-drivers.zip"
}
]
}
运行以下命令找出分配给连接媒体的驱动器号:
wmic logicaldisk get caption, volumename


在我的示例中,这是一个带有适用于 Windows 的 VirtIO 驱动程序的映像,它被分配了驱动器号D:。使用 drvload.exe 命令在 WinPE 环境中加载驱动程序。我想加载适用于 Windows Server 2025 的 VirtIO SCSI 驱动程序。指定介质上驱动程序 INF 文件的完整路径:
drvload d:\vioscsi\2k25\amd64\vioscsi.inf
参见:如何修复打开 WinPE 选项卡时 MDT 部署工作台崩溃的问题
DrvLoad: Successfully loaded d:\vioscsi\2k25\amd64\vioscsi.inf


加载驱动时,可能会出现错误:
DrvLoad: Unable to load D:\...\xxxxx.inf (Error 0x80070002)
如果发生这种情况,请确保您正在加载兼容的驱动程序。另外,检查驱动程序目录中除*.INF 之外的其他文件(必须至少有*.CAT 和*.SYS 文件)。


确保 SCSI 适配器 VirtIO 驱动程序已成功加载到 WinPE 环境内存中:
pnputil /enum-drivers


使用diskpart验证本地磁盘现在是否可见且可访问。
现在,您可以将磁盘驱动程序集成到脱机 Windows 映像中(在本例中,它存储在 C: 驱动器上)。您只能添加一个驱动程序:
DISM /Image:C:\ /Add-Driver /driver:D:\vioscsi\2k25\amd64\vioscsi.inf
或者递归安装指定文件夹中的所有驱动程序::
DISM /Image:C:\ /Add-Driver /driver:D:\ /recurse
要从 WinPE 环境重新启动计算机,请运行
wpeutil reboot
来宾 Windows 现在应该正常启动,并且您应该在设备管理器中看到 Red Hat VirtIO SCSI 磁盘设备。


