[HowTo] Understand EFI boot process with GPT via GRUB to manjaro

Welcome, if this info appears in a box please follow the link above the box.

The information here is intended to help you understand and analyze the boot process during an EFI boot. You may be able to use the information here to find out why your manjaro isn’t booting. Only when you know the problem you can fix it with certainty. At the end of the post there are links to fix the problem. Klick on the black :arrow_forward: to expand a section (updated last 20220123)

How the boot process works with EFI:

1.UEFI

UEFI starts first and initializes your computer’s hardware so that:

  • connected keyboards become active
  • at least one screen of a graphics card is working
  • internal hard drives, SSD … are recognized
  • external hard drives, SSD, USB sticks are recognized

After a short pause, the default boot process starts. This can be interrupted at this point by pressing certain keys. Depending on the manufacturer of the UEFI, these are e.g.

  • F2 jump to the configuration of the UEFI
    It is important to prepare the settings in the UEFI so that manjaro can also work.

  • F11 Selection from which recognized boot medium should be booted.
    Often 2 entries per boot medium are displayed. Then you should definitely select the entry marked UEFI!

2. UEFI variable

How the boot process should continue is stored in UEFI variables. This includes:

  • The boot entries (Boot00xx)
    Each entry states which hard disk and partition should be booted from. The UID of the partition is also included here. Even if the numbering in UEFI can be different than in manjaro, the UID is a good identifier to find the partition in manjaro. Then the path is specified under which the boot file is searched. This file usually has the extension .efi

  • The order (BootOrder)
    The boot order shows the order in which the entries are used when the UEFI tries to boot. If a boot fails, the next entry in the boot order is tried. If everything goes wrong, you’ll end up in the UEFI shell

you can see yourself with:

efibootmgr -v
example output:
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,001A,0004,0020,0022,0023,0003
Boot0000* manjaro	HD(1,GPT,b1d3d562-88ff-4ac2-8326-9c5d82892379,0x800,0x1dc800)/File(\EFI\MANJARO\GRUBX64.EFI)
Boot0003* UEFI: Built-in EFI Shell	VenMedia(5023b95c-db26-429b-a648-bd47664c8012)..BO
Boot0004* UEFI OS	HD(1,GPT,b1d3d562-88ff-4ac2-8326-9c5d82892379,0x800,0x1dc800)/File(\EFI\BOOT\BOOTX64.EFI)..BO
Boot001A* UEFI OS	HD(1,GPT,99e0488b-1204-4acc-83a6-30d2c839b094,0x800,0x100000)/File(\EFI\BOOT\BOOTX64.EFI)..BO
Boot0020* UEFI OS	HD(1,GPT,4f943c21-f008-4448-aaf4-ff8be3fd2a28,0x800,0x200000)/File(\EFI\BOOT\BOOTX64.EFI)..BO
Boot0022* Hard Drive	BBS(HD,,0x0)..GO..NO........w.A.D.A.T.A. .S.X.8.2.0.0.P.N.P....................A......................................................Gd-.;.A..MQ..L.2.K.4.3.2.L.A.8.B.N.E.1........BO..NO........u.S.a.n.D.i.s.k. .S.D.S.S.D.H.3.1.0.0.0.G....................A.................................>..Gd-.;.A..MQ..L.8.1.3.1.3.C.0.8.7.0.7.1. . . . . . . . ........BO..NO........u.A.D.A.T.A. .S.P.6.1.0....................A.................................>..Gd-.;.A..MQ..L.E.1.3.2.0.2.8.0.0.3.5.8. . . . . . . . ........BO
Boot0023* CD/DVD Drive	BBS(CDROM,,0x0)..GO..NO........u.H.L.-.D.T.-.S.T.D.V.D.-.R.A.M. .G.H.2.2.N.S.3.0.........................rN.D+..,.\...........F..Gd-.;.A..MQ..L.H.L.-.D.T.-.S.T.D.V.D.-.R.A.M. .G.H.2.2.N.S.3.0........BO

or with

maxi -e
example maxi -e:
Info about: efi vars (needs efibootmgr)
 Boot0000* manjaro                  HD(1,GPT,b1d3d562-88ff-4ac2-8326-9c5d82892379,0x800,0x1dc800) \EFI\MANJARO\GRUBX64.EFI
 Boot0003* UEFI: Built-in EFI Shell VenMedia(5023b95c-db26-429b-a648-bd47664c8012)                                         ..BO
 Boot0004* UEFI OS                  HD(1,GPT,b1d3d562-88ff-4ac2-8326-9c5d82892379,0x800,0x1dc800) \EFI\BOOT\BOOTX64.EFI    ..BO
 Boot001A* UEFI OS                  HD(1,GPT,99e0488b-1204-4acc-83a6-30d2c839b094,0x800,0x100000) \EFI\BOOT\BOOTX64.EFI    ..BO
 Boot0020* UEFI OS                  HD(1,GPT,4f943c21-f008-4448-aaf4-ff8be3fd2a28,0x800,0x200000) \EFI\BOOT\BOOTX64.EFI    ..BO
 Boot0022* Hard Drive               BBS(HD,,0x0)                                                                           ..GO
 Boot0023* CD/DVD Drive             BBS(CDROM,,0x0)                                                                        ..GO
 Boot0024* USB                      BBS(USB,,0x0)                                                                          ..GO
3. EFI bootloader

In the simplest case, this is now GRUB. But there are also other EFI bootloaders in circulation:

  • BOOTX64.EFI
  • GRUBX64.EFI
  • … please edit to extend this list here
maxi -ep
maxi -ep
Currently running: 5.16.14-1-MANJARO (linux516)
Info about: efi bootloaders
 /boot/efi/EFI/manjaro/grubx64.efi              276K
 /boot/efi/EFI/boot/bootx64.efi                 272K
 /boot/efi/EFI/refind/refind_x64.efi            312K
 /boot/efi/EFI/refind/drivers_x64/btrfs_x64.efi 116K
 /boot/efi/EFI/tools/Shell.efi                  908K
 /boot/efi/EFI/tools/Shell_Full.efi             1008K
 /boot/efi/EFI/tools/shellx64.efi               1,4M
 /boot/grub/x86_64-efi/core.efi                 276K
 /boot/grub/x86_64-efi/grub.efi                 276K
 /boot/efi_backup/EFI/boot/bootx64.efi          164K
 /boot/efi_backup/EFI/manjaro/grubx64.efi       164K
Info about: efi vars (needs efibootmgr)
 Boot0000* manjaro                  HD(1,GPT,b1d3d562-88ff-4ac2-8326-9c5d82892379,0x800,0x1dc800) \EFI\MANJARO\GRUBX64.EFI
 Boot0003* UEFI: Built-in EFI Shell VenMedia(5023b95c-db26-429b-a648-bd47664c8012)                                         ..BO
 Boot0004* UEFI OS                  HD(1,GPT,b1d3d562-88ff-4ac2-8326-9c5d82892379,0x800,0x1dc800) \EFI\BOOT\BOOTX64.EFI    ..BO
 Boot001A* UEFI OS                  HD(1,GPT,99e0488b-1204-4acc-83a6-30d2c839b094,0x800,0x100000) \EFI\BOOT\BOOTX64.EFI    ..BO
 Boot0020* UEFI OS                  HD(1,GPT,4f943c21-f008-4448-aaf4-ff8be3fd2a28,0x800,0x200000) \EFI\BOOT\BOOTX64.EFI    ..BO
 Boot0022* Hard Drive               BBS(HD,,0x0)                                                                           ..GO
 Boot0023* CD/DVD Drive             BBS(CDROM,,0x0)                                                                        ..GO
 Boot0024* USB                      BBS(USB,,0x0)                                                                          ..GO
Info about: visible partitions (needs lsblk)
 sda        -->      gpt    9a2fddb7-cc9e-43e2-9ea8-3906b11c402d
 sda1      EFI System       b1d3d562-88ff-4ac2-8326-9c5d82892379 vfat   C579-EF17
 sda2      Linux filesystem 3ee1dfe1-19af-4102-945d-90d957d3c199 btrfs  3487ba3d-1cba-4cdc-a043-c420ebca2aca
 sda3      Linux filesystem bdaabdec-4168-4429-8fed-7e0c6ddd0570
 sdb        -->      gpt    65ee9421-a242-44c1-9cf7-176f99d937b1
 sdb1      EFI System       99e0488b-1204-4acc-83a6-30d2c839b094 vfat   8CFB-34DD
 sdb2      Linux filesystem c873df77-f67d-44b9-b93f-6c1f56307390
 sdc        -->      gpt    16af855f-5e5a-4b21-8b1f-311536bec1d0
 sdc1      EFI System       5b8138d6-5a99-45a3-aee2-fab9792cc469 vfat   449E-C663
 sdc2      BIOS boot        56be6dc4-e1f0-4ffd-adc3-0fee9e0f75c2
 sdc3      Linux filesystem 1d26b18f-6d78-4ad8-affd-99b74d1a91aa btrfs  8dada4e9-35d3-43d0-a867-6cd75ea35476
 nvme0n1    -->      gpt    3f4f3b57-5803-4ecc-926b-4d5039d4e4f7
 nvme0n1p1 EFI System       4f943c21-f008-4448-aaf4-ff8be3fd2a28 vfat   B027-5E71
 nvme0n1p2 BIOS boot        99cbd634-17cc-44c2-8a60-8b468a9daf1f grub2 core.img
 nvme0n1p3 Linux filesystem 7b64fe2b-61d7-474b-9e9b-ea0599578e2d btrfs  3487ba3d-1cba-4cdc-a043-c420ebca2aca
 nvme0n1p4 Linux filesystem 4fb5dd8c-3442-47bd-b692-157dc9a08e4d btrfs  94567c06-a951-4b6a-923f-3d5bc37e760a
4. GRUB

GRUB looks for its configuration file grub.cfg.

If it’s not found, you’ll end up in a GRUB shell.

According to the instructions in the grub.cfg:

  • Various additional modules for grub reloaded
  • Running grub visible or invisible (with ESC you can mostly stop grub at this moment and make it visible)
  • When the menu is displayed, you can choose which kernel to boot with here
  • It can also be selected whether the fallback initrd should be used

It is not recommended to edit grub.cgf. It is usually automatically recreated after a kernel update. /etc/default/grub serves as a template. If grub.cfg is not up-to-date (e.g. after changes in /etc/default/grub), it can also be regenerated manually.

  • Grub selects the disk and partition
  • Grub loads the initramdisk into memory
  • Grub loads the kernel into memory
  • Grub starts the kernel with the parameters specified in grub.cfg
5. Kernels

When the kernel starts,

  • it initializes the hardware first, taking into account the parameters passed
  • mounts the initrd provided in grub’s memory
    Everything the kernel needs at this point must be in the initrd
  • mounts the partition as root-filesystem passed as a parameter
  • later the kernel loads necessary modules from /lib/modules/$kernelversion/…

If something goes wrong with this process, you usually end up in an emergency shell

example maxi -kv
Currently running: 5.16.14-1-MANJARO (linux516)
 linux510 vmlinuz-5.10-x86_64 initramfs-5.10-x86_64.img=35M fallback=101M kver:5.10.105-1-MANJARO
 linux515 vmlinuz-5.15-x86_64 initramfs-5.15-x86_64.img=35M fallback=124M kver:5.15.28-1-MANJARO
 linux516 vmlinuz-5.16-x86_64 initramfs-5.16-x86_64.img=35M fallback=132M kver:5.16.14-1-MANJARO
 linux517 vmlinuz-5.17-x86_64 initramfs-5.17-x86_64.img=35M fallback=132M kver:<kver missing>
6. GUI

The processes that now follow are diverse and complex

At the end of this, the graphical user interface is started. If that doesn’t work, the screen may remain dark. Then you can usually switch to a console with the key combination CTRL+Alt+F2 … F5.

If that does not work:

  • Stay calm
  • Search the forum to see if anyone has had the exact same problem. If you get stuck:
  • Start your own thread under Support
  • Write your problem in short sentences (no telegram style)
  • Provide standard information (inxi)
  • Answer questions precisely
Now some usefull links:

Boot from USB:

How to boot into my system from usb?

Provide Information:

[HowTo] Provide System Information

Install 2 kernels (one of them LTS)

Manjaro Kernels - Manjaro

Dual Boot:

[root tip] Dual boot Manjaro and Windows

Backup:

[HowTo] make a crash-proof backup in Manjaro for your entire system

And maxi, a programm to analyse what is missing

8 Likes

Thanks but this does not help in my case. I think I need to rebuild the grub.cfg and/or any other config file so it is booting from correct disk like dsa1 and not sda2 and correct ID… I think this is the problem. Before my old disk was sdb1, sda1 was not for manjaro boot at all. Now I have sda1 as manjaro boot (the cloned one), and no sdb1 at all in my pc. I\m quite sure there is nothing else besida the disk configuration change… So How/what do I need to change to correct the boot config files ?

maxi will show whats in your EFI variables, abd it will show where it found grub.cfg … This may be the base knowledge to repair :wink:

Thanks Anmdreas. This is my result after running maxi, not sure how this can help me in my case… The cloned Manjaro disk is Boot000F

maxi -kmf
Currently running: 5.15.60-1-MANJARO (linux515)
 linux515 vmlinuz-5.15-x86_64 initramfs-5.15-x86_64.img=19M fallback=33M
Modules in: /lib/modules
 modules515 5.15.60-1-MANJARO=107M extramodules-5.15-MANJARO=39M
maxi -kmsgeif
Currently running: 5.15.60-1-MANJARO (linux515)
 linux515 vmlinuz-5.15-x86_64∑b614~d890 initramfs-5.15-x86_64.img=19M fallback=33M∑<sha?>
Modules in: /lib/modules Checksumming all modules may take a while
 modules515 5.15.60-1-MANJARO=107M∑4c22~1ac6 extramodules-5.15-MANJARO=39M∑929d~debc
Info about: /etc/default/grub
 Please update grub.cfg:/boot/grub/grub.cfg <is older than> /etc/default/grub
   GRUB_DEFAULT              =saved
   GRUB_TIMEOUT              =5
   GRUB_DISTRIBUTOR          ="Manjaro"
   GRUB_CMDLINE_LINUX_DEFAULT=""
   GRUB_CMDLINE_LINUX        =""
   GRUB_SAVEDEFAULT          =true
   GRUB_PRELOAD_MODULES      ="part_gpt part_msdos"
 # GRUB_THEME                ="/path/to/gfxtheme"
Info about: /etc/mkinitcpio.conf
   MODULES                   =()
   BINARIES                  =()
   FILES                     =()
   HOOKS                     =(base udev autodetect modconf block filesystems keyboard fsck)
 # COMPRESSION               ="gzip"
 # COMPRESSION               ="bzip2"
 # COMPRESSION               ="lzma"
 # COMPRESSION               ="xz"
 # COMPRESSION               ="lzop"
 # COMPRESSION               ="lz4"
 # COMPRESSION               ="zstd"
Info about: efi bootloaders
Info about: efi vars (needs efibootmgr)
 Boot0000* Windows Boot Manager HD(2,GPT,0000031b-4e30-ff83-dbf1-df0136060000,0xfa000,0x32000) \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
 Boot000B* Hard Drive           BBS(HD,,0x0)                                                                                   
 Boot000F* UEFI OS              HD(1,GPT,dd662b73-4f31-11ed-a58b-1831bfb8002e,0x1000,0x96000)  \EFI\BOOT\BOOTX64.EFI           
 Boot0013* USB                  BBS(HD,,0x0)                                                                                   

Did you run it without sudo ? (some infos are only detectable if run as root)

1.) Kernel 5.15 and modules are there (OK)

2.) UEFI will be able to boot from: (OK)

Boot000F* HD(1,GPT,dd662b73-4f31-11ed-a58b-1831bfb8002e,0x1000 …

  • HD1 with gpt
  • UUID=dd662b73-4f31-11ed-a58b-1831bfb8002e
  • partition seems to start at 0x1000
  • will boot with \EFI\BOOT\BOOTX64.EFI from there

You have to look if this File exists :wink:

3.) Please update grub.cfg:

/boot/grub/grub.cfg seems to be older than /etc/default/grub

\EFI\boot\BOOTX64.EFI does exist yes

update grub.cfg how ? I boot now from live USB sdc, my cloned disk that wont boot is sda, partitions sda1 and sda2 What is importnat to know is that before I cloned my disk I had 4 disks in my system and boot was disk sdb, now sdb is removed, I try to use sda that is a clone of the old sdb, so disk configuration is chnaged and that my be the problem ofd course… I probaly try to boot from sdb that is missing, I must change the boot configuratgions so it boots from sda, and not lloking for sdb…

1 Like

I’ve reinstalled manjaro on sda, copied my entire old partition sdb2 to sda2, leaving the new sda1 intact, and tried to follow this tutorial to correct UUID etc:

But it’s impossible to do those steps:

Step 5c. Mount all other partitions at their subsequent mount points but instead of /mnt/mountpoint, you will have to use /mnt/@/“mountpoint” so for an example home partition, you would use mount /dev/sda2 /mnt/@/home

Step 5d. Type manjaro-chroot /mnt

In my case /dev/sda1 is mounted as /mnt (boot partition fat32) but sda2 (btrfs) is impossible to mount as described… :frowning: I could correct UUID in fstab on sda2, but could notg edit anything on sda1 boot partion. Error I get on boot was now hd1, gpt2 not found, so I guess something must be editet on boot partition as well. And the 5d chroot command is not correct, impossible to use Always partial info that leads to new problems I suppose, guess… Very frustrating. It feels that all tutorials and help I find is not telling 100% true or are to old, or not for btrfs systems, or reuire much more knowledge

When using chroot with btrfs, you need to create the same filesystemtree as you use always. BUT
You have to do it under /YOURMOUNTPOINT/ instead of /

Wether you need /YOURMOUNTPOINT/@/ instead depends how you mounted the btrfs-volume

  • mount with subvol=/ → /YOURMOUNTPOINT/@/
  • mount with subvol=/@ → /YOURMOUNTPOINT/

And NO, I didn’t get it wrong! This is intentional.

/YOURMOUNTPOINT/ can be /mnt/ , but i prefere something like /mnt/BTRFS/

You may find additional advice in