From 28440c9b5f83b82b4715554fa5c2d3f013b769e6 Mon Sep 17 00:00:00 2001 From: Michael Chang Date: Tue, 26 Mar 2024 13:55:53 +0800 Subject: [PATCH] 10_linux: Ensure persistence of root file system mounting This commit addresses the issue where the by-uuid or by-partuuid device symlinks might be unavailable in an installation system. Despite the absence of these symlinks, the resulting system remains fully functional for mounting the root file system by using persistent names (root=(UUID|PARTUUID)=). The patch implemented in this commit aims to prevent fallback to the OS name as the root= parameter, as persistent names are preferred for stability and predictability. To achieve this, the fallback to the OS name won't be triggered if the corresponding by-uuid or by-partuuid symlinks are missing, ensuring the use of persistent names. Instead, a warning will be logged for the missing symlinks, providing visibility into the issue. Signed-off-by: Michael Chang --- util/grub.d/10_linux.in | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in index 5531239eb..4d8bdeac2 100644 --- a/util/grub.d/10_linux.in +++ b/util/grub.d/10_linux.in @@ -54,14 +54,16 @@ esac if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) \ || ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \ && [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "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} elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \ || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then + test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" || + echo "WARN: Use PARTUUID=${GRUB_DEVICE_PARTUUID} despite missing by-partuuid symlink" >&2 LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID} else + test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" || + echo "WARN: Use UUID=${GRUB_DEVICE_UUID} despite missing by-uuid symlink" >&2 LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID} fi -- 2.44.0