I installed openSUSE Tumbleweed on previously prepared partitions. I assumed that 300 MB for the EFI partition and about 1.2 GB for the BOOT partition would be sufficient. I expected the kernel files along with their additions to be stored on the BOOT partition, but unfortunately they are currently being written to the EFI partition.
Because the first update filled up the EFI partition and I could no longer perform another zypper dup, I decided to resize the EFI partition. Since the BOOT partition was essentially unused (it had mount point for EFI), I decided to remove it and merge it with the EFI partition. In my case this was fairly convenient, because the BOOT partition was created directly after the EFI partition, so I could cannibalize it for EFI. I did this after first making a backup of the entire EFI contents onto the ROOT disk.
My ROOT partition is on Btrfs and sits on top of MD. I have three NVMe disks: on disk 0 I have the boot setup, and on disks 1 and 2 I have swap partitions. In this way, I boot from disk 0 and have a RAID 0 (striped) array across three NVMe disks, all with logically aligned sizes for the RAID.
After booting from a live disk with GParted, I opened a console and made sure that all drivers could see the partitions and RAID disks as expected. Then I deleted the BOOT partition, expanded the EFI partition to the full size of both partitions combined (EFI + BOOT), created a filesystem on EFI, and copied the old EFI contents onto the enlarged EFI partition. Up to this point, everything was fine.
After these operations, I created a directory on the ROOT disk for mounting EFI under the boot directory (just as it was before) and modified /etc/fstab by removing the BOOT partition mount entry, since that partition no longer existed.
At this point I performed a chroot and ran dracut to generate new boot code for the system. Unfortunately, Tumbleweed now reaches the splash screen with the spinning wheel and after some time (a few minutes?) drops into emergency mode with a Dracut console.
The messages indicate that the system is trying to mount the old BOOT partition. In the new fstab I provided the UUID of the new EFI partition for mounting, but somehow a plain invocation of dracut did not take my new entries into account.
How can I properly regenerate the initramfs and related components so that the system boots normally again?
I also considered passing some disk mapping parameters from the Dracut console to get the system to boot once, and then run a normal zypper dup, which would probably resolve the issue. However, so far I haven’t had a clear idea of what parameters and settings I would need to pass at boot time from that console.
Do you have any ideas on how to get out of this situation? I definitely do not want to reinstall the system, and I want to keep the existing data intact.