All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicholas Vinson <nvinson234@gmail.com>
To: grub-devel@gnu.org
Subject: [GRUB PARTUUID PATCH V8 4/4] Update grub script template files
Date: Wed, 28 Mar 2018 08:32:54 -0700	[thread overview]
Message-ID: <b5e7ff73a69b92b77c3b1ee10ac48f4303827ba9.1522249571.git.nvinson234@gmail.com> (raw)
In-Reply-To: <cover.1522249571.git.nvinson234@gmail.com>
In-Reply-To: <cover.1522249571.git.nvinson234@gmail.com>

Update grub-mkconfig.in and 10_linux.in to support grub-probe's new
partuuid target.  Update grub.texi documenation.

Signed-off-by: Nicholas Vinson <nvinson234@gmail.com>
---
 docs/grub.texi          |  9 +++++++++
 util/grub-mkconfig.in   |  3 +++
 util/grub.d/10_linux.in | 12 +++++++++---
 3 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/docs/grub.texi b/docs/grub.texi
index 65b4bbeda..019ce5d03 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -1424,6 +1424,15 @@ 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}.
 
+@item GRUB_ENABLE_LINUX_PARTUUID
+Setting this option to @samp{true} changes the behavior of
+@command{grub-mkconfig} so that it identifies the device containing the root
+filesystem by the partition UUID via the @samp{root=PARTUUID=...} kernel
+parameter.  This is desirable for Linux systems where identifying the root
+filesystem by its filesystem UUID or device name is inappropriate.  However,
+this option is only supported in Linux kernel versions 2.6.37 (3.10 for systems
+using the MSDOS partition scheme) or newer.
+
 @item GRUB_DISABLE_RECOVERY
 If this option is set to @samp{true}, disable the generation of recovery
 mode menu entries.
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
index 35ef583b0..9a1f92bdf 100644
--- a/util/grub-mkconfig.in
+++ b/util/grub-mkconfig.in
@@ -134,6 +134,7 @@ fi
 # 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_PARTUUID="`${grub_probe} --device ${GRUB_DEVICE} --target=partuuid 2> /dev/null`" || true
 
 # Device containing our /boot partition.  Usually the same as GRUB_DEVICE.
 GRUB_DEVICE_BOOT="`${grub_probe} --target=device /boot`"
@@ -188,6 +189,7 @@ if [ "x${GRUB_ACTUAL_DEFAULT}" = "xsaved" ] ; then GRUB_ACTUAL_DEFAULT="`"${grub
 # override them.
 export GRUB_DEVICE \
   GRUB_DEVICE_UUID \
+  GRUB_DEVICE_PARTUUID \
   GRUB_DEVICE_BOOT \
   GRUB_DEVICE_BOOT_UUID \
   GRUB_FS \
@@ -223,6 +225,7 @@ export GRUB_DEFAULT \
   GRUB_TERMINAL_OUTPUT \
   GRUB_SERIAL_COMMAND \
   GRUB_DISABLE_LINUX_UUID \
+  GRUB_ENABLE_LINUX_PARTUUID \
   GRUB_DISABLE_RECOVERY \
   GRUB_VIDEO_BACKEND \
   GRUB_GFXMODE \
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index faedf74e1..53de33bea 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -45,12 +45,18 @@ esac
 
 # btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
 # and mounting btrfs requires user space scanning, so force UUID in this case.
-if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
-    || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+if [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
+    || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
+    || ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+        && ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \
     || ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); then
   LINUX_ROOT_DEVICE=${GRUB_DEVICE}
-else
+elif [ "x${GRUB_ENABLE_LINUX_PARTUUID}" != "xtrue" ] \
+    || [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
+    || ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}"; then
   LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+else
+  LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID}
 fi
 
 case x"$GRUB_FS" in
-- 
2.16.3



  parent reply	other threads:[~2018-03-28 15:33 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-28 15:32 [GRUB PARTUUID PATCH V8 0/4] Add PARTUUID detection support Nicholas Vinson
2018-03-28 15:32 ` [GRUB PARTUUID PATCH V8 1/4] Centralize guid prints Nicholas Vinson
2018-03-28 15:32 ` [GRUB PARTUUID PATCH V8 2/4] Update grub_gpt_partentry Nicholas Vinson
2018-03-28 15:32 ` [GRUB PARTUUID PATCH V8 3/4] Add PARTUUID detection support to grub-probe Nicholas Vinson
2018-04-04 20:09   ` Daniel Kiper
2018-03-28 15:32 ` Nicholas Vinson [this message]
2018-04-04 20:23   ` [GRUB PARTUUID PATCH V8 4/4] Update grub script template files Daniel Kiper
2018-04-05  6:16     ` Nick Vinson

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=b5e7ff73a69b92b77c3b1ee10ac48f4303827ba9.1522249571.git.nvinson234@gmail.com \
    --to=nvinson234@gmail.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.