Repairing a Windows VPS After Installing Driver Updates
Microsoft recently released drivers via Windows Update that can prevent Vultr VPS instances running Windows from booting properly. These drivers are called:
- SUSE - Other hardware - SUSE Network Driver for Windows
- SUSE - Storage Controller - SUSE Block Driver for Windows
If these drivers are installed, the server will not boot to Windows normally, and you'll instead see the Windows Recovery Environment in the web console. These steps will guide you through the process of removing these drivers.
Access server drive from recovery prompt
In the Windows Recovery Environment, check whether or not your server's C:\
drive was detected. If the drive was not detected, you'll need to load the VirtIO drivers from an ISO. To check that the drive was detected:
- Pick a keyboard layout. Choose "US".
- Click "Troubleshoot" -> "Advanced Options" -> "Command Prompt".
- Run the command
diskpart
. - In DiskPart, run
list volume
, thenexit
.
The list volume
output will show the detected volumes. Your servers C:\
is normally E:\
in Windows Recovery Environment. You're looking for a volume typically named "OS" with a size that matches the size of the VPS instance. If your drive was detected, skip to "Remove offending SUSE drivers", otherwise continue reading.
Load VirtIO drivers
Upload and mount the VirtIO driver ISO to the VM. You can upload the drivers to your Vultr account using the following URL. Then reboot the VM, and wait for it to enter the Windows Recovery Environment. You'll see a screen asking you to pick a keyboard layout. Choose "US", then click "Troubleshoot" -> "Advanced Options" -> "Command Prompt".
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
Open the command line and navigate to the VirtIO ISO (which is most likely D:\
). Load the VirtIO storage drivers into the recovery environment with these commands:
drvload D:\vioscsik12R2\amd64\vioscsi.inf
drvload D:\viostork12R2\amd64\viostor.inf
Run the command diskpart
, then type list volume
, then exit
. As mentioned earlier, you're looking for the "OS" volume that makes your VPS instance size, and is typically labeled E:\
.
Remove offending SUSE drivers
Now that you can access the server disk, it's time to remove the offending SUSE drivers.
Run this command:
dism /get-drivers /image:e:\
If your VPS instance's system volume has a letter other than E:\
, use that instead. You're looking for any drivers where the provider name is "SUSE". They'll have names matching the pattern oemX.inf
. Use this command to remove the two offending drivers:
dism /image:e:\ /remove-driver /driver:oem9.inf /driver:oem10.inf
At this point, you should be able to exit the command line. Click "Continue" to reboot the VPS instance, and it should reboot normally into Windows.