Here it is, as a single patch, and in reply to the corresponding thread this time!
--- util/grub-mkconfig.in | 1 + util/grub-mkconfig_lib.in | 14 +++++++++++--- util/grub.d/10_linux.in | 3 +++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in index 32c480dae..fb5000d3f 100644 --- a/util/grub-mkconfig.in +++ b/util/grub-mkconfig.in @@ -244,6 +244,7 @@ export GRUB_DEFAULT \ GRUB_DISABLE_UUID \ GRUB_DISABLE_LINUX_UUID \ GRUB_DISABLE_LINUX_PARTUUID \ + GRUB_ENABLE_LINUX_LABEL \ GRUB_DISABLE_RECOVERY \ GRUB_VIDEO_BACKEND \ GRUB_GFXMODE \ diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in index 08953287c..dd726c4b3 100644 --- a/util/grub-mkconfig_lib.in +++ b/util/grub-mkconfig_lib.in @@ -158,14 +158,22 @@ prepare_grub_to_access_device () fi if [ "x${GRUB_DISABLE_UUID}" != "xtrue" ] && fs_uuid="`"${grub_probe}" --device $@ --target=fs_uuid 2> /dev/null`" ; then hints="`"${grub_probe}" --device $@ --target=hints_string 2> /dev/null`" || hints= + + if [ "x${GRUB_ENABLE_LINUX_LABEL}" = "xtrue" ] \ + && [ -b "/dev/disk/by-label/$(blkid -l -t UUID=${fs_uuid} -s LABEL -o value)" ]; then + device="--label $(blkid -l -t UUID=${fs_uuid} -s LABEL -o value)" + else + device="--fs-uuid ${fs_uuid}" + fi + if [ "x$hints" != x ]; then echo "if [ x\$feature_platform_search_hint = xy ]; then" - echo " search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}" + echo " search --no-floppy --set=root ${hints} ${device}" echo "else" - echo " search --no-floppy --fs-uuid --set=root ${fs_uuid}" + echo " search --no-floppy --set=root ${device}" echo "fi" else - echo "search --no-floppy --fs-uuid --set=root ${fs_uuid}" + echo "search --no-floppy --set=root ${device}" fi fi IFS="$old_ifs" diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in index cc393be7e..04b973fe7 100644 --- a/util/grub.d/10_linux.in +++ b/util/grub.d/10_linux.in @@ -61,6 +61,9 @@ if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \ || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID} +elif [ "x${GRUB_ENABLE_LINUX_LABEL}" = "xtrue" ] \ + && [ -b "/dev/disk/by-label/$(blkid -l -t UUID=${GRUB_DEVICE_UUID} -s LABEL -o value)" ]; then + LINUX_ROOT_DEVICE=LABEL="$(blkid -l -t UUID=${GRUB_DEVICE_UUID} -s LABEL -o value)" else LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID} fi -- 2.30.2 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel