Package: grub-common Version: 2.04-5 When update-grub is run from the Debian bullseye/sid system, 30_os-prober detects another OS (in this case Arch Linux) on a second drive. However, that Arch Linux system uses early loading of microcode updates - see: https://wiki.archlinux.org/index.php/Microcode
The grub.cfg generated on the Arch Linux disk provides two arguments to initrd: initrd /boot/intel-ucode.img /boot/initramfs-linux.img The grub.cfg generated by the Debian system produces an initrd for the Arch Linux boot selection that contains only: initrd /boot/intel-ucode.img As one might expect, attempting to boot Arch Linux from the grub boot menu selection generated by the Debian system results in: Kernel panic - not syncing: VFS: unable to mount root fs on unknown block(0,0) The fix would seem to be to make sure update-grub (or whatever it calls) reads all arguments to initrd. Manually editing grub.cfg on the Debian system adding the second argument to initrd solves the problem and the second OS boots as expected.