If one drops into edit on the grub boot menu amongst other entries is:-
linux /boot/vmlinuz********** root=UUID=
Are the two root entries different? I seem to recall that if the UUID is not used then the disk and partition is given in the normal Linux method, eg sda3 whereas the first entry is the original msdos method.
I’ve noticed too that if I boot to an external drive the drive identification alters so the 'set root=‘hd0,msdos3’ line is effectively wrong but it still seems to boot OK
set root= set root device for grub (and uses grub’s device designation). As far as I can understand it can be used multiple times throughout grub.cfg
Simplest way to test it or feel it, so to say, is to drop into grub interactive mode, set root and then try cat some file or open another grub config with configfile directive.
is equivalent to
– i.e. you can set root once so that you don’t have to enter in on every other line.
Also note that tab completion works in grub’s cli interface, it helps greatly with finding files you need.
Here’s it explained a bit in grub’s manual:
Root in the line linux... is setting root partition (not grub’s root device!) for linux kernel. grub itself doesn’t need it or use it – it’s just passes it as is to Linux kernel. If you don’t set root here or set it incorrectly – Linux won’t be able to boot.