1

I have a new computer that comes with UEFI but I'm unable to use Windows 10 and Linux in dual boot, after installation of Linux+GRUB and reboot it loads Windows without showing GRUB, notice that first I install Windows and then Linux, as usual. If I erase all the disk and install only a standalone Linux the GRUB works perfectly. I don't know if the problem is related to Windows 10 or the BIOS configuration.

In the BIOS setup I have UEFI mode active, the SECURE BOOT is disabled and the boot order is USB, CD/DVD, hard disk, OS boot loader and finally network.

My hard disk is 500Gb.

I used 50Gb to install Windows (partitions generated by Windows are EFI System, Microsoft reserved, Microsoft basic data and Windows recovery)

For Linux, I created /boot/efi 500Mb, / 50Gb and swap 8Gb (no /home partition, all in / root).

FIRST TRY: I created an EFI partition mounted in /boot/efi, installed linux, GRUB is installed without errors, but after boot it loads windows instead of GRUB.

SECOND TRY: I used the EFI partition created by Windows and mounted it in /boot/efi, installed linux, GRUB is installed without errors, but after boot it still loads windows instead of GRUB.

I thought it was a problem with the Fedora distro and tried with KALI and Mint, but still the GRUB is not loading, windows always start automatically.

Any idea of what can be wrong? As far as I understand, Linux can coexist with Windows in a UEFI based system, but it does not work on my laptop.

Rui F Ribeiro
  • 56,709
  • 26
  • 150
  • 232

3 Answers3

0

The problem seems to be that as you installed Windows first, it's boot entry is above the Linux boot entry, which needs to be loaded for GRUB to show up. To fix this order, try following these steps:

  1. Go into your boot settings, accessible by pressing a specific key during boot (check your laptop's manual)
  2. Find the option to change the OS boot order (Most likely accessible by pressing enter on the OS boot loader entry in the boot order list).
  3. Move the Linux entry above Windows.
  4. Press the key for save & exit and reboot.

This will make Linux boot by default, and GRUB should show up, with an option to boot into windows.

aksh1618
  • 326
  • It should be noted that in UEFI, permanently installed operating system get their own dedicated boot entries: in addition to selecting a disk to boot from, the boot entry will also specify the ESP partition on the disk and the bootloader file within the partition. There are also in-OS command line tools to list and manipulate the boot entries: efibootmgr in Linux, and bcdedit in Windows. The firmware configuration menu ("BIOS settings") will not always allow full manipulation of UEFI boot entries. – telcoM Jan 03 '20 at 09:07
0

This is not straight-forward to debug. Here's a few aspects you need to consider:

  • Your partition table must be GPT;
  • Your boot loader (typically grub) must be installed on the EFI System Partition (ESP) and it needs to be an EFI version of grub (grub-efi-amd64 vs grub2 on debian + a few grub-efi- dependencies like grub-efi-amd64-signed and shim-signed) [thank you for the correction @TelcoM];
    • Consider refind as an alternative bootloader to grub, you might have more success;
  • You can only install grub-efi if you've booted in UEFI mode(*) -- i.e. boot from a live Kali/Ubuntu/Fedora live image with the BIOS equivalent setup program configured to disallow legacy booting;

(*) not strictly true, but there's no reliable tooling to do this without a great deal of guesswork. refind does a better job at this than grub-efi;

There is no reason why this shouldn't be possible.

Pedro
  • 1,891
  • 1
  • 13
  • 23
  • An EFI version of grub cannot be installed on the MBR; it needs to go into an EFI System Partition (ESP) on a GPT-partitioned disk. On modern Debian/Ubuntu, the package name is grub-efi-amd64; the names grub2 and grub-efi are obsolete. If your system has Secure Boot enabled, you will also need grub-efi-amd64-signed and shim-signed. Sometimes systems with early versions of UEFI firmware have some firmware bugs: the author of refind has some advice for dealing with that. – telcoM May 07 '20 at 06:27
  • @telcoM thank you, I had this wrong, I'll edit the answer. I was uneasy about calling it MBR since it is legacy terminology but at the time of writing I didn't verify. – Pedro May 07 '20 at 07:58
0

A common problem seems to be that modern systems may offer not one but two boot options for booting the OS installer from removable media: one for UEFI-style boot and one for legacy BIOS-style. Most OS installers will detect the method they're booted with, and will automatically install the OS's bootloader using the same method, no questions asked.

If you quickly pick the first available option to boot from the installation media, you might accidentally end up with the legacy BIOS-style boot for the installer, and then it will attempt to install a legacy-style GRUB. But as the firmware is configured to boot UEFI-style, it will ignore the legacy-style bootloader once the installation is complete, and vice versa.

Most Linux installers will allow you to press Ctrl+Alt+F2 to get a shell prompt even before the actual installation starts (you may have to select at least the keyboard/language options before it becomes available though), which you can use to verify the boot mode: if the /sys/firmware/efi directory exists, the system has definitely booted in UEFI mode.

If you are at all uncertain, you should use the tip above to verify the boot mode of the installer before proceeding much further into the Linux installation, and reboot the installer in another mode if necessary.

telcoM
  • 96,466