There is certain situations where you need to use Legacy BIOS rather than modern UEFI, one example is certain scenarios within disaster recovery in public cloud. 

This of course causes huge pain in existing production workloads, this guide uses a combination of Linux and Windows to convert the GPT disk to MBR and UEFI to BIOS WITHOUT any data loss within VMware.

This process has been successfully tested within VMware on Server 2016 and 2019, please be aware that if your GPT drive is over 2TB do not use this option as it will not work. This guide assumes you are using GPT with UEFI rather than an MBR drive. 

Firstly as within anything like this, it is important to ensure a full backup using your chosen backup software and the restore process has been tested.

It is also highly recommended you test this process on a test VM that you have cloned or restored from a backup that originated from the production machine.

Shutdown VM

Snapshot in VMware (Important and easy to reinstate in the event of an issue)

Edit VM settings, VM options > Boot options > change Firmware from EFI to BIOS click OK

Tick force BIOS setup (This step isn't necessary but makes booting to the ISO easier)

Use your preferred Linux distro that supports the commands mentioned below or as per this guide download the free system rescue ISO from https://www.system-rescue.org/Download/ which is based on Arch Linux.

Using the VMware console, start the VM, if the option is set above it will take you into the BIOS, change the boot order so that CD-ROM is above the Hard Drive

Also before restarting ensure the downloaded ISO is mapped through correctly and set to connect at power on, i.e.

 

Boot up VM, attach the ISO and select the default option

 

Run the following fdisk command to list partitions

fdisk -l

This will show you your disks and partitions, the device name shown is /dev/sda which will be used in the next step

 

 Now you have the disk, run the 

gdisk /dev/sda

Run the next few steps using the following options

r

This sets the Recovery and Transformation Options

g

Convert GPT into MBR and exit

 

s

Sort MBR partition (This step isn't always necessary but it was the only way this would work in my environment)

 

p

Print the MBR table

 

w

Write the MBR partition table to disk and exit

 

y

Finalise and Exit

This should look like the following,

Once you have exited gdisk you can now run fdisk -l again which will show you the partitions now converted, i.e.

 

With the VM still powered on, switch the ISO from the system rescue to the original windows ISO of the operating system in question then restart the guest VM using the console controls, it should now boot up in windows, accept the default language options then click next

Select Repair your computer on the second screen, then Troubleshoot option then command prompt

Within cmd, type

diskpart
list disk

This will list the disks, select your disk using

select disk <boot disk>

With the disk chosen you now need to list the partitions,

list partition

With the partitions listed, select your OS drive, this should primary and match the size of your original OS drive size 

select partition <boot partition>
active 
exit 


Switch to boot drive (using C:) (this could be temporarily on another drive and not necessarily C), this can be shown in diskpart using list volume, this is currently shown below as my D drive
If you switch to C and it says the volume does not contain a recognized file system, try D or E


Once you have changed to this drive, d: just to verify it is the root of your C drive, run dir to list contents
To create the boot files run;

BCDBOOT D:\Windows

 Fix the MBR

bootrec /fixmbr

Disconnect the ISO and reboot the VM

All being well, the VM should boot up successfully.

Check the partition in disk manager and it should now show MBR rather than GPT