Can't boot into Ubuntu in Windows 10 / Ubuntu dual boot

Disable the hibernation mode and Fast Boot in Windows.
Open command prompt as administrator and execute :

powercfg /h off  

Open the legacy version of the Windows Control Panel (not the modern version).
Select Energy Settings, enable show hidden settings and uncheck Fast Boot.
After having done this - shutdown the computer completely - do NOT reboot.
Boot into the BIOS and select Ubuntu as the default operating system to boot.

Update :

In case there is no Ubuntu entry to be found in the BIOS / UEFI settings,
re-install the GRUB boot loader to your Ubuntu installation in EFI mode.
Boot from the Ubuntu installation media - open a terminal and execute:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub  

Note:

sdX = disk | sdXX = efi partition | sdXXX = system partition

To identify the partition numbers use GParted - it is included in the Ubuntu installation media.
Boot into BIOS and select Ubuntu in UEFI settings to be the default operating system to boot.


Immediately after the BIOS/UEFI splash screen during boot, with BIOS, quickly press and hold the Shift key, which will bring up a GNU GRUB menu screen. With UEFI press (perhaps several times) the Esc key to get to the GNU GRUB menu screen. Select Ubuntu from the GRUB menu and press Enter.

From Ubuntu open the terminal and type:

sudo update-grub && sudo reboot

If this doesn't work try booting to an Ubuntu live session from the USB flash drive that you used to install Ubuntu, and repairing the GRUB bootloader with Boot Repair. From an Ubuntu live session open the terminal and type:

sudo add-apt-repository ppa:yannubuntu/boot-repair  
sudo apt update  
sudo apt install -y boot-repair
sudo boot-repair  

Open the Boot Repair application and select Advanced Options -> Main Options tab -> check Reinstall GRUB and Unhide boot menu as shown in the below screenshot. Click the Apply button. Then reboot the computer with sudo reboot

enter image description here

If the OSs were installed in different modes, dual booting Windows and Ubuntu with grub can't work. If your Windows is installed in BIOS mode, it is recommended to install your Ubuntu in BIOS mode, but if it's installed in UEFI mode, then do the same with Ubuntu. To check if your Windows is installed in UEFI, press the keyboard combination Windows + r then enter the command msinfo32 in the Run window. In the new window that opens up look for the entry after where it says BIOS Mode.

enter image description here
          BIOS vs. UEFI

If you have installed Ubuntu in legacy mode on the same drive with GPT partitioning, you can use Boot Repair's Advanced options to uninstall grub-pc and install grub-efi-amd64. That converts the Ubuntu installation from BIOS boot to UEFI boot, the same firmware as most recently manufactured laptops with Windows pre-installed have.

Converting Ubuntu into UEFI mode

  1. Start Boot-Repair, and select Advanced options -> GRUB location tab.
  2. If you do not see a Separate /boot/efi partition option, this means that your PC does not have any UEFI partition.
  3. If you see a Separate /boot/efi partition option, put a checkmark in the checkbox to the left of it, then click the Apply button in the lower right corner.

enter image description here

  1. Set up your BIOS so that it boots the hard drive in UEFI mode. The way to adjust this setting depends on the specific model of the computer, but generally this setting is located in the boot priority settings under the Boot tab of the BIOS/UEFI setup utility.

Converting Ubuntu into BIOS mode

Note: Use this procedure only to convert an UEFI mode Ubuntu installation to boot in BIOS/CSM/legacy mode. Such a conversion may be necessary if some hardware doesn't work correctly under UEFI mode. (Graphics cards are a common source of problems.) Converting to boot in BIOS/CSM/legacy mode while Windows boots in UEFI mode can make the boot process more awkward -- you'll need to use the computer's built-in boot manager to switch between OSs, and some computer's have such poor boot managers that this may be impossible.

  • If Ubuntu is installed on a GPT disk (you can check it via the sudo parted -l command), use GParted partition editor to create a BIOS-Boot partition (1MB, unformatted filesystem, bios_grub flag) at the start of its disk.
  • Start Boot-Repair, and select Advanced options -> GRUB location tab.
  • Uncheck the Separate /boot/efi partition option

Uncheck the Separate /boot/efi partition option

  • Click the Apply button in the lower right corner.
  • Set up your BIOS so that it boots the HDD in Legacy mode. Generally this setting is located in the Boot tab → Boot order section of the BIOS.

Converting Windows into GPT mode

MBR2GPT.exe is a command line tool which is located in the System32 folder in Windows 10. With it you can effectively and non-destructively convert a Windows 10 OS disk from MBR (for Legacy BIOS) to GPT partition style (for UEFI) without modifying/deleting any data on the disk or making a clean installation of Windows 10.


Links:

  • UEFI - Community Help Wiki, Converting Ubuntu into UEFI or Legacy mode
  • Convert from EFI to BIOS boot mode