From: Pete Appleton <grub-devl-pma@catcity.dyndns.org>
To: The development of GNU GRUB <grub-devel@gnu.org>
Subject: Re: [PATCH] Allow user to choose between path or fs-label instead of UUID
Date: Tue, 18 Sep 2012 22:13:40 +0100 [thread overview]
Message-ID: <5058E404.9010608@catcity.dyndns.org> (raw)
In-Reply-To: <5058C0AC.1060407@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 647 bytes --]
On 18/09/12 19:42, Vladimir 'φ-coder/phcoder' Serbinenko wrote:
> On 18.09.2012 20:26, Pete Appleton wrote:
>
>> GRUB_DEVICE_IDENTIFICATION renamed to LINUX_DEVICE_IDENTIFICATION
>> GRUB_DEVICE_LABEL renamed to LINUX_DEVICE_LABEL as also Linux specific
>> GRUB_DEVICE_BOOT_LABEL removed completely as unused (was added
>> purely for symmetry)
>> if statements replaced by case
> Linux-specific vars aren't exempted from the need to be in GRUB_* namespace.
Renamed LINUX_DEVICE_IDENTIFICATION to GRUB_DEVICE_IDENTIFICATION_LINUX
Renamed LINUX_DEVICE_LABEL to GRUB_DEVICE_LABEL_LINUX
Regards,
Pete Appleton
[-- Attachment #2: linux_fslabel_support.patch --]
[-- Type: text/x-patch, Size: 5926 bytes --]
=== modified file 'docs/grub.texi'
--- old/docs/grub.texi 2012-07-31 22:18:57 +0000
+++ new/docs/grub.texi 2012-09-18 21:05:03 +0000
@@ -1285,6 +1285,19 @@
the Linux kernel, using a @samp{root=UUID=...} kernel parameter. This is
usually more reliable, but in some cases it may not be appropriate. To
disable the use of UUIDs, set this option to @samp{true}.
+@samp{GRUB_DEVICE_IDENTIFICATION_LINUX} governs the scheme used instead of
+the UUID, either the file system label or the traditional device path
+
+@item GRUB_DEVICE_IDENTIFICATION_LINUX
+Works in conjunction with GRUB_DISABLE_LINUX_UUID to determine how the root filesystem
+will be identified for the Linux kernel. The default value is @samp{uuid}, which will use UUIDs.
+Other alternatives are @samp{label} to use the file system label, or @samp{path} to use
+the traditional device path (@samp{/dev/sda1})
+
+@item GRUB_SEARCH_METHOD
+Governs the method used to generate the search directive (as opposed to the Linux root filesysttem)
+using the same settings as @samp{GRUB_DEVICE_IDENTIFICATION_LINUX}. If unset or unrecognised
+then GRUB will default to searching by UUID
@item GRUB_DISABLE_RECOVERY
If this option is set to @samp{true}, disable the generation of recovery
=== modified file 'util/grub-mkconfig.in'
--- old/util/grub-mkconfig.in 2012-04-07 17:49:25 +0000
+++ new/util/grub-mkconfig.in 2012-09-18 21:05:03 +0000
@@ -131,6 +131,7 @@
# Device containing our userland. Typically used for root= parameter.
GRUB_DEVICE="`${grub_probe} --target=device /`"
GRUB_DEVICE_UUID="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true
+GRUB_DEVICE_LABEL_LINUX="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2> /dev/null`" || true
# Device containing our /boot partition. Usually the same as GRUB_DEVICE.
GRUB_DEVICE_BOOT="`${grub_probe} --target=device /boot`"
@@ -170,11 +171,19 @@
if [ "x${GRUB_ACTUAL_DEFAULT}" = "xsaved" ] ; then GRUB_ACTUAL_DEFAULT="`"${grub_editenv}" - list | sed -n '/^saved_entry=/ s,^saved_entry=,,p'`" ; fi
+# Default to UUID if GRUB_DEVICE_IDENTIFICATION_LINUX is undefined or unrecognised
+case "x${GRUB_DEVICE_IDENTIFICATION_LINUX}" in
+ xuuid) ;;
+ xlabel) ;;
+ xpath)) ;;
+ *) LINUX_DEVICE_IDENTIFCATION = uuid ;;
+esac
# These are defined in this script, export them here so that user can
# override them.
export GRUB_DEVICE \
GRUB_DEVICE_UUID \
+ GRUB_DEVICE_LABEL_LINUX \
GRUB_DEVICE_BOOT \
GRUB_DEVICE_BOOT_UUID \
GRUB_FS \
@@ -216,7 +225,9 @@
GRUB_INIT_TUNE \
GRUB_SAVEDEFAULT \
GRUB_ENABLE_CRYPTODISK \
- GRUB_BADRAM
+ GRUB_BADRAM \
+ GRUB_DEVICE_IDENTIFICATION_LINUX \
+ GRUB_SEARCH_METHOD
if test "x${grub_cfg}" != "x"; then
rm -f "${grub_cfg}.new"
=== modified file 'util/grub-mkconfig_lib.in'
--- old/util/grub-mkconfig_lib.in 2012-07-22 18:02:17 +0000
+++ new/util/grub-mkconfig_lib.in 2012-09-18 18:15:21 +0000
@@ -146,22 +146,30 @@
done
fi
- # If there's a filesystem UUID that GRUB is capable of identifying, use it;
+ # If there's a filesystem UUID or label that GRUB is capable of identifying, use it according to GRUB_SEARCH_METHOD
# otherwise set root as per value in device.map.
fs_hint="`"${grub_probe}" --device "${device}" --target=compatibility_hint`"
if [ "x$fs_hint" != x ]; then
echo "set root='$fs_hint'"
fi
- if fs_uuid="`"${grub_probe}" --device "${device}" --target=fs_uuid 2> /dev/null`" ; then
+ if [ "x${GRUB_SEARCH_METHOD}" = "xlabel" ] && fs_label="`"${grub_probe}" --device "${device}" --target=fs_label 2> /dev/null`" ; then
hints="`"${grub_probe}" --device "${device}" --target=hints_string 2> /dev/null`" || hints=
echo "if [ x\$feature_platform_search_hint = xy ]; then"
- echo " search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}"
+ echo " search --no-floppy --label --set=root ${hints} ${fs_label}"
echo "else"
- echo " search --no-floppy --fs-uuid --set=root ${fs_uuid}"
+ echo " search --no-floppy --label --set=root ${fs_label}"
echo "fi"
+ else
+ if fs_uuid="`"${grub_probe}" --device "${device}" --target=fs_uuid 2> /dev/null`" ; then
+ hints="`"${grub_probe}" --device "${device}" --target=hints_string 2> /dev/null`" || hints=
+ echo "if [ x\$feature_platform_search_hint = xy ]; then"
+ echo " search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}"
+ echo "else"
+ echo " search --no-floppy --fs-uuid --set=root ${fs_uuid}"
+ echo "fi"
+ fi
fi
}
-
grub_get_device_id ()
{
device="$1"
=== modified file 'util/grub.d/10_linux.in'
--- old/util/grub.d/10_linux.in 2012-07-22 18:02:17 +0000
+++ new/util/grub.d/10_linux.in 2012-09-18 21:10:51 +0000
@@ -43,13 +43,27 @@
;;
esac
-if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
- || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
- || uses_abstraction "${GRUB_DEVICE}" lvm; then
- LINUX_ROOT_DEVICE=${GRUB_DEVICE}
-else
- LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
-fi
+case x"$GRUB_DEVICE_IDENTIFICATION_LINUX" in
+ xpath)
+ LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+ ;;
+ xlabel)
+ if [ "x${GRUB_DEVICE_LABEL_LINUX}" = "x" ] \
+ || ! test -e "/dev/disk/by-label/${GRUB_DEVICE_LABEL}" \
+ || uses_abstraction "${GRUB_DEVICE}" lvm; then
+ LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+ else
+ LINUX_ROOT_DEVICE=LABEL=\"${GRUB_DEVICE_LABEL_LINUX}\"
+ fi;;
+ *)
+ if [ "x{GRUB_DEVICE_UUID}" = "x" ] \
+ || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+ || uses_abstraction "${GRUB_DEVICE}" lvm; then
+ LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+ else
+ LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+ fi;;
+esac
GRUBFS="`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2>/dev/null || true`"
next prev parent reply other threads:[~2012-09-18 21:15 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-16 16:57 [PATCH] Allow user to choose between path or fs-label instead of UUID Pete Appleton
2012-09-16 17:40 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-09-16 20:51 ` Pete Appleton
2012-09-18 8:54 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-09-18 18:26 ` Pete Appleton
2012-09-18 18:42 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-09-18 21:13 ` Pete Appleton [this message]
2012-09-18 21:22 ` Pete Appleton
-- strict thread matches above, loose matches on Subject: below --
2014-05-15 16:23 jpacner
2014-05-27 9:38 ` jpacner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5058E404.9010608@catcity.dyndns.org \
--to=grub-devl-pma@catcity.dyndns.org \
--cc=grub-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).