From 1b55f4c84da6d6485247a3dd84cc8b8bca8cc02f Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Tue, 17 Jul 2018 16:46:37 -0400 Subject: [PATCH] Fix some lingering bls issues Signed-off-by: Peter Jones --- ...lscfg-Only-fix-boot-prefix-for-non-g.patch | 48 +++++++++++++++++++ grub.macros | 15 ++---- grub.patches | 1 + 3 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 0371-grub-switch-to-blscfg-Only-fix-boot-prefix-for-non-g.patch diff --git a/0371-grub-switch-to-blscfg-Only-fix-boot-prefix-for-non-g.patch b/0371-grub-switch-to-blscfg-Only-fix-boot-prefix-for-non-g.patch new file mode 100644 index 00000000..431d95a2 --- /dev/null +++ b/0371-grub-switch-to-blscfg-Only-fix-boot-prefix-for-non-g.patch @@ -0,0 +1,48 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Javier Martinez Canillas +Date: Tue, 17 Jul 2018 20:22:39 +0200 +Subject: [PATCH] grub-switch-to-blscfg: Only fix boot prefix for non-generated + BLS files + +The BLS files are either copied from /lib/modules/$kernelver/bls.conf or +generated if this file doesn't exist. The shipped bls.conf default path +for the kernel and initramfs is relative to the boot partition. + +But in some setups /boot may not be a mount point so in that case the +boot prefix has to be added to the BLS. But we already provide this +prefix for generated BLS files so attempting to add a boot prefix will +lead to a path that contains the boot prefix twice (i.e: /boot/boot). + +Reported-by: Hans de Goede +Signed-off-by: Javier Martinez Canillas +--- + util/grub-switch-to-blscfg.in | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/util/grub-switch-to-blscfg.in b/util/grub-switch-to-blscfg.in +index 40612e00686..9cf64f8e725 100644 +--- a/util/grub-switch-to-blscfg.in ++++ b/util/grub-switch-to-blscfg.in +@@ -236,6 +236,10 @@ for kernelver in $(cd /lib/modules/ ; ls -1) "" ; do + + if [ -f "${kernel_dir}/bls.conf" ] ; then + cp -af "${kernel_dir}/bls.conf" "${bls_target}" ++ if [ -n "${bootprefix}" ]; then ++ sed -i -e "s,^\(linux[^ \t]*[ \t]\+\).*,\1${bootprefix}${linux},g" "${bls_target}" ++ sed -i -e "/^initrd/ s,\([ \t]\+\)\([^ \t]\+\),\1${bootprefix}\2,g" "${bls_target}" ++ fi + else + mkbls "${kernelver}" \ + "$(date -u +%Y%m%d%H%M%S -d "$(stat -c '%y' "${kernel_dir}")")" \ +@@ -243,11 +247,6 @@ for kernelver in $(cd /lib/modules/ ; ls -1) "" ; do + >"${bls_target}" + fi + +- if [ -n "${bootprefix}" ]; then +- sed -i -e "s,^\(linux[^ \t]*[ \t]\+\).*,\1${bootprefix}${linux},g" "${bls_target}" +- sed -i -e "/^initrd/ s,\([ \t]\+\)\([^ \t]\+\),\1${bootprefix}\2,g" "${bls_target}" +- fi +- + if [ "x$GRUB_LINUX_MAKE_DEBUG" = "xtrue" ]; then + arch="$(uname -m)" + bls_debug="$(echo ${bls_target} | sed -e "s/\.${arch}/-debug.${arch}/")" diff --git a/grub.macros b/grub.macros index 471b95f6..2de8e102 100644 --- a/grub.macros +++ b/grub.macros @@ -408,9 +408,6 @@ cd .. \ %define do_efi_install() \ cd grub-%{1}-%{tarversion} \ -install -m 700 -d $RPM_BUILD_ROOT%{efi_esp_dir}/ \ -install -m 700 -d $RPM_BUILD_ROOT%{efi_esp_dir}/loader/entries \ -install -m 700 -d $RPM_BUILD_ROOT/boot/grub2/ \ make DESTDIR=$RPM_BUILD_ROOT install \ if [ -f $RPM_BUILD_ROOT%{_infodir}/grub.info ]; then \ rm -f $RPM_BUILD_ROOT%{_infodir}/grub.info \ @@ -453,7 +450,6 @@ if [ %{3} -eq 0 ]; then \ ${RPM_BUILD_ROOT}/boot/%{name}/grubenv create \ fi \ cd .. \ -install -d -m 0755 ${RPM_BUILD_ROOT}/boot/loader/entries \ %{nil} %define do_common_install() \ @@ -466,12 +462,12 @@ cp -a $RPM_BUILD_ROOT%{_datarootdir}/locale/en\@quot \\\ cp docs/grub.info $RPM_BUILD_ROOT%{_infodir}/%{name}.info \ cp docs/grub-dev.info \\\ $RPM_BUILD_ROOT%{_infodir}/%{name}-dev.info \ -# Ghost config file \ install -d -m 0700 ${RPM_BUILD_ROOT}%{efi_esp_dir}/ \ install -d -m 0700 ${RPM_BUILD_ROOT}/boot/grub2/ \ -install -d -m 0755 ${RPM_BUILD_ROOT}/boot/%{name}/themes/system \ -install -d -m 0755 ${RPM_BUILD_ROOT}%{_sysconfdir}/default \ -install -d -m 0755 ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig \ +install -d -m 0700 ${RPM_BUILD_ROOT}/boot/loader/entries \ +install -d -m 0700 ${RPM_BUILD_ROOT}/boot/%{name}/themes/system \ +install -d -m 0700 ${RPM_BUILD_ROOT}%{_sysconfdir}/default \ +install -d -m 0700 ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig \ touch ${RPM_BUILD_ROOT}%{_sysconfdir}/default/grub \ ln -sf ../default/grub \\\ ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/grub \ @@ -504,8 +500,7 @@ touch ${RPM_BUILD_ROOT}/boot/%{name}/grub.cfg \ %config(noreplace) %{_sysconfdir}/%{name}-efi.cfg \ %attr(0700,root,root)%{efi_esp_dir}/%{2} \ %dir %attr(0700,root,root)%{efi_esp_dir}/fonts \ -%dir %attr(0700,root,root)%{efi_esp_dir}/loader \ -%dir %attr(0700,root,root)%{efi_esp_dir}/loader/entries \ +%dir %attr(0700,root,root)/boot/loader/entries \ %ghost %config(noreplace) %attr(0700,root,root)%{efi_esp_dir}/grub.cfg \ /boot/grub2/grubenv \ %ghost %config(noreplace) %attr(0700,root,root)%{efi_esp_dir}/grubenv \ diff --git a/grub.patches b/grub.patches index 777baab3..d79b4921 100644 --- a/grub.patches +++ b/grub.patches @@ -368,3 +368,4 @@ Patch0367: 0367-blscfg-don-t-leak-bls_entry.filename.patch Patch0368: 0368-blscfg-fix-compilation-on-EFI-and-EMU.patch Patch0369: 0369-Add-loadenv-to-blscfg-and-loadenv-source-file-list.patch Patch0370: 0370-blscfg-Get-rid-of-the-linuxefi-linux16-linux-distinc.patch +Patch0371: 0371-grub-switch-to-blscfg-Only-fix-boot-prefix-for-non-g.patch