Grub Boot not working with EFI

Hi all, a Manjaro newbie here. I recently installed Manjaro 17.1.17 XFCE from a USB stick onto my Acer Aspire XC-603 desktop. It will not boot directly from EFI but it will boot Manjaro if I use the USB stick.

Before the install, I was dual-booting Linux Mint and Windows 8.1 with GRUB with secure boot turned off and Ubuntu set as default EFI hard drive boot.

I installed Manjaro and chose the option to install it alongside my Linux Mint (sharing partition sda6) with the boot loader installed to /efi/boot (sda2)

After the install, the Manjaro boot was non-existent in EFI but the Ubuntu boot was there. I changed EFI to boot from my Manjaro USB stick. The computer boots to a Manjaro splash screen, where if I choose the boot loader list option, and then choose Manjaro GRUB boot from the list. I can boot Manjaro.

I tried following the UEFI wiki unsuccessfully.

How do I get EFI to recognize the Manjaro GRUB boot loader?

Boot to Manjaro again (easier to use this).

Since I don’t understand

Share sda6 ? Home? root? How?
bootloader sda2 /efi/boot? What’s that? Shared?

When booted, provide

sudo parted -l
efibootmgr -v
findmnt -s
sudo blkid

Golip, in the Manjaro Installer (Gparted?) I split the Linux Mint partition into two ext4 partitions (one for Mint and one for Manjaro) and the installer automatically sends the boot loader to the Windows EFI partition. Here are the commands executed as you suggested. Thanks.

[richard@richard-pc ~]$ sudo parted -l

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for richard:
Model: ATA WDC WD10EZEX-21M (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 420MB 419MB ntfs Basic data partition hidden, diag
2 420MB 735MB 315MB fat32 EFI system partition boot, esp
3 735MB 869MB 134MB Microsoft reserved partition msftres
4 869MB 510GB 510GB ntfs Basic data partition msftdata
6 510GB 743GB 232GB ext4
8 743GB 975GB 232GB ext4
7 975GB 983GB 8405MB linux-swap(v1)
5 983GB 1000GB 17.2GB ntfs Basic data partition hidden, diag

Model: JetFlash Transcend 16GB (scsi)
Disk /dev/sdb: 15.6GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 32.8kB 1742MB 1742MB primary boot
2 1742MB 1746MB 4194kB primary esp

[richard@richard-pc ~]$

========================

[richard@richard-pc ~]$ efibootmgr -v
No BootOrder is set; firmware will attempt recovery
[richard@richard-pc ~]$

========================

[richard@richard-pc ~]$ findmnt -s
TARGET SOURCE FSTYPE OPTIONS
/boot/efi UUID=B602-C92D vfat defaults,noatime
/ UUID=727bdc61-0470-409b-827c-754224afb011 ext4 defaults,noatime
swap UUID=98983350-3768-4961-b967-afa0e964a2e2 swap defaults,noatime
[richard@richard-pc ~]$

========================

[richard@richard-pc ~]$ sudo blkid
[sudo] password for richard:
/dev/sda1: LABEL=“Recovery” UUID=“4A82006B82005E37” TYPE=“ntfs” PARTLABEL=“Basic data partition” PARTUUID=“9a144b33-f084-4428-8d95-14fe48eeff70”
/dev/sda2: LABEL=“ESP” UUID=“B602-C92D” TYPE=“vfat” PARTLABEL=“EFI system partition” PARTUUID=“7963cba4-6f0f-4337-8c37-6e9b8508e6a4”
/dev/sda3: PARTLABEL=“Microsoft reserved partition” PARTUUID=“6a6af7da-f772-4e13-b835-a0e876b12de9”
/dev/sda4: LABEL=“Acer” UUID=“B83AE9D23AE98DA6” TYPE=“ntfs” PARTLABEL=“Basic data partition” PARTUUID=“0e469604-f0ec-4da5-90df-10d25344f49b”
/dev/sda5: LABEL=“Push Button Reset” UUID=“96CE054ECE0527D7” TYPE=“ntfs” PARTLABEL=“Basic data partition” PARTUUID=“fa682b81-ae97-426a-b00d-77eee54b4cb8”
/dev/sda6: UUID=“2972e097-a6d4-4f98-8ab8-9522e04c5c60” TYPE=“ext4” PARTUUID=“081d81ee-e371-4ad5-a625-b0608c021c46”
/dev/sda7: UUID=“98983350-3768-4961-b967-afa0e964a2e2” TYPE=“swap” PARTUUID=“e605689b-30e4-4b59-a5e6-928f8eb055f1”
/dev/sda8: UUID=“727bdc61-0470-409b-827c-754224afb011” TYPE=“ext4” PARTUUID=“d7724f99-8588-4bcb-9121-f8f43d79a514”
/dev/sdb1: UUID=“2018-03-27-18-01-09-00” LABEL=“MJRO1717” TYPE=“iso9660”
/dev/sdb2: SEC_TYPE=“msdos” LABEL=“MISO_EFI” UUID=“586E-0BFD” TYPE=“vfat”
[richard@richard-pc ~]$

Okay, your setup is fine. Just your firmware.

[richard@richard-pc ~]$ efibootmgr -v
No BootOrder is set; firmware will attempt recovery
[richard@richard-pc ~]$

So let’s your system do it (hopefully it does).
To help it along, reboot your computer a couple of times from cold start. Don’t worry if it boots or not boot. Oh… you said you’ve disabled secure-boot. Also disable ‘fastboot’ or hiberfile in windows.
I think it’s “powercfg /h off” in windows prompt as admin.

When done, boot up again to Manjaro and see if your system has already done recovery of firmware and if it does, see if ‘manjaro’ is listed in

efibootmgr

If it is not listed or not on top of bootorder, just do a

sudo grub-install
sudo update-grub

That should do it.
Good luck.

ps: I hope you did not format $esp (sda2) when you install Manjaro or LM.
If you did, your windows bootloader will be lost and you will have to reinstall windows bootloader again (just the bootloader, not the whole OS). efibootmgr will show ‘windows’ if it is there (after firmware is restored).

First, If you install Manjaro alongside any Ubuntu based system the thing is: Ubuntu based grubs are unable to boot Manjaro (or Arch systems) so you need to use Manjaro Grub to access all installed systems (other Linux OSes or Windows).

Second: UEFI install needs a path to the EFI partition and specifically to the boot file (so to a proper directory where this file is). This becomes complicated because each firmware is different and there are various solutions how this works… So for example:

  • your first boot may be an error with a option to browse and point to the right UEFI boot file, once you did it, UEFI will remember it and next boot will be successful (it worked like that on my old lenovo laptop)
  • it’s possible that some UEFI firmware may automate this to a degree, there should be always some manual setting
  • some UEFI firmware (like my current alienware) require for you to create an UEFI boot manually

To explain it: there can be many EFI partitions, those can be on different hard drives, and in each EFI partition there can be many folders aka directories to different systems. So basically you need to point the right direction depending on what you have and what you set during installation (so for example, linux may share efi partition with windows without problems if it’s installed on the same drive, if you installed on different drives and created another EFI partition, you must choose that drive, choose the partition and then proper directory and boot file.

EFI is a small partition is fat32 with flags boot and esp. You should know if you chose to install on existing one or created a new one somewhere. Path is usually /boot/efi/ and file something x64. You can experiment and try different paths and files, wrong one simply won’t boot system and proper one will.

Also, you should know what are partition tables (at least the main one like MBR/dos and GPT), what are differences between them. You must know that MBR/dos require legacy install, GPT can handle both but UEFI is preferred. So it’s possible you installed on GPT Ubuntu in legacy mode and then Manjaro in UEFI mode. See how crazy and confusing it may become and how many errors can be done? Articles about dual boots tend to forget about those pesky difficulties.

Also no one seems mentioning that proper Legacy and UEFI install depends and starts with USB iso creation. It must be able to boot in both modes. Good programs do that some may not. So in order to install in Legacy properly, you need to boot live USB in legacy mode. In order to install in UEFI mode, you need to boot live USB in UEFI mode.

If you boot live USB in Legacy mode but do UEFI install (installer will let you), you will have problems to boot the system. So that’s another complication you must be aware of.

Also, some mistake and choose wrong partition on wrong devices during install so it can lead to many bizarre results.

Anyway, when you get how it all works, you can repair your installs or install systems so they would work without problems. But for now you need to read on it and learn, and experiment on your hardware… :wink: Once you get it, installing will be a breeze and systems will boot properly.

Since there are so many variations and possibilities where you took the wrong choice we can only assume.

Thanks, I’ll give it a try.

Thanks, michaldybczak. Wow, that is a lot to think on and make sense of.

After multiple boots I don’t see the UEFI firmware automating the boot path. How does one do this manually?

I created the Manjaro Live USB using Etcher in Mint. My bios is in UEFI mode. I did not see any indication of whether I was booting in UEFI or Legacy mode. According to the Manjaro installer the boot loader installed to the Windows FAT32 partition (sda2) at /efi/boot.

Yes, very confusing. :slight_smile:

With grub 2.04 the issue not able to boot Arch-based distros should be resolved as by then grub will support multiple initrd-images.

OK, I think I understand. :slight_smile:

That would be nice and one less thing to worry. However, I red somewhere that Manjaro comes with slightly modified grub so any vanilla grub may have issues with booting Manjaro? Or is it not true or not true anymore?

In my UEFI it shows where usual boot options are and there is somewhere “set new” and if you trigger it, you will see dialog box where you need to choose source (disk, partition, path). So you can have Windows EFI as default where only windows starts and linux is not visible, you can have Manjaro EFI where you get grub and can launch all OSes, you can have other Linux OSes EFI’s paths and so on.
With UEFI different distros usually install their boot file into different folders so you end with multiple grubs installed and you can choose preferred (working) one. Also, if systems are installed in the same drive they can share the same EFI partition so you’re safe to use windows EFI partition (again, if this is all in the same drive, if there are different ones it’s best to set new EFI for the new drive).

Anyway, with UEFI you have more freedom to set properly which boot file will be used and they all can coexist next each other, but the downsize is that UEFI rarely can see all those options automatically and the whole UEFI install thing for a new user may be confusing.

I just experimented with various UEFI settings till I discovered how it works on my computer. I advice the same ;). Since your files are backed up you are free to play with settings and learn how it works.

Thanks, it’ll take some experimentation.

On UEFI systems only, you can chainload Manjaro from Ubuntu’s grub menu (just as you can chainload to Windows), thus handing off the actual Manjaro start up to its own grub, and vice versa.

You just make a custom menu entry to do this.

Dumb question I know, but where would I be able to edit the Ubuntu grub menu. Do I unplug my Manjaro Live USB and then choose an option at the Ubuntu grub boot screen somewhere?

You edit the file /etc/grub.d/40_custom and create your custom menu entry. If you save the edited file as /etc/grub.d/40_custom, it ends up at the bottom of grub menu, so I rename to 06_manjaro-gnome when saving it in /etc/grub.d to position it at the top. Check to be sure it’s executable. Then update grub to create a new grub.cfg.

Here is my file made from 40_custom. Modify to your system. For example, the UUID shown should be for the EFI system partition where Manjaro installed its grub boot loader.

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry 'Manjaro GNOME    menu' {
insmod part_gpt 
insmod fat
search --no-floppy --fs-uuid --set=root CF2E-B0AD
chainloader /EFI/manjaro/grubx64.efi 
}

It is preferable to use custom.cfg instead of modifying /etc/grub.d/40_custom

And we won’t have to redo it every time there is a new grub-install. Or risk removing its header. Or update-grub fails because the entry is faulty. Or … It’s not good to modify /etc/grub.d.

And it is better to chainload core.efi instead of grubx64.efi as grubx64.efi may be missing or corrupted due to several reasons (microsoft update ‘cleaned up’ $esp; new grub in other Manjaro OS sharing $esp overriding grubx64.efi…). core.efi will not be missing.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.