In the past, I’ve had difficulty creating Windows virtual machines with Vultr and other VPS providers which require the creation of a custom ISO that includes the virtio drivers. To remedy this, I decided to write a how-to on the process, so I’d be able to follow it again in the future. Hopefully, others will find this useful as well.
This will be the first in a two-part series and will cover creating and uploading the custom ISO. The following post will cover using that ISO to create a VM.
- Base Windows ISO
- ImgBurn (or similar)
- Virtio drivers
Acquire Your Base ISO
To create a custom ISO you’ll need a vanilla version of the Windows OS you are planning to install. At time of writing, you can get most ISOs for free from Microsoft, and either use the trial version for a short while or purchase your own licence. ISOs can be downloaded here:
- Evaluation Centre: https://www.microsoft.com/en-us/evalcenter/
- Windows Server: https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2016
- Windows 10: https://www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise
Microsoft will ask you for your details before allowing you to download any of the above ISOs. Feel free to make something amusing up, and use a burner email service such as below so you don’t receive their spam:
Download the Latest Virtio Drivers
The drivers themselves can be found in a number of places on the Internet, but the best place I’ve found has been the Fedora Project website: https://docs.fedoraproject.org/quick-docs/en-US/creating-windows-virtual-machines-using-virtio-drivers.html
Download and Install ImgBurn
ImgBurn is required to pack your drivers and ISO into a single ISO package and is available here: http://www.imgburn.com/index.php?act=download
Putting It All Together
Once you have all of the various parts downloaded (and installed where necessary), you’ll need to perform the following steps to eventually end up with your custom ISO with virtio drivers. The below assumes you have saved the necessary components to a folder called customiso.
- Extract the contents of the Windows ISO you downloaded to \customiso\Windows
- Extract the contents of the virtio ISO you downloaded to \customiso\Windows\virtio
- Open ImgBurn
- Click Create image file from files/folders:
- Add your customiso folder as the Source:
- Add your output file path and filename:
- Set the options tab (on the right) as below:
- Set the labels tab as below:
- Set the Advanced/Bootable Disc tab as below (Boot Image should be in the folder \customiso\Windows\boot\etfsboot):
All other settings can be left as default
- Click Build:
Once the ImgBurn process completes you will have your very own custom Windows ISO, complete with virtio drivers.
Upload to Vultr
There are a few ways to get your new ISO into your Vultr account:
- Dropbox: this is probably the easiest option, but your ISO will likely be too large for the 2GB limit most accounts start with. If you already have more, great, otherwise you’ll need to sign up for an Enterprise account (don’t worry, you can always sign up and get 1 month free, just make sure you cancel it before the month ends)
- Amazon S3 or Google Cloud Compute: I’ve never really played around with either of these options, but I’m guessing it would be quite similar to any other web server
- Vultr web server: I already had a web server up and running so this was the easiest option for me. I used scp to upload the ISO to the /var/www/html folder of a WordPress instance (probably don’t do this, it would be better to spin up a temporary web server somewhere and upload to that): scp -r Windows10Entprise_vultr.iso [user@destination_ip]:/var/www/html
- Once done, browse to the ISO section of the Vultr Servers page:
- Click Add ISO
- Enter the location of your ISO (if it’s in the same location I put it in above, then the URL will be similar to below):
- Click Upload
Once your upload is complete you can proceed to create your custom VM.