hull-au/content/blog/install-virtio-drivers-from-windows-recovery.md

57 lines
2.7 KiB
Markdown
Raw Permalink Normal View History

---
title: "Installing VirtIO (or any driver) from Windows Recovery"
date: 2024-04-23T20:52:20.7148891+08:00
draft: false
---
Today I was migrating an older Windows VM running under VMware to Proxmox and
encountered a frustrating sudden roadblock: no PVSCSI drivers! My newer builds
all use VMware PVSCSI, but this VM was an older build still using LSI SAS.
Now staring at the `INACCESSIBLE_BOOT_DEVICE` BSOD, your options are abort or
press ahead. In this article, we charge forward and overcome our lack of
2024-04-23 15:08:03 +00:00
preparedness!
2024-04-24 16:26:07 +00:00
![Screenshot of INACCESSIBLE_BOOT_DEVICE BSOD](/images/virtio-drivers/bsod.png)
# Enter Windows Recovery
Reset the VM a few times while at the Windows loading screen and it'll dump you
into the recovery environment. From here you can perform an advanced repair and
2024-04-24 16:26:07 +00:00
summon a command prompt. It typically takes 2 failed boots to trigger recovery.
# Mount an ISO Containing Drivers
In this example, I've neglected to install the VirtIO SCSI driver so I'll mount
the VirtIO ISO for Windows. You can grab it from [here](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso)
![Screenshot of CD-ROM config with VirtIO ISO mounted](/images/virtio-drivers/iso-selection.png)
Switch to your disc in the Command Prompt using its drive letter (usually `D:`)
![Screenshot showing the directory listing of the VirtIO driver disc](/images/virtio-drivers/virtio-contents.png)
# Load the SCSI Driver
Find the driver you wish to load. (`vioscsi.inf` in my case)
![Screenshot showing the folder containing the VirtIO SCSI driver](/images/virtio-drivers/driver-folder.png)
Load the driver by running `drvload vioscsi.inf`
![Screenshot demonstrating drvload](/images/virtio-drivers/drvload.png)
# List Disks
Use `diskpart` to list your disks to confirm they're now visible
![Screenshot of diskpart showing the results of a successful list disk operation](/images/virtio-drivers/diskpart-disks.png)
Use `list volume` to see what drive letter your Windows drive got assigned
![Screenshot of diskpart showing the results of a successful list volume operation](/images/virtio-drivers/diskpart-volumes.png)
My Windows partition was now visible on drive letter `E:`
![Screenshot showing the contents of my Windows partition](/images/virtio-drivers/e-drive.png)
# Add the Driver to Windows
Use `dism` to insert the driver into your Windows install
```
dism /Image:E:\ /Add-Driver:D:\vioscsi\2k19\amd64\vioscsi.inf
```
![Screenshot of dism adding the vioscsi driver to Windows](/images/virtio-drivers/dism.png)
# Success!
Reboot into Windows and enjoy your new SCSI driver.
![Screenshot of device manager showing the VirtIO SCSI controller](/images/virtio-drivers/device-manager.png)