Venom1991 / refind-btrfs

Generate rEFInd manual boot stanzas from Btrfs snapshots
GNU General Public License v3.0
146 stars 8 forks source link

Could not find a boot stanza matched with the root partition #6

Closed ahmed-tasaly closed 3 years ago

ahmed-tasaly commented 3 years ago

sudo refind-btrfs [sudo] password for muslim: Initializing the block devices using lsblk. Initializing the physical partition table for device '/dev/sda' using lsblk. Initializing the live partition table for device '/dev/sda' using findmnt. Initializing the physical partition table for device '/dev/sdb' using lsblk. Initializing the live partition table for device '/dev/sdb' using findmnt. Initializing the physical partition table for device '/dev/sdc' using lsblk. Initializing the live partition table for device '/dev/sdc' using findmnt. Initializing the physical partition table for device '/dev/zram0' using lsblk. Initializing the live partition table for device '/dev/zram0' using findmnt. Initializing the physical partition table for device '/dev/zram1' using lsblk. Initializing the live partition table for device '/dev/zram1' using findmnt. Initializing the physical partition table for device '/dev/zram2' using lsblk. Initializing the live partition table for device '/dev/zram2' using findmnt. Initializing the physical partition table for device '/dev/zram3' using lsblk. Initializing the live partition table for device '/dev/zram3' using findmnt. Initializing the physical partition table for device '/dev/zram4' using lsblk. Initializing the live partition table for device '/dev/zram4' using findmnt. Initializing the physical partition table for device '/dev/zram5' using lsblk. Initializing the live partition table for device '/dev/zram5' using findmnt. Initializing the physical partition table for device '/dev/zram6' using lsblk. Initializing the live partition table for device '/dev/zram6' using findmnt. Initializing the physical partition table for device '/dev/zram7' using lsblk. Initializing the live partition table for device '/dev/zram7' using findmnt. Found the ESP mounted at '/boot/efi' on '/dev/sdb1'. Found the root partition on '/dev/sdb3'. Searching for snapshots of the 'ROOT/@' subvolume in the '/.snapshots' directory. Found subvolume 'ROOT/@' mounted as the root partition. Found 17 snapshots of the 'ROOT/@' subvolume. Searching for the 'refind.conf' file on '/dev/sdb1'. Analyzing the 'refind.conf' file. ERROR (refind_btrfs.state_management.model/model.py/check_boot_stanzas): Could not find a boot stanza matched with the root partition!

Mounted EFI on /boot/efi , manaul boot stanza that I am booting from :))

menuentry "EndeavourOS" { icon /EFI/refind/icons/os_arch.png volume endeavouros loader /boot/vmlinuz-linux initrd /boot/initramfs-linux.img options "root=PARTUUID=826a2285-25bc-3443-9fea-cda9f20b7b59 rw loglevel=3 nowatchdog apparmor=1 security=apparmor radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1 add_efi_memmap initrd=\boot\intel-ucode.img" submenuentry "Boot using fallback initramfs" { initrd /boot/initramfs-%v-fallback.img options "root=UUID=cb1c7b4d-ce70-4d8e-8e43-e89a63fe8b7f rw add_efi_memmap" } submenuentry "Boot to terminal" { add_options "systemd.unit=multi-user.target" } }

I set :

 exit_if_root_is_snapshot = false

[[snapshot-search]]
 dir = "/.snapshots"
 is_nested = false
 max_depth = 2

[snapshot-manipulation]
 count = 3
 modify_read_only_flag = false
 destination_dir = "/root/.refind-btrfs"
 cleanup_exclusion = []

[boot-stanza-generation]
 refind_config = "refind.conf"
 include_paths = true
 include_sub_menus = false
Venom1991 commented 3 years ago

Did you check the prerequisites section in the readme? The "rootflags" option is missing in the "options" field of your stanza. It needs to be set and match the root subvolume:

 rootflags=subvol=ROOT/@

The same has to be defined in your fstab, as part of the / mount point, otherwise modifying the snapshots' fstab files will fail. If it's missing, fix the main fstab file and also the fstab files of the latest three snapshots since you've set the "count" option to three. Which version do you have installed? Please run:

pacman -Q refind-btrfs

If it isn't version 0.3.3 please update the package, pacman should warn you about the /etc/refind-btrfs.conf being changed - just replace the current config file with the .pacnew one and change the "selection_count" option to 3. I've renamed the "count" option to "selection_count" a couple of days ago meaning that having it set at "count" should break.

This is how I'd define your stanza:

menuentry "EndeavourOS" {
    icon /EFI/refind/icons/os_arch.png
    volume endeavouros
    loader /ROOT/@/boot/vmlinuz-linux
    initrd /ROOT/@/boot/initramfs-linux.img
    options "root=PARTUUID=826a2285-25bc-3443-9fea-cda9f20b7b59 rw rootflags=subvol=ROOT/@ loglevel=3 nowatchdog apparmor=1 security=apparmor radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1 add_efi_memmap initrd=ROOT\@\boot\intel-ucode.img"
    submenuentry "Boot using fallback initramfs" {
        initrd /ROOT/@/boot/initramfs-linux-fallback.img
    }
    submenuentry "Boot to terminal" {
        add_options "systemd.unit=multi-user.target"
    }
}

This way it should match with the root partition and its boot file paths ("loader" and "initrd") should be replaced accordingly.

ahmed-tasaly commented 3 years ago

e Thank you very much for your help :)))) in fact i have looked many times at the read-me and at the prerequisites. but i didn't notice it ,, sorry for that

I changed the stanza as you mentioned but I forgot that I had changed the default Btrfs before so booting failed

I had to switch the default Btrfs subvolume to 0 then It accepted it

thank you again for your help

may allah guide you

Venom1991 commented 3 years ago

I'm glad it works now. Just make sure to at least check the generated stanza and a random snapshot's (of those selected for booting) fstab file.