Cannot boot the system after installation (Custom btrfs subvolume layout)


As stated in the title I cannot boot EndevourOS after I have installed it. When trying to boot, after I enter the decryption password, I get the following message:

error: file '/@/boot/grub/x86_64-efi/normal.mod' not found.
Entering rescue mode...

My installation is encrypted BTRFS. I have generally followed this guide - BTRFSonLUKS – Verbose version - to install EndeavourOS, but with one major difference: I created a custom btrfs subvolume layout in /usr/share/calamares/modules/mount prior to running the installer. And I believe it most likely causes the problem, but I don’t know how exactly and what to do to fix it.

Here is my installation steps:

  1. Edit /usr/share/calamares/modules/mount with custom btrfs subvolume layout
  2. Changed the default lzo compression in /usr/share/calamares/modules/fstab.conf to no compression
  3. Run the installer, and install everything (except boot/efi ofcourse) onto one btrfs encrypted partition.
  4. After installation mounted the newly installed system and changed fsck in fstab from 1 to 0 for all btrfs subvolumes.
  5. Created and configured the swap file for hibernation according to the guide.
  6. Mounted all subvolumes and boot/efi filesystem, chrooted into this, and run
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo mkinitcpio -p linux

Here is the fstab file from the installed system (you can see my subvolume layout here which I copied from OpenSUSE):

At the end of the installation guide that I follow you need to mount newly installed system, chroot into it, and update grub and generate updated kernel images.
When I do the latter with

sudo mkinitcpio -p linux

I get several warning messages, which might be relevant here. You can see the full output of this command here:

I’ll be grateful for any suggestions on how to fix this problem.

Just wanted to ask if you followed the wiki by @2000 There is a verbose method and a quick copy & paste method.

Yes, I followed the verbose method. But as I stated in my post, I didn’t follow it exactly. The major difference is that I configured a custom btrfs subvolume layout prior to running the installer.

Sorry, didn’t catch that but I think @2000 is the expert so hopefully he sees your post and can help you out. I do have one installation done with the copy & paste method currently. I used to have 4 set up. Hope you can wait for some help as i don’t feel i can offer you much in that regard.

The only thing i can say is if you did manual partitioning you may have missed setting the /boot flag? You have to set the efi partition to /boot/efi and set the flag to /boot.

Thank you for your answer!

I didn’t forget /boot flag. I have several systems, including Windows, using this boot partition. I remember that it is actually checked by default when I click edit to mount the boot partition in the installer.

There is also root flag available when I create the main partition, but I figured that it is probably not needed, so I didn’t check that for my main partition.

I was just looking at the error thinking maybe the flag isn’t set because that happens a lot when setting the partitions. If you are using an existing efi partition you still have to click on edit and set the correct partition as /boot/efi/ and flag as /boot without formatting it.

error: file '/@/boot/grub/x86_64-efi/normal.mod' not found


Yeah, but I remember that it was set, cause it is written in the guide that you have to set it.

I think the problem might be because of the subvolume layout, because ‘/boot/grub/x86_64-efi’ is one of the subvolumes that I have.

You may be right and @2000 will know right away as he really knows this inside & out. I only follow his tutorial with the copy & paste method which i have done both with Luks encryption and without. I haven’t had any issues and if i did I would be asking him for help because i really have limited experience with Btrfs setup. Sorry i can’t be more helpful.

Edit: Welcome to the forum. Once you get this up and running I know you will be pleased with EndeavourOS.

What is in your fstab?

cat /etc/fstab

Here is the fstab of the installed system (the one I cannot boot):

1 Like

I suspect you perhaps would need to re-install the Grub package and the bootloader from a chroot environment.

1 Like

Grub is not installed. Use the live iso to look in the /boot folder in your installed partition. Most easiest is to reinstall and carefully check what you tick. The internet is full of this problem.

1 Like

Actually, I already tried reinstalling. The first time I had the same problem.

Here is the content of /boot folder:

amd-ucode.img  efi  grub  initramfs-linux-fallback.img  initramfs-linux.img  vmlinuz-linux

the missing file should be installed with grub install, do you checked if they are there?

Yes, I checked. The file that error message says is missing is actually there. /boot/grub/x86-64-efi is its own subvolume though, but it should be mounted correctly there.

what for it is a subvolune on its own? if /boot is already one?..

i just see /boot is no subvol so it could he grub is not able to see it if it is not on the same volume as /boot ?
and again what vor a subvol for a subfolder of grub?

/boot is not a subvolume neither a partition. /boot/efi is a separate partition.

/boot/grub/x86_64-efi is a subvolume. Why? To exclude it from snapshots. I copied the default subvolume layout that OpenSUSE uses. And they give some reasoning (which I don’t remember) to exclude this folder from snapshotting.

But I configured subvolumes to be mounted in fstab file, which you can find in messages above. So /@x86-64-efi subvolume, where needed files are installed, should be mounted to /boot/grub/x86_64-efi.

I think this is similar what you are trying to do as someone else tried on Manjaro? Maybe?

1 Like

Yes, he also wants to replicate OpenSUSE subvolume layout. There are some suggestions that thread links to, I’ll read them and see if they can be helpful for me. Thank you!

1 Like