As I read your Boot Repair output, you have three OSes installed:
- Windows in BIOS mode on
/dev/sda
-- This installation is on your internal disk.
- Windows in EFI mode on
/dev/sdg
-- This installation is on your external disk.
- Ubuntu in EFI mode on
/dev/sdg
-- This installation is on your external disk, and includes an EFI-mode GRUB on the same disk.
You should first understand that GRUB cannot redirect across boot modes. Thus, the EFI-mode GRUB on your external disk will not boot to your internal-disk Windows. It doesn't sound like you're trying to do this, though; it sounds like you want to boot the Windows on your external disk from the EFI-mode GRUB on the external disk. This should work, but for some reason, OS-prober has not detected the Windows on the external disk. There are several possible solutions to this problem, including:
- Create a custom GRUB configuration -- You can edit the
/etc/grub.d/40_custom
file, as described in jarondl's answer to this question,, then run sudo update-grub
, to create the necessary entry.
- Use GRUB Customizer -- The GRUB Customizer tool makes it easier to make customizations like the preceding one. That said, I've never used it and I'm not sure it would really help much, compared to editing
40_custom
directly, in your specific case.
- Use Boot Repair -- The Boot Repair tool can sometimes correct boot problems like yours. That said, I can't promise it would really help much, if at all.
- Install rEFInd -- My rEFInd boot manager sometimes does a better job of detecting and/or launching Windows than GRUB does. Thus, installing it may help. Note, however, that if Secure Boot is enabled, you'll have to jump through some extra hoops. With appropriate options settings, rEFInd can redirect the boot process from EFI to BIOS, so rEFInd would enable you to boot either of your Windows installations.
- Disable Hibernate and Fast Startup -- These two Windows features are often the root cause or problems like what you're seeing. If you can boot into Windows, even temporarily, you should disable them, as described here and here, respectively. If you keep using GRUB, you'll need to run
sudo update-grub
after you disable these features before you'll see any benefit.
The first three options carry an increasing risk of creating new problems; mucking with GRUB's configuration files is not entirely risk-free. rEFInd could also mess things up, but you can try it on a USB flash drive or CD-R first to minimize the risk. The final option is distinct from the others, in that it addresses one possible root cause of the problem rather than try to work around it.
Overall, my recommendation is to try disabling Hibernate and Fast Startup in Windows first. If you can't find any other way to boot it, try using rEFInd on a USB flash drive or CD-R. (You may need to temporarily disable Secure Boot to get this to work.) If, after you do this and run sudo update-grub
, you still can't boot Windows from GRUB, you can try either installing rEFInd to your hard disk or try whichever of the GRUB repairs appeals to you.
Note also that EFI-mode booting works differently for disks that are permanently associated with a computer (such as internal disks and external disks that are permanently attached to a computer) and for temporary disks (external disks that you move around, such as OS installer disks). In this answer, I've assumed that your external disk, although external, is more-or-less permanently plugged into your computer. If you're moving your external disk around and expect it to boot on any computer, you'll probably need to adjust the boot loader filenames on the ESP. See my answer to this question for details.