If it boots you will have to use Windows Disk Manager and delete the /dev/nvme0n1p2 fat32 /boot/efi and add that space to ntfs Win 10, once completed reboot again to see if it boots normally - if it does then shut down and now you can plug in both drives - if not you will have to rebuild the Windows boot partition first before plugging in both drives
Previous disasters have taught me NOT to delete the Windows boot partition if I want to keep Windows. Grub does not contain a Windows bootloader, nor can it rebuild the Windows boot partition.... grub only "finds" an existing Windows bootloader and adds it to the grub boot menu. I have not found an easy way to restore a Windows bootloader on Windows 10 or 11... it was very easy in Windows 7 with bootrec.exe (/fixboot and /fixmbr), but I don't know if that is available with more modern Windows.
As a reminder to Mike,
I said this a year ago working on this same problem:
First, let me say that every computer (and UEFI/BIOS) is different, and this is a constant struggle when folks cannot do what we think they should be able to do. Ubuntu should be able to install and work in UEFI mode, and even with Secure Boot enabled.
Back then, Mike was forced to boot Ubuntu in Legacy mode rather than UEFI. I think this was because his Windows was installed in Legacy/MBR. Windows and Ubuntu have both been replaced/upgraded since then.... but Mike's screenshot from Gparted does not tell us what partition table is being used. Please check on this Mike: Open Gparted, click on the View menu at the top, and tick the box for "Device Information." Confirm that both your Windows 10 Pro and your Ubuntu 20.04 show "gpt" as the partition table type. If either (or both) show "msdos"... you will want to correct this before your next reinstall. Mixing UEFI/GPT and BIOS/MBR operating systems is asking for trouble... maybe where all this trouble started. But I suspect you have them both as gpt correctly now.
Again, Mike, every computer and UEFI/BIOS is different. I was successful today and will describe my steps below, but that is not a guarantee that you will also be successful if/when you again choose to reinstall. Our motherboards are different, our NVMe drives are different, our UEFI/BIOS are different.... but we do have the same 860 EVO SSD for Linux. That won't save us! LOL
To be honest, I don't know that this is worth all the effort to keep Windows and Linux each "separate" and more or less self-contained in it's own drive. Because they are not separated fully. When grub is updated so that it will show Windows on the boot menu, they are now linked. Future changes to either operating system may break this link. I don't think it's possible to make a dual-boot Windows/Linux "unbreakable"... they are very different systems, and the hardware makers greatly favor Windows. The best and safest thing is using separate computers for each OS.
I mentioned above that I had shrunk my NVMe Windows partition and installed Fedora Linux alongside it. This dual-boot arrangement worked fine. My UEFI/BIOS is set to defaults, so Secure Boot remains enabled... Fedora works with this, and so does Ubuntu. But you want the UEFI/BIOS settings correct before you begin... trying to change them after installing can again cause troubles.
To setup the dual-drive arrangement, I booted on a flash drive, deleted the entire NVMe drive with Gparted. I used my Windows 11 Recovery USB to restore Windows only on the NVMe, and rebooted a number of times to make sure it was all working correctly as a single Windows drive again. Then I removed the Windows NVMe from the computer.
Next, I installed the Samsung EVO 860... it had no OS and no partitions (unallocated space only). I booted on an Ubuntu flash drive, ran the full default install, and again rebooted a number of times to make sure all was working correctly. As the only OS, the grub menu is not really needed and was not displayed... it would boot straight into Ubuntu. I also did not choose "Install 3rd party software" when installing because it would need to change Secure Boot settings, and I want Secure Boot left alone.
Then I put the NVMe back in, booted into UEFI/BIOS setup, and both drives were visible as boot options, with Ubuntu listed first. Good enough! I booted and rebooted a number of times again, selecting each OS from my F12 Boot Menu. At this point they were not "linked" by grub, and either could have been first in the boot order, but I left it Ubuntu. Then, with Ubuntu running, I did
sudo update-grub
and successfully got this report:
After that, with Ubuntu being first in the boot order, the grub menu was now showing and I could select Windows... and it worked as expected. This is what you have been trying to achieve!
That was
@Lord Boltar's method... keeping the drives separate to make sure that the Ubuntu bootloader was installed to the correct drive. Of course it worked... Ubuntu had no other choice.
But
@wizardfromoz is also correct in that it is not necessary to remove any drives, and I proved this also by erasing the EVO 860 Ubuntu installation from above and starting over. But care must be taken during the Ubuntu install at the partitioning step. With the NVMe drive still installed, and the EVO SSD totally empty, I booted on the Ubuntu USB and ran the installer....
Do not choose "Install alongside Windows" and do not choose "Erase disk and install Ubuntu"... you need the "Something else" option. This gives the options to properly partition the empty SSD... and 2 partitions are needed: first, an EFI System Partition (500 MB is a typical size, but way more than needed). The second will usually be set to EXT4, mounted at " / " and using the remainder of the drive space. Then, most important (and what you likely missed).... is at the bottom of this screen is an option (drop down selector box) to choose what "Device for boot loader installation." This should simply be /dev/sda ... but you will likely have to use the drop down selector to choose it.
Note: /dev/sda for me... your sda is your 4TB data drive and sdb was Ubuntu, so be careful here. Don't use any partition number, like sda1 or sdb1... just /dev/sda or /dev/sdb as appropriate. (Another Note: I don't know if this matters, but have the ext4 partition highlighted (not efi) when beginning the installation. If it does matter, the efi partition is too small, obviously.) Also leave the small "free space" areas alone. This isn't a great photo, but you can see what I have done:
This worked just as well to keep the Ubuntu bootloader separate from the Windows drive, as Chris said, but you have to be paying attention to it.
If you want to give up on dual-drive and instead dual-boot Windows and Linux on the
same NVMe drive, you could choose "Install alongside Windows" without the need to first shrink the Windows partition. This option will provide a "slider bar" tool to allow you to resize the partitions and make room for Ubuntu. But if you pre-prepare a partition by shrinking Windows first, then you would use "Something else" option again, similar to the description above, but you would choose the NMVe drive for the bootloader (it will probably default to the correct location, but check it). I mention this because your 4TB storage is getting pretty full. Dual-booting on the NVMe could then open up the EVO SSD to be used for more storage, and especially creating an ext4 partition to store your Timeshift snapshots. Something to think about.
Here are my Gparted screenshots to show the final outcome:
Whew.... I'm exhausted!
And I know you're not going to move on this anytime soon. That's okay. Hopefully I've given you enough information to fix this "problem" if/when you decide to tackle it again, and you'll remember to come back here and refresh yourself about this. But also remember... with our hardware differences, it still may fail to work properly for you. That would suck, but Windows and Linux often do not like to play well together, and I can't fix that.
Cheers