Converting a window 10 guest from Bios to Secure Boot.

Microsoft provides a tool to do this in versions after release 2004
This works in 21H1 with no problems.

I did this in VirtualBox - you cannot use CloneVDI on a secure boot VDI - I don’t know why but you cannot Secure Boot will not allow it to boot.

Before you do any of this copy your VDI to another location just in case things go wrong. I took 5 tries to figure this out - CloneVDI 4.04 kept breaking things.

Rules of the convert:

  1. The C: drive has to be smaller than 60gb or the program cannot do the conversion.
    If it is larger - Use need to shrink it to less than 60gb. What I did is create another vdi added it to the virtual machine and formatted in Windows 10 as NTFS and copied a lot of data (30 gb) to the new drive and deleted it from the C: drive.
    If you use the fast shutdown - this will not work - reboot but do not allow windows to restart. If your shutdown is hard shutdown all is ok - I recommend this for all virtual machines.
    If you had to shrink the Windows C: drive - now you must boot a recovery linux in the VirtualBox CD drive and use gparted to shrink the NTFS to below 60 gb.
    Eject the CD and reboot.

  2. Open Command Prompt in administrator mode.
    mft2gpt /convert /allowfullos
    don’t worry about fixing the last warnings - I didn’t have any issues
    and shutdown (cannot be the fast shutdown - if it is do the reboot and prevent restart.

  3. change the VirtualBox config > system and check efi. and reboot.

  4. if all is well - do the hard shutdown again.

  5. Now we will make the C: drive large enough for Windows 11.
    in a Linux terminal or a Windows Command Prompt
    cd to where the windows 10 vdi is.
    run this command - this is to make it 90gb in size (change win10.vdi to your name)
    VBoxManage modifyhd --resize 90000 win10.vdi

  6. Now we need to expand the C: drive
    so we boot the Linux recover disk in the CD for the Windows 10 Virtual Machine
    run parted (if it complains do the fix button)
    move the recovery partition to the end of the drive - (just 0 the after field)
    do the check mark to force the move
    now move the boot partition to the end of the drive - (just 0 the after field)
    do the check mark to force the move
    now resize the C partition (make the size a really big number 9999999 and enter (it will use all the rest of the drive)
    do the check mark to do the resize
    shutdown and eject the CD from the virtual machine

  7. restart windows virtual machine and allow the chkdsk to proceed.

  8. if you move things to a second drive - move them back. you can shut down and remove the temporary drive from the virtual machine and the host.

You now have a windows 10 that can be updated to 11 (when VirtualBox 7 comes out)

Found the reason that CloneVDI failed - if you see an unknown in the list instead of NTFS,NTFS,FAT32,NTFS - that partition will fail.
gparted and fix issues will fix whatever CloneVDI saw wrong.

I think the method in the 1st part is the better way to do it.