diff --git a/content/blog/install-virtio-drivers-from-windows-recovery.md b/content/blog/install-virtio-drivers-from-windows-recovery.md new file mode 100644 index 0000000..3e86d7f --- /dev/null +++ b/content/blog/install-virtio-drivers-from-windows-recovery.md @@ -0,0 +1,61 @@ +--- +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 +prepardness! + +# 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 +summon a command prompt. + +# 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) diff --git a/static/images/virtio-drivers/device-manager.png b/static/images/virtio-drivers/device-manager.png new file mode 100644 index 0000000..4e3a860 Binary files /dev/null and b/static/images/virtio-drivers/device-manager.png differ diff --git a/static/images/virtio-drivers/diskpart-disks.png b/static/images/virtio-drivers/diskpart-disks.png new file mode 100644 index 0000000..6d2ae17 Binary files /dev/null and b/static/images/virtio-drivers/diskpart-disks.png differ diff --git a/static/images/virtio-drivers/diskpart-volumes.png b/static/images/virtio-drivers/diskpart-volumes.png new file mode 100644 index 0000000..fa2b5e4 Binary files /dev/null and b/static/images/virtio-drivers/diskpart-volumes.png differ diff --git a/static/images/virtio-drivers/dism.png b/static/images/virtio-drivers/dism.png new file mode 100644 index 0000000..a6f1fa5 Binary files /dev/null and b/static/images/virtio-drivers/dism.png differ diff --git a/static/images/virtio-drivers/driver-folder.png b/static/images/virtio-drivers/driver-folder.png new file mode 100644 index 0000000..83cd6bb Binary files /dev/null and b/static/images/virtio-drivers/driver-folder.png differ diff --git a/static/images/virtio-drivers/drvload.png b/static/images/virtio-drivers/drvload.png new file mode 100644 index 0000000..967e2e0 Binary files /dev/null and b/static/images/virtio-drivers/drvload.png differ diff --git a/static/images/virtio-drivers/e-drive.png b/static/images/virtio-drivers/e-drive.png new file mode 100644 index 0000000..fe149f2 Binary files /dev/null and b/static/images/virtio-drivers/e-drive.png differ diff --git a/static/images/virtio-drivers/iso-selection.png b/static/images/virtio-drivers/iso-selection.png new file mode 100644 index 0000000..21bad9a Binary files /dev/null and b/static/images/virtio-drivers/iso-selection.png differ diff --git a/static/images/virtio-drivers/virtio-contents.png b/static/images/virtio-drivers/virtio-contents.png new file mode 100644 index 0000000..3ecbc91 Binary files /dev/null and b/static/images/virtio-drivers/virtio-contents.png differ