A set of fixes mostly BLS related
Fix --bls-directory option comment in grub2-switch-to-blscfg man page Resolves: rhbz#1714835 10_linux_bls: use '=' to separate --id argument due a Petitboot bug grub-set-bootflag: Print an error if failing to read from grubenv Resolves: rhbz#1702354 10_linux: generate BLS section even if no kernels are found in /boot 10_linux: don't search for OSTree kernels Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
This commit is contained in:
		
							parent
							
								
									f6da347edf
								
							
						
					
					
						commit
						04d38248e3
					
				| @ -0,0 +1,29 @@ | |||||||
|  | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Javier Martinez Canillas <javierm@redhat.com> | ||||||
|  | Date: Wed, 29 May 2019 10:58:58 +0200 | ||||||
|  | Subject: [PATCH] Fix --bls-directory option comment in grub2-switch-to-blscfg | ||||||
|  |  man page | ||||||
|  | 
 | ||||||
|  | The default directory for BLS fragments is always /boot/loader/entries for | ||||||
|  | both EFI and non-EFI. Fix the man page accordingly to document this. | ||||||
|  | 
 | ||||||
|  | Resolves: rhbz#1714835 | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  util/grub-switch-to-blscfg.8 | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/util/grub-switch-to-blscfg.8 b/util/grub-switch-to-blscfg.8
 | ||||||
|  | index 7d99de2d2f9..9a886282976 100644
 | ||||||
|  | --- a/util/grub-switch-to-blscfg.8
 | ||||||
|  | +++ b/util/grub-switch-to-blscfg.8
 | ||||||
|  | @@ -23,7 +23,7 @@ The defaults file for grub-mkconfig.  The default value is \fI/etc/default/grub\
 | ||||||
|  |   | ||||||
|  |  .TP | ||||||
|  |  --bls-directory=\fIDIR\fR | ||||||
|  | -Create BootLoaderSpec fragments in \fIDIR\fR.  The default value is \fI/boot/loader/entries\fR on BIOS machines and \fI/boot/efi/EFI/\fBVENDOR\fI/loader/entries\fR on UEFI machines.
 | ||||||
|  | +Create BootLoaderSpec fragments in \fIDIR\fR.  The default value is \fI/boot/loader/entries\fR.
 | ||||||
|  |   | ||||||
|  |  .TP | ||||||
|  |  --backup-suffix=\fSUFFIX\fR | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Javier Martinez Canillas <javierm@redhat.com> | ||||||
|  | Date: Wed, 19 Jun 2019 15:57:17 +0200 | ||||||
|  | Subject: [PATCH] 10_linux_bls: use '=' to separate --id argument due a | ||||||
|  |  Petitboot bug | ||||||
|  | 
 | ||||||
|  | The GRUB menuentry command allows to separate the arguments for options | ||||||
|  | using either a '=' or a ' '. The latter is the convention used when the | ||||||
|  | menu entries are defined in the GRUB config file, but this is currently | ||||||
|  | not supported by Petitboot. | ||||||
|  | 
 | ||||||
|  | So as a workaround define the menu entries using '--id=${bls}' instead. | ||||||
|  | 
 | ||||||
|  | Resolves: rhbz#1721815 | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  util/grub.d/10_linux_bls.in | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/util/grub.d/10_linux_bls.in b/util/grub.d/10_linux_bls.in
 | ||||||
|  | index b8ee9916329..76a5b9d75bc 100644
 | ||||||
|  | --- a/util/grub.d/10_linux_bls.in
 | ||||||
|  | +++ b/util/grub.d/10_linux_bls.in
 | ||||||
|  | @@ -180,7 +180,7 @@ populate_menu()
 | ||||||
|  |      for bls in "${files[@]}" ; do | ||||||
|  |          read_config "${blsdir}/${bls}.conf" | ||||||
|  |   | ||||||
|  | -        menu="${menu}menuentry '${title}' --class ${grub_class} ${grub_arg} --id ${bls} {\n"
 | ||||||
|  | +        menu="${menu}menuentry '${title}' --class ${grub_class} ${grub_arg} --id=${bls} {\n"
 | ||||||
|  |          menu="${menu}\t linux ${linux} ${options}\n" | ||||||
|  |          if [ -n "${initrd}" ] ; then | ||||||
|  |              menu="${menu}\t initrd ${boot_prefix}${initrd}\n" | ||||||
| @ -0,0 +1,39 @@ | |||||||
|  | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Javier Martinez Canillas <javierm@redhat.com> | ||||||
|  | Date: Thu, 20 Jun 2019 13:26:31 +0200 | ||||||
|  | Subject: [PATCH] grub-set-bootflag: Print an error if failing to read from | ||||||
|  |  grubenv | ||||||
|  | 
 | ||||||
|  | If the tool fails to read the grubenv file, it prints the following error: | ||||||
|  | 
 | ||||||
|  |   Error reading from /boot/grub2/grubenv: Success | ||||||
|  | 
 | ||||||
|  | This is confusing for users, so instead print a proper error message. | ||||||
|  | 
 | ||||||
|  | Resolves: rhbz#1702354 | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  util/grub-set-bootflag.c | 2 ++ | ||||||
|  |  1 file changed, 2 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/util/grub-set-bootflag.c b/util/grub-set-bootflag.c
 | ||||||
|  | index 20062fe802b..6a79ee67444 100644
 | ||||||
|  | --- a/util/grub-set-bootflag.c
 | ||||||
|  | +++ b/util/grub-set-bootflag.c
 | ||||||
|  | @@ -27,6 +27,7 @@
 | ||||||
|  |  #include <grub/types.h> | ||||||
|  |  #include <grub/err.h> | ||||||
|  |  #include <grub/lib/envblk.h> /* For GRUB_ENVBLK_DEFCFG define */ | ||||||
|  | +#include <errno.h>
 | ||||||
|  |  #include <stdio.h> | ||||||
|  |  #include <string.h> | ||||||
|  |  #include <unistd.h> | ||||||
|  | @@ -87,6 +88,7 @@ int main(int argc, char *argv[])
 | ||||||
|  |    fclose (f); | ||||||
|  |    if (ret != GRUBENV_SIZE) | ||||||
|  |      { | ||||||
|  | +      errno = EINVAL;
 | ||||||
|  |        perror ("Error reading from " GRUBENV); | ||||||
|  |        return 1;      | ||||||
|  |      } | ||||||
							
								
								
									
										138
									
								
								0306-10_linux-generate-BLS-section-even-if-no-kernels-are.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								0306-10_linux-generate-BLS-section-even-if-no-kernels-are.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,138 @@ | |||||||
|  | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Tom Gundersen <tgunders@redhat.com> | ||||||
|  | Date: Wed, 26 Jun 2019 17:06:59 +0200 | ||||||
|  | Subject: [PATCH] 10_linux: generate BLS section even if no kernels are found | ||||||
|  |  in /boot | ||||||
|  | 
 | ||||||
|  | The 10_linux script exits if no kernels are found in the /boot directory. | ||||||
|  | This makes sense for a non-BLS configuration but doesn't when using BLS. | ||||||
|  | 
 | ||||||
|  | Add a BLS section regardless if there are kernel images in /boot or not. | ||||||
|  | That way the grub.cfg can be generated even before a kernel is installed. | ||||||
|  | ---
 | ||||||
|  |  util/grub.d/10_linux.in | 98 ++++++++++++++++++++++++------------------------- | ||||||
|  |  1 file changed, 48 insertions(+), 50 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
 | ||||||
|  | index 350903fa5ab..e6fd6f2a39a 100644
 | ||||||
|  | --- a/util/grub.d/10_linux.in
 | ||||||
|  | +++ b/util/grub.d/10_linux.in
 | ||||||
|  | @@ -96,6 +96,53 @@ cat <<EOF
 | ||||||
|  |  EOF | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +if [ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]; then
 | ||||||
|  | +  if [ x$dirname = x/ ]; then
 | ||||||
|  | +    if [ -z "${prepare_root_cache}" ]; then
 | ||||||
|  | +      prepare_grub_to_access_device ${GRUB_DEVICE}
 | ||||||
|  | +    fi
 | ||||||
|  | +  else
 | ||||||
|  | +    if [ -z "${prepare_boot_cache}" ]; then
 | ||||||
|  | +      prepare_grub_to_access_device ${GRUB_DEVICE_BOOT}
 | ||||||
|  | +    fi
 | ||||||
|  | +  fi
 | ||||||
|  | +
 | ||||||
|  | +  if [ -d /sys/firmware/efi ]; then
 | ||||||
|  | +      bootefi_device="`${grub_probe} --target=device /boot/efi/`"
 | ||||||
|  | +      prepare_grub_to_access_device ${bootefi_device} boot
 | ||||||
|  | +  else
 | ||||||
|  | +      boot_device="`${grub_probe} --target=device /boot/`"
 | ||||||
|  | +      prepare_grub_to_access_device ${boot_device} boot
 | ||||||
|  | +  fi
 | ||||||
|  | +
 | ||||||
|  | +  populate_header_warn
 | ||||||
|  | +
 | ||||||
|  | +  cat << EOF
 | ||||||
|  | +set default_kernelopts="root=${LINUX_ROOT_DEVICE} ro ${GRUB_CMDLINE_LINUX}"
 | ||||||
|  | +
 | ||||||
|  | +insmod blscfg
 | ||||||
|  | +blscfg
 | ||||||
|  | +EOF
 | ||||||
|  | +
 | ||||||
|  | +  if [ "x${GRUB_GRUBENV_UPDATE}" = "xyes" ]; then
 | ||||||
|  | +      blsdir="/boot/loader/entries"
 | ||||||
|  | +      [ -d "${blsdir}" ] && GRUB_BLS_FS="$(${grub_probe} --target=fs ${blsdir})"
 | ||||||
|  | +      if [ "x${GRUB_BLS_FS}" = "xbtrfs" ] || [ "x${GRUB_BLS_FS}" = "xzfs" ]; then
 | ||||||
|  | +          blsdir=$(make_system_path_relative_to_its_root "${blsdir}")
 | ||||||
|  | +          if [ "x${blsdir}" != "x/loader/entries" ] && [ "x${blsdir}" != "x/boot/loader/entries" ]; then
 | ||||||
|  | +              ${grub_editenv} - set blsdir="${blsdir}"
 | ||||||
|  | +          fi
 | ||||||
|  | +      fi
 | ||||||
|  | +
 | ||||||
|  | +      ${grub_editenv} - set kernelopts="root=${LINUX_ROOT_DEVICE} ro ${GRUB_CMDLINE_LINUX}"
 | ||||||
|  | +      if [ -n "${GRUB_EARLY_INITRD_LINUX_CUSTOM}" ]; then
 | ||||||
|  | +          ${grub_editenv} - set early_initrd="${GRUB_EARLY_INITRD_LINUX_CUSTOM}"
 | ||||||
|  | +      fi
 | ||||||
|  | +  fi
 | ||||||
|  | +
 | ||||||
|  | +  exit 0
 | ||||||
|  | +fi
 | ||||||
|  | +
 | ||||||
|  |  mktitle () | ||||||
|  |  { | ||||||
|  |    local title_type | ||||||
|  | @@ -136,53 +183,6 @@ linux_entry ()
 | ||||||
|  |        boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" | ||||||
|  |    fi | ||||||
|  |   | ||||||
|  | -  if [ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]; then
 | ||||||
|  | -    if [ x$dirname = x/ ]; then
 | ||||||
|  | -      if [ -z "${prepare_root_cache}" ]; then
 | ||||||
|  | -        prepare_grub_to_access_device ${GRUB_DEVICE}
 | ||||||
|  | -      fi
 | ||||||
|  | -    else
 | ||||||
|  | -      if [ -z "${prepare_boot_cache}" ]; then
 | ||||||
|  | -        prepare_grub_to_access_device ${GRUB_DEVICE_BOOT}
 | ||||||
|  | -      fi
 | ||||||
|  | -    fi
 | ||||||
|  | -
 | ||||||
|  | -    if [ -d /sys/firmware/efi ]; then
 | ||||||
|  | -        bootefi_device="`${grub_probe} --target=device /boot/efi/`"
 | ||||||
|  | -        prepare_grub_to_access_device ${bootefi_device} boot
 | ||||||
|  | -    else
 | ||||||
|  | -        boot_device="`${grub_probe} --target=device /boot/`"
 | ||||||
|  | -        prepare_grub_to_access_device ${boot_device} boot
 | ||||||
|  | -    fi
 | ||||||
|  | -
 | ||||||
|  | -    populate_header_warn
 | ||||||
|  | -
 | ||||||
|  | -    cat << EOF
 | ||||||
|  | -set default_kernelopts="root=${linux_root_device_thisversion} ro ${args}"
 | ||||||
|  | -
 | ||||||
|  | -insmod blscfg
 | ||||||
|  | -blscfg
 | ||||||
|  | -EOF
 | ||||||
|  | -
 | ||||||
|  | -    if [ "x${GRUB_GRUBENV_UPDATE}" = "xyes" ]; then
 | ||||||
|  | -        blsdir="/boot/loader/entries"
 | ||||||
|  | -        [ -d "${blsdir}" ] && GRUB_BLS_FS="$(${grub_probe} --target=fs ${blsdir})"
 | ||||||
|  | -        if [ "x${GRUB_BLS_FS}" = "xbtrfs" ] || [ "x${GRUB_BLS_FS}" = "xzfs" ]; then
 | ||||||
|  | -            blsdir=$(make_system_path_relative_to_its_root "${blsdir}")
 | ||||||
|  | -            if [ "x${blsdir}" != "x/loader/entries" ] && [ "x${blsdir}" != "x/boot/loader/entries" ]; then
 | ||||||
|  | -                ${grub_editenv} - set blsdir="${blsdir}"
 | ||||||
|  | -            fi
 | ||||||
|  | -        fi
 | ||||||
|  | -
 | ||||||
|  | -	${grub_editenv} - set kernelopts="root=${linux_root_device_thisversion} ro ${args}"
 | ||||||
|  | -	if [ -n "${GRUB_EARLY_INITRD_LINUX_CUSTOM}" ]; then
 | ||||||
|  | -	    ${grub_editenv} - set early_initrd="${GRUB_EARLY_INITRD_LINUX_CUSTOM}"
 | ||||||
|  | -	fi
 | ||||||
|  | -    fi
 | ||||||
|  | -
 | ||||||
|  | -    exit 0
 | ||||||
|  | -  fi
 | ||||||
|  | -
 | ||||||
|  |    if [ x$type != xsimple ] ; then | ||||||
|  |        title=$(mktitle "$type" "$version") | ||||||
|  |        if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then | ||||||
|  | @@ -291,9 +291,7 @@ submenu_indentation=""
 | ||||||
|  |  is_top_level=true | ||||||
|  |  while [ "x$list" != "x" ] ; do | ||||||
|  |    linux=`version_find_latest $list` | ||||||
|  | -  if [ "x${GRUB_ENABLE_BLSCFG}" != "xtrue" ]; then
 | ||||||
|  | -    gettext_printf "Found linux image: %s\n" "$linux" >&2
 | ||||||
|  | -  fi
 | ||||||
|  | +  gettext_printf "Found linux image: %s\n" "$linux" >&2
 | ||||||
|  |   | ||||||
|  |    basename=`basename $linux` | ||||||
|  |    dirname=`dirname $linux` | ||||||
							
								
								
									
										33
									
								
								0307-10_linux-don-t-search-for-OSTree-kernels.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								0307-10_linux-don-t-search-for-OSTree-kernels.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | |||||||
|  | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Javier Martinez Canillas <javierm@redhat.com> | ||||||
|  | Date: Wed, 26 Jun 2019 17:11:14 +0200 | ||||||
|  | Subject: [PATCH] 10_linux: don't search for OSTree kernels | ||||||
|  | 
 | ||||||
|  | The 10_linux script used to exit if kernels weren't found in the /boot dir | ||||||
|  | so the path where OSTree kernels are installed was added to prevent that. | ||||||
|  | 
 | ||||||
|  | But the script should really add a section to call the blscfg command even | ||||||
|  | if kernels have not been installed, it doesn't make sense to search these. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  util/grub.d/10_linux.in | 6 ------ | ||||||
|  |  1 file changed, 6 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
 | ||||||
|  | index e6fd6f2a39a..9fd5a16fa32 100644
 | ||||||
|  | --- a/util/grub.d/10_linux.in
 | ||||||
|  | +++ b/util/grub.d/10_linux.in
 | ||||||
|  | @@ -265,12 +265,6 @@ case "x$machine" in
 | ||||||
|  |  	done ;; | ||||||
|  |  esac | ||||||
|  |   | ||||||
|  | -if [ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]; then
 | ||||||
|  | -    for i in /boot/ostree/*/vmlinuz-* ; do
 | ||||||
|  | -        if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
 | ||||||
|  | -    done
 | ||||||
|  | -fi
 | ||||||
|  | -
 | ||||||
|  |  case "$machine" in | ||||||
|  |      i?86) GENKERNEL_ARCH="x86" ;; | ||||||
|  |      mips|mips64) GENKERNEL_ARCH="mips" ;; | ||||||
| @ -300,3 +300,8 @@ Patch0299: 0299-Fix-undefined-references-for-fdt-when-building-with-.patch | |||||||
| Patch0300: 0300-blscfg-remove-BLS-file-size-check.patch | Patch0300: 0300-blscfg-remove-BLS-file-size-check.patch | ||||||
| Patch0301: 0301-Remove-bogus-load_env-after-blscfg-command-in-10_lin.patch | Patch0301: 0301-Remove-bogus-load_env-after-blscfg-command-in-10_lin.patch | ||||||
| Patch0302: 0302-blscfg-Don-t-leave-grub_errno-set-to-an-error-if-the.patch | Patch0302: 0302-blscfg-Don-t-leave-grub_errno-set-to-an-error-if-the.patch | ||||||
|  | Patch0303: 0303-Fix-bls-directory-option-comment-in-grub2-switch-to-.patch | ||||||
|  | Patch0304: 0304-10_linux_bls-use-to-separate-id-argument-due-a-Petit.patch | ||||||
|  | Patch0305: 0305-grub-set-bootflag-Print-an-error-if-failing-to-read-.patch | ||||||
|  | Patch0306: 0306-10_linux-generate-BLS-section-even-if-no-kernels-are.patch | ||||||
|  | Patch0307: 0307-10_linux-don-t-search-for-OSTree-kernels.patch | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								grub2.spec
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								grub2.spec
									
									
									
									
									
								
							| @ -7,7 +7,7 @@ | |||||||
| Name:		grub2 | Name:		grub2 | ||||||
| Epoch:		1 | Epoch:		1 | ||||||
| Version:	2.02 | Version:	2.02 | ||||||
| Release:	88%{?dist} | Release:	89%{?dist} | ||||||
| Summary:	Bootloader with support for Linux, Multiboot and more | Summary:	Bootloader with support for Linux, Multiboot and more | ||||||
| License:	GPLv3+ | License:	GPLv3+ | ||||||
| URL:		http://www.gnu.org/software/grub/ | URL:		http://www.gnu.org/software/grub/ | ||||||
| @ -518,6 +518,15 @@ rm -r /boot/grub2.tmp/ || : | |||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Thu Jun 27 2019 Javier Martinez Canillas <javierm@redhat.com> - 2.02-89 | ||||||
|  | - Fix --bls-directory option comment in grub2-switch-to-blscfg man page | ||||||
|  |   Resolves: rhbz#1714835 | ||||||
|  | - 10_linux_bls: use '=' to separate --id argument due a Petitboot bug | ||||||
|  | - grub-set-bootflag: Print an error if failing to read from grubenv | ||||||
|  |   Resolves: rhbz#1702354 | ||||||
|  | - 10_linux: generate BLS section even if no kernels are found in /boot | ||||||
|  | - 10_linux: don't search for OSTree kernels | ||||||
|  | 
 | ||||||
| * Tue Jun 18 2019 Sergio Durigan Junior <sergiodj@redhat.com> - 2.02-88 | * Tue Jun 18 2019 Sergio Durigan Junior <sergiodj@redhat.com> - 2.02-88 | ||||||
| - Use '-g' instead of '-g3' when compiling grub2. | - Use '-g' instead of '-g3' when compiling grub2. | ||||||
|   Resolves: rhbz#1708780 |   Resolves: rhbz#1708780 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user