Install grub manually

I have a dual boot system and the boot entry for Manjaro is gone.
I have started the live session and tried to mount the partitons
with manjaro-chroot -a but the system says mnt/boot/efi does not exist.
Then I mounted /boot/efi manually to /mnt/boot/efi.
Then the system says canonical path /boot/efi does not exist.

Increase your chances of solving your issue:

Provide Information:

and this may help

Dual Boot:

The system is partitoned as follows:
Festplatte /dev/nvme0n1: 931,51 GiB, 1000204886016 Bytes, 1953525168 Sektoren
Festplattenmodell: Samsung SSD 980 PRO 1TB
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: gpt
Festplattenbezeichner: 1E400F2B-D767-420A-8C2C-99238BAFACB5

Gerät Anfang Ende Sektoren Größe Typ
/dev/nvme0n1p1 2048 206847 204800 100M EFI-System
/dev/nvme0n1p2 206848 239615 32768 16M Microsoft reserviert
/dev/nvme0n1p3 239616 975687028 975447413 465,1G Microsoft Basisdaten
/dev/nvme0n1p4 975687680 976762879 1075200 525M Windows-Wiederherstellungsumgebung
/dev/nvme0n1p5 976762880 977377279 614400 300M EFI-System
/dev/nvme0n1p6 977377280 979474431 2097152 1G Linux-Dateisystem
/dev/nvme0n1p7 979474432 1046583295 67108864 32G Linux Swap
/dev/nvme0n1p8 1046583296 1256298495 209715200 100G Linux-Dateisystem
/dev/nvme0n1p9 1256298496 1885444095 629145600 300G Linux-Dateisystem
/dev/nvme0n1p10 1885444096 1953525134 68081039 32,5G Linux-Dateisystem

Festplatte /dev/sda: 3,64 TiB, 4000787030016 Bytes, 7814037168 Sektoren
Festplattenmodell: WDC WD4003FZEX-0
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 4096 Bytes
E/A-Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Festplattenbezeichnungstyp: gpt
Festplattenbezeichner: 91212BFC-368F-402F-9069-89CCA0CF8919

Gerät Anfang Ende Sektoren Größe Typ
/dev/sda1 2048 7814035455 7814033408 3,6T Linux-Dateisystem

The boot SSD is the first one. p1 - p4 is Windows 10 and p5 - p10 is Manjaro.

I tried to install grub manually:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id = Manjaro --recheck

Try exact this syntax:

sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck

If you mount the partition to /mnt/boot/efi from within the chroot, then that will of course not work, given that the system expects it to be mounted at /boot/efi.

However, mounting the EFI partition separately should not be needed, because manjaro-chroot will do that automatically. The fact that it did not do that for you suggests that you’ve booted the live session in legacy BIOS mode instead of in native UEFI mode.

Here is my /etc/fstab:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=21F9-81DD                              /boot/efi   vfat   umask=0077   0 2 
UUID=3f119914-a9af-4564-8669-fa2e6ce12e00   /boot       ext4   noatime      0 2 
UUID=efdcc96e-b0e3-46a5-8097-dfbe37313d5b   /           ext4   noatime      0 1 
UUID=1f4562ba-4176-40fd-8f2c-ed1c4e047fc3   /home       ext4   noatime      0 2 
UUID=0b4eb613-447d-4c82-9a81-1ea304015a76   /var        ext4   noatime      0 2 
UUID=43166bcb-eb7f-4f68-8360-3bd6c383f3c1   /backup     ext4   noatime,noauto     0 0 

Here is blkid:

/dev/nvme0n1p9: LABEL="Home" UUID="1f4562ba-4176-40fd-8f2c-ed1c4e047fc3" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="7e430083-ef9f-0f43-ae15-aef5d3aefe58"
/dev/nvme0n1p7: LABEL="Swap" UUID="e52df95b-4a11-438a-baef-cea808d60427" TYPE="swap" PARTUUID="8666bcae-b323-6644-9109-75105018c642"
/dev/nvme0n1p5: LABEL_FATBOOT="BOOT" LABEL="BOOT" UUID="21F9-81DD" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="0a467fab-7271-344d-8894-571997c824a1"
/dev/nvme0n1p3: BLOCK_SIZE="512" UUID="40D863E3D863D626" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="d697b100-515f-447b-9059-faa7a9f5f04b"
/dev/nvme0n1p1: UUID="6661-26CE" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="ab64cf8a-51ad-4aab-b0d1-2cd9d87931da"
/dev/nvme0n1p8: LABEL="Root" UUID="efdcc96e-b0e3-46a5-8097-dfbe37313d5b" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="008082c0-e8a9-4349-a4bf-272e43a877eb"
/dev/nvme0n1p10: UUID="0b4eb613-447d-4c82-9a81-1ea304015a76" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="b5aa2421-77f1-c34f-a65d-9d918cde05f8"
/dev/nvme0n1p6: LABEL="Boot" UUID="3f119914-a9af-4564-8669-fa2e6ce12e00" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="f18b0489-82ac-1f4d-9360-bbb92a97e197"
/dev/nvme0n1p4: BLOCK_SIZE="512" UUID="067EE8AD7EE89729" TYPE="ntfs" PARTUUID="a754502e-93b7-4e21-828b-2328de9a5083"
/dev/sda1: UUID="43166bcb-eb7f-4f68-8360-3bd6c383f3c1" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="39d49eee-ed39-44b3-bc1a-6672c2ef8eea"
/dev/nvme0n1p2: PARTLABEL="Microsoft reserved partition" PARTUUID="40f864ee-921e-4e45-b8ff-3ded2a0cf5ec"

And manjaro-chroot -a gives the output: mount point /mnt/boot/efi does not exist.

What must the folder /boot/efi contain ?

If I execute this command on console as root with Manjaro 21.1.2, then I get:
canonical path for /boot/efi could not be resolved.

What should I check next ?

Maybe the order of the entries in the fstab is important?

Fstab is created by the system on install.
The first entry is /boot/efi.

The UUID is the same as with bkild.

umount/mount /boot/efi works.

?

Did you check, if you start your system at native UEFI mode?
What the /boot/efi folder contains:
https://askubuntu.com/questions/1294353/understanding-my-boot-efi-tree

The guy here said, he had to mount first the whole root partition, or better, the whole disk, before he could mount something on a certain folder. Where i think, only the root partition should be enough.
https://archived.forum.manjaro.org/t/the-manjaro-chroot-command-does-not-detect-my-installed-manjaro/97181/7

What my /boot/efi folder contains:
efi - > boot → bootx.efi
→ Manjaro ->grubx.efi

Thats all.

I have to say, that i didnt work a lot with efi systems. Gladly.
But what puzzle me a bit, it, that at your blkid you have at line 3 and line 5 2 vfat boot partitions.
Propatly, that you mount the wrong partition with fstab?
You could # outcomment the first line, copy past it into a new line, just replace the UUID at the beginning,
mount it on the same folder and see if it starts from the other efi partition?

Edit:
I can find more problems, what can appear.
Once, when you change or add a hdd,
Second, Windows can overwrite the bootloader.
At the page below, it shows some solutions, ie with efibootmgr.
https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface#Windows_changes_boot_order

In post #3 there is the output of fdisk -l.

/dev/nvme0n1p1 2048 206847 204800 100M Windows EFI system parition.
/dev/nvme0n1p5 976762880 977377279 614400 300M is the Manjaro EFI-system partition.

Ok, changing the UUID is maybe not the best idea.
When you mount your hdd like at this steps decribed,
and then do the grub-install command from above again?
https://forum.manjaro.org/t/howto-chroot-from-or-into-any-linux-distribution/34071
&
https://wiki.manjaro.org/index.php?title=GRUB/Restore_the_GRUB_Bootloader

What I have done:
I used the Manjaro USB stick with version 21.1.2 KDE
On console: mkdir /mnt/boot, mkdir /mnt/boot/efi, mkdir /mnt/home, mkdir /mnt/var
Then mount all paritions /dev/nvme0n1p5 to p10 to /mnt
manjaro-chroot /mnt /bin/bash works.

Ok. Lets do that like at the second link.
Start again with your live usb.

Start with (i will replace the drives with the one from your blkid. If it says /directory doesnt exist, then you have to mkdir)

user# su
root # mount /dev/nvme0n1p8 /mnt 

then

root # mount /dev/nvme0n1p6 /mnt/boot

then

root # mount /dev/nvme0n1p5 /mnt/boot/efi 

then
"Create the chroot environment and use bash as shell "

root # manjaro-chroot /mnt /bin/bash 

He suggests Reinstall Grub
"One possible cause why you are reading this document - is an unfinished update - which in turn can be caused by several situations - situation we will not dive into. To fix what ever caused this you should run a full system update including grub to ensure everything is in place. "

root # pacman -Syu grub 

I add here the note from the end
"
If Arch Linux wasn’t recognized after an update-grub then probably your Arch installation is missing the package lsb-release. "
So you may check, if it is installed

pacman -S lsb-release

then
" EFI System
Info You need to be in chroot for this procedure. "

cd mnt/bin

Reinstall grub

root # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck 

Update the grub configuration

root # grub-mkconfig -o /boot/grub/grub.cfg 

Verify the existance of an EFI system partition

root # lsblk -o PATH,PTTYPE,PARTTYPE,FSTYPE,PARTTYPENAME 

Verify the efi filesystem is loaded

root # ls /sys/firmware/efi 

Exit chroot

root # exit 

Try loading the efi filesystem

root # modprobe efivarfs 

Re-enter chroot

root # manjaro-chroot /mnt /bin/bash 

Then mount the efi filesystem

root # mount -t efivarfs efivarfs /sys/firmware/efi/efivars

Verify the efi filesystem is loaded

root # ls /sys/firmware/efi 

If successfull re-run above installation commands

root # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck
root # grub-mkconfig -o /boot/grub/grub.cfg 
1 Like

Problem solved.