Boot fail after adding a new device to encrypted btrfs root filesystem

Unfortunately, it showed “error: …/…/grub-core/disk/cryptodisk.c: 1519:no such cryptodisk found, perhaps a needed disk or cryptodisk module is not loaded.”

I made sure that sudo btrfs device scan could show /dev/mapper/cr_root and /dev/mapper/cr_sdcard properly before and after adding the device (and of course before rebooting).

A friend of mine told me that encrypted /boot crossing multiple devices may be the cause. I had added a SD card to another machine running unencrypted Tumbleweed as a new device and it ran and rebooted without any issues, so the encryption is the key in my opinion. So I am thinking that maybe grub cannot take hold of such a complicated system layout at the moment.

Is the physical device where this encrypted container is located visible under GRUB at all? How many devices do you have? Post

lsblk -f -o +partuuid

output

lsblk showed these information:

NAME          FSTYPE      FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS            PARTUUID
mmcblk0                                                                                                          
└─mmcblk0p1   crypto_LUKS 2           f05cf65d-4dfe-4456-acd6-95b5c247fed2                                       2cc89b03-44fb-48e0-8219-ae8ccdbacc2f
  └─cr_sdcard btrfs                   480c22a9-cc3c-48fe-bfe0-3256202e6725                                       
mmcblk1                                                                                                          
├─mmcblk1p1   vfat        FAT32       09BB-5475                             504.9M     1% /boot/efi              b8fcc8a0-fc63-4192-b3a4-1bf8c777e3e8
└─mmcblk1p2   crypto_LUKS 2           804b9a28-118a-4b3f-97c7-f20665d4af20                                       14b936ec-7bd8-4cd6-b452-fc060730bfda
  └─cr_root   btrfs                   92dc4c9a-fef1-4b23-9bd7-32e2453c3d2a   28.2G    47% /var                   
                                                                                          /usr/local             
                                                                                          /srv                   
                                                                                          /root                  
                                                                                          /home                  
                                                                                          /opt                   
                                                                                          /boot/grub2/x86_64-efi 
                                                                                          /boot/grub2/i386-pc    
                                                                                          /.snapshots            
                                                                                          /                      
mmcblk1boot0                                                                                                     
mmcblk1boot1                                                                                                     
zram0                                                                                     [SWAP]                 

The mmcblk0 is not visible in GRUB at all. On UEFI GRUB gets devices from the firmware, so for whatever reason your firmware does not expose this device at boot time (or maybe it is exposing it differently than the other one).

You could try booting EFI Shell and check whether this device is visible there. GRUB also offers the command lsefi that lists all visible EFI handles, but the output is very long and difficult to capture without console on the serial port.

So far it does not look like GRUB issue.

1 Like

Maybe firmware indeed is the problem. For your information, my machine is a Surface Go 3, which is not officially supported by kernel firmware if I recall it right.

And thank you very much for your help so far!