In this blogpost I will show you how to upgrade a Windows 10 virtual machine running legacy BIOS to UEFI, and so making it ready to upgrade to Windows 11.
First of all let me show you the current setup of the virtual machine:

A lovely Windows 10 virtual machine running legacy BIOS and to top it off is has an IDE CD-ROM and Disk 😉 In Windows to disk layout looks like this:

Let’s do a disk speed test to get a “before” number 😉

Before you continue make sure that, in Windows, all VirtIO drivers are installed. As when missing the drivers Windows will not boot correctly from a SCSI drive (BSOD). And as always, MAKE SURE YOU HAVE A BACKUP 😉

Now we need to convert the disk. As you can see on two screenshots above I’m using MBR partition style, this means a basic disk. So first start by converting the basic disk to a dynamic disk. Open an elevated command prompt and type: mbr2gpt /validate /allowfullos

Validation completed successfully so we can continue to actually convert the disk. Type: mbr2gpt /convert /allowfullos

When done, look into disk management and the partition style is changed to GPT.

Great, now that the conversion is done we need to shutdown Windows and convert the Virtual Machine from BIOS to UEFI. This can’t be done via Prism (nor Element nor Central) but we need to do this via acli on the CVM. Open an SSH session to the CVM and type: acli
When in the Acropolis Command Line Interface (acli) type: vm.update <Your VM Name> uefi_boot-true
When done we can “convert” the disk from IDE to SCSI and the CD-ROM from IDE to SATA. There is no actual conversion available so we need to clone the IDE disk to a new SCSI disk. Type: vm.disk_create <Your VM Name> clone_from_vmdisk=vm:<Your VM Name>:ide.1 bus=scsi
We the clone is done we can remove the old IDE disk. Type: vm.disk_delete <Your VM Name> disk_addr=ide.1
Now for the CDROM it is easy. Remove it and recreate it 😉 Type: vm.disk_delete <Your VM Name> disk_addr=ide.0
And then: vm.disk_create <Your VM Name> cdrom=true bus=sata empty=true
This is what is looks like:

In Prism it will look like this:

Now we can start the virtual machine. When back in windows lets do a quick speed test of the disk:

As you can see the Virtual Machine got some extra speed as well (and it is massive) 😉 That is why you should always avoid using the IDE bus type.
P.s. If you reading this because you also want to upgrade to Windows 11 make sure you add the virtual tpm as well. In the ssh session type: vm.update <Your VM Name> virtual_tpm=true