在某些情况下,要使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磁盘设备。