Colin Watson and my suspicions about search behavior is right: search does NOT change variable "root" if the device was not found. But there is a lack of clear wordings of that fact in grub> help search text. So, I changed this bug to NEW again, hoping documentation strings will get clearer....
** Changed in: grub2 (Ubuntu) Status: Won't Fix => New ** Description changed: Binary package hint: grub2 Such an entry: -------------- - menuentry "Ubuntu, mit Linux 2.6.32-17-generic" --class ubuntu --class gnu-linux --class gnu --class os { - recordfail - insmod ext2 - set root='(/dev/sda,3)' - search --no-floppy --fs-uuid --set 67f844a5-1afd-4265-932f-e57e078c0fdc - linux /boot/vmlinuz-2.6.32-17-generic root=/dev/sda3 ro quiet noresume splash nvidia.modeset=1 - initrd /boot/initrd.img-2.6.32-17-generic - } + menuentry "Ubuntu" --class ubuntu --class gnu-linux --class gnu --class os { + recordfail + insmod ext2 + set root='(/dev/sda,3)' + search --no-floppy --fs-uuid --set 67f844a5-1afd-4265-932f-e57e078c0fdc + linux /boot/vmlinuz-2.6.32-17-generic root=/dev/sda3 ro quiet noresume splash nvidia.modeset=1 + initrd /boot/initrd.img-2.6.32-17-generic + } ------------ is unneeded complicated. Ubuntu should deliver this output (of upgrade-grub) instead: -------------- - menuentry "Ubuntu, mit Linux 2.6.32-17-generic" --class ubuntu --class gnu-linux --class gnu --class os { - recordfail - insmod ext2 - # set root='(/dev/sda,3)' + menuentry "Ubuntu" --class ubuntu --class gnu-linux --class gnu --class os { + recordfail + insmod ext2 + # set root='(/dev/sda,3)' # we can comment out "set root" as search will take over setting root - search --no-floppy --fs-uuid --set 67f844a5-1afd-4265-932f-e57e078c0fdc - linux /boot/vmlinuz-2.6.32-17-generic root=/dev/sda3 ro quiet noresume splash nvidia.modeset=1 - initrd /boot/initrd.img-2.6.32-17-generic - } + search --no-floppy --fs-uuid --set 67f844a5-1afd-4265-932f-e57e078c0fdc + linux /boot/vmlinuz-2.6.32-17-generic root=/dev/sda3 ro quiet noresume splash nvidia.modeset=1 + initrd /boot/initrd.img-2.6.32-17-generic + } ------------ - The only reason to "set root" should be, if command "search" has a feature + The only reason to "set root" should be, if command "search" has a feature to NOT manipulate the "root" variable if it fails to find the searched partition. ** Description changed: Binary package hint: grub2 Such an entry: -------------- menuentry "Ubuntu" --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod ext2 set root='(/dev/sda,3)' search --no-floppy --fs-uuid --set 67f844a5-1afd-4265-932f-e57e078c0fdc - linux /boot/vmlinuz-2.6.32-17-generic root=/dev/sda3 ro quiet noresume splash nvidia.modeset=1 + linux /boot/vmlinuz-2.6.32-17-generic root=/dev/sda3 ro quiet noresume splash initrd /boot/initrd.img-2.6.32-17-generic } ------------ is unneeded complicated. Ubuntu should deliver this output (of upgrade-grub) instead: -------------- menuentry "Ubuntu" --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod ext2 # set root='(/dev/sda,3)' # we can comment out "set root" as search will take over setting root search --no-floppy --fs-uuid --set 67f844a5-1afd-4265-932f-e57e078c0fdc linux /boot/vmlinuz-2.6.32-17-generic root=/dev/sda3 ro quiet noresume splash nvidia.modeset=1 initrd /boot/initrd.img-2.6.32-17-generic } ------------ The only reason to "set root" should be, if command "search" has a feature to NOT manipulate the "root" variable if it fails to find the searched partition. ** Description changed: Binary package hint: grub2 Such an entry: -------------- menuentry "Ubuntu" --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod ext2 set root='(/dev/sda,3)' search --no-floppy --fs-uuid --set 67f844a5-1afd-4265-932f-e57e078c0fdc linux /boot/vmlinuz-2.6.32-17-generic root=/dev/sda3 ro quiet noresume splash initrd /boot/initrd.img-2.6.32-17-generic } ------------ is unneeded complicated. Ubuntu should deliver this output (of upgrade-grub) instead: -------------- menuentry "Ubuntu" --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod ext2 # set root='(/dev/sda,3)' # we can comment out "set root" as search will take over setting root search --no-floppy --fs-uuid --set 67f844a5-1afd-4265-932f-e57e078c0fdc - linux /boot/vmlinuz-2.6.32-17-generic root=/dev/sda3 ro quiet noresume splash nvidia.modeset=1 + linux /boot/vmlinuz-2.6.32-17-generic root=/dev/sda3 ro quiet noresume splash initrd /boot/initrd.img-2.6.32-17-generic } ------------ The only reason to "set root" should be, if command "search" has a feature to NOT manipulate the "root" variable if it fails to find the searched partition. -- comment out _set_root_ in grub.cfg https://bugs.launchpad.net/bugs/549227 You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs