I have two compiles of the same kernel version (4.0.5+gentoo patches). One boots, correctly, but lacks several kernel CONFIG flags.
Adding those flags and running
make all && make install gives me an "unable to find root device /dev/sda4" error.
I have a bog-standard
/dev/sda1 /boot ext2 noauto,noatime,discard 0 2 /dev/sda4 / ext4 noatime,discard 0 1 /dev/sda3 none swap sw 0 0 /dev/cdrom /mnt/cdrom auto noauto,ro 0 0 /dev/fd0 /mnt/floppy auto noauto 0 0
Inspection of the fine Googles suggests that this due to some configuration in the initramfs, which is... interesting (and hard to debug, as far as I can tell!).
I'm using Grub 1 with the following configuration:
title Gentoo Linux 4.0.5 - no docker, has X. root (hd0,0) kernel /boot/vmlinuz-4.0.5-gentoo-x root=/dev/sda4 rootfstype=ext4 initrd /boot/initramfs-genkernel-x86_64-4.0.5-gentoo title Gentoo Linux 4.0.5 - latest build. root (hd0,0) kernel /boot/vmlinuz-4.0.5-gentoo root=/dev/sda4 rootfstype=ext4 initrd /boot/initramfs-genkernel-x86_64-4.0.5-gentoo
Note that the first entry is the booting build and the second is the non-booting build.
My suspicion is that the kernel + initramfs have a binary matching requirement, and the new build changes up the binary locations, causing the firmware to be unloadable.
If someone has some links to authoritative documentation on kernels/initramfs/root device interaction or an authoritative answer that would be appreciated.
Edit: Spending some time studying this, it turns out that
UUID=<uuid> doesn't help either. However, it appears that in the dysfunctional boot, dropping into the initramfs shell demonstrates that
/dev/sda<1-4> don't exist (which is what I'm trying to find). Hmmm.