grub2/0248-grub-switch-to-blscfg.in-Better-boot-prefix-checking.patch
Javier Martinez Canillas afb0baacd6
Use BLS fragment filename as menu entry id and for sort criterion
The BLS config filenames are guaranteed to be unique, so they can be
used as GRUB2 entry id and can also be used to sort the menu entries.

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
2018-07-02 17:33:09 +02:00

76 lines
2.6 KiB
Diff

From b3ac18e3265f709b35fe0aa5578c6f4030882a4d Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Fri, 22 Jun 2018 14:04:28 -0400
Subject: [PATCH 248/250] grub-switch-to-blscfg.in: Better boot prefix checking
Signed-off-by: Peter Jones <pjones@redhat.com>
---
util/grub-switch-to-blscfg.in | 36 +++++++++++++++++-------------------
1 file changed, 17 insertions(+), 19 deletions(-)
diff --git a/util/grub-switch-to-blscfg.in b/util/grub-switch-to-blscfg.in
index dac41e73836..884cf45b1e1 100644
--- a/util/grub-switch-to-blscfg.in
+++ b/util/grub-switch-to-blscfg.in
@@ -219,30 +219,31 @@ EOF
}
for kernelver in $(cd /lib/modules/ ; ls -1) "" ; do
- if [ ! -d "/lib/modules/${kernelver}" ] ; then
- continue
- fi
- if [ ! -f "/boot/vmlinuz-${kernelver}" ]; then
- continue
- fi
bls_target="${blsdir}/${MACHINE_ID}-${kernelver}.conf"
+ linux="$(grep '^linux[ \t]' "${bls_target}" | sed -e 's,^linux[ \t]+,,')"
kernel_dir="/lib/modules/${kernelver}"
- if [ -f "${kernel_dir}/bls.conf" ]; then
+
+ if [ ! -d "${kernel_dir}" ] ; then
+ continue
+ fi
+ if [ ! -f "${linux_path}" ]; then
+ continue
+ fi
+
+ linux_relpath="$("${grub_mkrelpath}" "${linux}")"
+ bootprefix="${linux%%"${linux_relpath}"}"
+
+ if [ -f "${kernel_dir}/bls.conf" ] ; then
cp -af "${kernel_dir}/bls.conf" "${bls_target}"
else
mkbls "${kernelver}" \
"$(date -u +%Y%m%d%H%M%S -d "$(stat -c '%y' "${kernel_dir}")")" \
+ "${bootprefix}" \
>"${bls_target}"
fi
- linux="$(grep '^linux[ \t]' "${bls_target}" | sed -e 's,^linux[ \t]*,,')"
- initrd="$(grep '^initrd[ \t]' "${bls_target}" | sed -e 's,^initrd[ \t]*,,')"
- linux_relpath="$("${grub_mkrelpath}" /boot/$linux)"
- initrd_relpath="$("${grub_mkrelpath}" /boot/$initrd)"
-
- if [ $linux != $linux_relpath ] ; then
- sed -i -e "s,^linux.*,linux ${linux_relpath},g" "${bls_target}"
- sed -i -e "s,^initrd.*,initrd ${initrd_relpath},g" "${bls_target}"
+ if [ -n "${bootprefix}" ]; then
+ sed -i -e "s,\([ \t]\)${bootprefix},\1,g" "${bls_target}"
fi
if [ "x$GRUB_LINUX_MAKE_DEBUG" = "xtrue" ]; then
@@ -257,10 +258,7 @@ for kernelver in $(cd /lib/modules/ ; ls -1) "" ; do
fi
done
-if [ -f "/boot/vmlinuz-0-rescue-${MACHINE_ID}" ]; then
- if [ $linux != $linux_relpath ]; then
- bootprefix="$(dirname ${linux_relpath})"
- fi
+if [ -n "${bootprefix}" -a -f "/boot/vmlinuz-0-rescue-${MACHINE_ID}" ]; then
mkbls "0-rescue-${MACHINE_ID}" "0" "${bootprefix}" >"${blsdir}/${MACHINE_ID}-0-rescue.conf"
fi
--
2.17.1