Grub and rename of btrfs root subvol

It is likely just some small step being missed somewhere.

I have never had any problem on systemd-boot.

There are more places apart from menu that grub sets.

normal.mod uses prefix variable.
After modifying fstab, run mount -a to get modifications. Before mkconfig.

You need to inspect the new grub.cfg for @ paths… and the prefix var.

Actually I ran mount -a. This told me that I should run and afterwards systemctl daemon-reload . I had checked /boot/grub/grub.cfg and all occurences of @ were changed to @eos.

I’m not sure if it is relevant for your use case, but you can change what the subvolumes are named in the first place by editing /etc/calamares/modules/mount.conf before you start the installer.

It’s generally pretty easy to do with Grub. I must have done it 100 times. I agree there must be something being overlooked somewhere.

What is in your kernel command line in `/etc/default/grub’?

What do you have in /etc/dracut.conf.d/? Inspect any files referenced in those modules for a path containing @.

You are right, that the best might be to edit /etc/calamares/modules/mount.conf before install.

In /etc/default/grub there is no mentioning of @ . Instead the luks uuid is found. In /etc/dracuf.conf.d there are calamares-luks.conf and eos-defaults.conf.

I am just experimenting to try to understand some things better. For example, if I want to install another arch based distro on the same disk my thinking was that I would need to rename the btrfs subvols.

But when renaming the btrfs subvols (assuming there is also a calamares installer) before running the installer then this might be the easiest way.

I fired up a test install and I was able to get it working.

> lsblk
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sda                                             8:0    1 115.5G  0 disk  
├─sda1                                          8:1    1 115.5G  0 part  
└─sda2                                          8:2    1    32M  0 part  
nvme0n1                                       259:0    0 476.9G  0 disk  
├─nvme0n1p1                                   259:1    0     1G  0 part  /boot/efi
└─nvme0n1p2                                   259:2    0 475.9G  0 part  
  └─luks-1e1afdba-38af-4ca1-8153-467c53df5497 254:0    0 475.9G  0 crypt /var/log
                                                                         /var/cache
                                                                         /home
                                                                         /
> sudo mount -o subvolid=0 /dev/mapper/luks-1e1afdba-38af-4ca1-8153-467c53df5497 /mnt 
> ls /mnt
@  @cache  @home  @log
> sudo mv /mnt/@ /mnt/@eos
> ls /mnt
@cache  @eos  @home  @log
> sudo nano /etc/fstab
> sudo systemctl daemon-reload
> sudo dracut-rebuild
:: Building initramfs for linux (6.9.1-arch1-1)
   [ verbose output redacted for brevity ]
:: Building fallback initramfs for linux (6.9.1-arch1-1)
   [ verbose output redacted for brevity ]
> sudo grub-install
Installing for x86_64-efi platform.
Installation finished. No error reported.
> sudo grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found background: /usr/share/endeavouros/splash.png
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot:  initramfs-linux-fallback.img
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
> reboot

When I reboot, after unlocking with the passphrase I get the normal journal output and then the Grub menu, and the system boots as expected.

To summarize:

  • Rename the subvolume;
  • Amend /etc/fstab;
  • systemctl daemon-reload;
  • Regenerate the initramfs;
  • Reinstall Grub;
  • Regenerate Grub config.

Note: reinstalling Grub is needed in this case (https://wiki.archlinux.org/title/GRUB#LUKS2). I also tested with doing all the other steps but without reinstalling Grub and I get the same error (error: file '/@/boot/grub/x86-64-efi/normal.mod' not found).

1 Like

Thanks a lot @BluishHumility . Tested here, and (no suprise) things are working fine.

1 Like

:wink:

1 Like

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