I think it could at least partly be caused by the use of zstd compression — or, indeed, any compression at all — on the initramfs when /boot is on a btrfs filesystem, given that btrfs is commonly already used with compression of its own.
The double compression — and especially so if two different algorithms are used — will create sparse files, which grub cannot handle.
I cannot replicate the issue — or at least, not at the moment — because I’m on an all-Intel system, and even though I do have /boot on btrfs, I am using caten lieu of compression in /etc/mkinitcpio.conf.
# COMPRESSION
# Use this to compress the initramfs image. By default, zstd compression
# is used for Linux ≥ 5.9 and gzip compression is used for Linux < 5.9.
# Use 'cat' to create an uncompressed image.
#COMPRESSION="zstd"
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"
#COMPRESSION="zstd"
COMPRESSION=cat
But that’s all of them, isn’t it? All of our ISOs use calamares for installing, and they all have grub as the default boot loader.
I don’t know too much about how calamares works — it’s written in Python, isn’t it? — but if it creates the initramfs with compression, then that could be the cause.
For that matter, one could also have a small ext4 partition for /boot while keeping btrfs for the rest, although I’m not sure how well that would work with timeshift, snapper and friends.
I myself do have a separate /boot partition, but it’s btrfs as well, and I don’t use snapshots. I use timeshift in rsync mode, with the backups stored on a physically separate medium — a spinning HDD.
This could indicate that decompression is failing.
Test:
Generate initramdisk with 6.12 and boot with 6.15
Generate initramdisk with 6.15 and boot with 6.12
Generate initramdisk with cat (to avoid trying to compress twice)
Then you have a useful indication of whether the problem is with compression or decompression.
A simple workaround may be using cat (This may be the reason why some people (like me) don’t have problems whith booting 6.15)
As can be seen, it’s really useful to have more than one kernel installed, and one of them LTS.