从Winpe或Recovery CMD加载驱动程序

在某些情况下,要使Windows安装程序或Windows恢复环境(WINRE)请参阅计算机的本地磁盘,您必须加载其他磁盘控制器驱动程序。这通常发生在具有NVME SSD控制器的计算机上。在我的示例中,在将虚拟机从VMware ESXI迁移到Proxmox之后,事实证明,Guest Windows OS缺少应访问虚拟硬盘控制器的Virtio驱动程序。

结果,在虚拟机中启动Windows Guest时,发生0x0000007b(inacessible_boot_device)错误。

在本文中,我们将研究如何将磁盘控制器驱动程序加载到Winpe或Windows恢复环境中。看到本地硬盘后,您可以将控制器驱动程序添加到该磁盘上的离线Windows映像中。

通常,在执行P2V或V2V迁移之前,必须将支持新虚拟硬件的必要驱动程序注入Windows映像,以避免此类问题。例如,这可以通过在开始VM迁移到Proxmox之前将Virtio驱动程序安装在来宾窗口中来完成。

下载必要的驱动程序支持所需的硬盘控制器。对于Proxmox,请下载带有Windows的Virtio驱动程序的ISO映像。如果您正在使用物理计算机工作,请将ISO映像安装在另一台计算机上,然后将驱动程序文件夹复制到外部USB闪存驱动器。

使用恢复磁盘或Windows安装媒体将计算机启动到恢复环境(WINRE或WINPE)。打开命令提示。运行DiskPart命令,以确保Winpe看不到本地驱动器。

diskpart

磁盘>list disk

建议阅读:打开Winpe选项卡时,如何修复MDT部署工作台崩溃

There are no fixed disks to show.

安装先前准备好的驱动器媒体(USB闪存驱动器或ISO映像)。

如果您使用的是Ventoy Multiboot 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

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

现在,访客窗口应正常启动,您应该在设备管理器中看到Red Hatio Virtio SCSI磁盘设备。