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.
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
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
Run the next few steps using the following options
This sets the Recovery and Transformation Options
Convert GPT into MBR and exit
Sort MBR partition (This step isn't always necessary but it was the only way this would work in my environment)
Print the MBR table
Write the MBR partition table to disk and exit
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,
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 OS drive, run dir to list contents
To create the boot files run;
Fix the MBR
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