Great question, this actually just happened to me and I got it working, I did find some really useful information online and I am happy to share it with you. Being that you asked this a month ago I am sure you are most likely not in the same situation but if you are here is what worked for me.
Firstly I have my Ubuntu 18LTS running inside a VM on a ESXI server. This is the one that had the same issue. I also want to mention that my brother had Ubuntu 18LTS running on a raspberry pi 4 and was able to complete the update to Ubuntu 20LTS without any issues which was great to see.
I found the solution that worked for me at: https://help.ubuntu.com/community/Grub2/Installing#via_ChRoot
I was directed to this by finding the help article posted on:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1848797
I did not have anything raided or complicated on my VM so essentially I could skip a lot of the steps, essentially I followed these steps:
Downloaded the same Ubuntu 20 iso from Ubuntu's site (Desktop Image):
https://releases.ubuntu.com/20.04/
Then I attached it to my VM and then forced the VM to boot to bios so that I can set the boot priority for a cd first instead of a HDD.
Then I saved and when it rebooted it allowed me to boot from the iso. I then selected the "Try Ubuntu" selection which gets you into the live Ubuntu version.
Then open a terminal and type in:
sudo fdisk -l
this gave me the needed info for the next step. Then you can mount the HDD you have via:
sudo mount /dev/sdXY /mnt
for me the command ended up being
sudo mount /dev/sdb1 /mnt
Then I mounted the critical virtual filesystems, run this as a single command:
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
Then Chroot into your normal system:
sudo chroot /mnt
Reinstall GRUB 2:
grub-install /dev/sdX
For me it was:
grub-install /dev/sdb
Recreate the GRUB 2 menu file (grub.cfg):
update-grub
Exit chroot: CTRL-D on keyboard then reboot by using:
sudo reboot