From 0da23ad751882023bb16a6784c5bd34f15b025d8 Mon Sep 17 00:00:00 2001 From: Robbie Harwood Date: Mon, 22 Aug 2022 21:47:49 +0000 Subject: [PATCH 01/25] Give up and just pull the config from BLS Suggested-by: Bojan Smojver Signed-off-by: Robbie Harwood --- grubby-bls | 12 +----------- grubby.spec | 6 +++++- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/grubby-bls b/grubby-bls index 0571a0b..f09156b 100755 --- a/grubby-bls +++ b/grubby-bls @@ -502,16 +502,6 @@ update_bls_fragment() { opts="$(echo "$opts" | sed -e 's/\//\\\//g')" sed -i -e "s/^GRUB_CMDLINE_LINUX.*/GRUB_CMDLINE_LINUX=\\\"${opts}\\\"/" "${grub_etc_default}" fi - - if [[ -f /etc/kernel/cmdline ]]; then - sed -i "s/\(root=[^ ]*\) .*/\1 ${opts}/" /etc/kernel/cmdline - else - # grub2-mkconfig creates this. Do that now. - grub2-mkconfig -o /etc/grub2.cfg - fi - if [[ ! -f /etc/kernel/cmdline ]]; then - echo "No /etc/kernel/cmdline; please report a bug"; - fi fi old_args="$(grub2-editenv "${env}" list | grep kernelopts | sed -e "s/kernelopts=//")" @@ -538,7 +528,7 @@ update_bls_fragment() { fi done - if [[ $param = "ALL" && $bootloader = zipl ]] && [[ -n $remove_args || -n $add_args ]]; then + if [[ $param = "ALL" ]] && [[ -n $remove_args || -n $add_args ]]; then if [[ ! -f /etc/kernel/cmdline ]]; then # anaconda could pre-populate this file, but until then, most of # the time we'll just want the most recent one. This is pretty diff --git a/grubby.spec b/grubby.spec index 9c17bff..1853265 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 65%{?dist} +Release: 66%{?dist} Summary: Command line tool for updating bootloader configs License: GPLv2+ Source1: grubby-bls @@ -84,6 +84,10 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Mon Aug 22 2022 Robbie Harwood - 8.40-66 +- Give up and just pull the config from BLS +- Suggested-by: Bojan Smojver + * Wed Aug 17 2022 Robbie Harwood - 8.40-65 - Mark package as obsoleting -deprecated - Resolves: #2117817 From 2f6207731e09a5901d49fde7944f48c73661820e Mon Sep 17 00:00:00 2001 From: Marta Lewandowska Date: Tue, 4 Oct 2022 13:08:06 +0000 Subject: [PATCH 02/25] Fix passing --args without copy-default Fix so that --args are not passed by default if copy-default is not used. Set root when --args are passed without copy-default. --- grubby-bls | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/grubby-bls b/grubby-bls index f09156b..f3650e3 100755 --- a/grubby-bls +++ b/grubby-bls @@ -827,13 +827,12 @@ fi remove_var_prefix "$(get_prefix)" if [[ -n $kernel ]]; then - if [[ $copy_default = "true" ]]; then - opts="${bls_options[$default_index]}" - if [[ -n $args ]]; then - opts="${opts} ${args}" - fi - else - opts="${args}" + opts="${bls_options[$default_index]}" + if [[ $copy_default != "true" ]]; then + opts=$(echo $opts | sed -e 's/ .*//') + fi + if [[ -n $args ]]; then + opts="${opts} ${args}" fi add_bls_fragment "${kernel}" "${title}" "${opts}" "${initrd}" \ From 9f3764d8d249f466554254a3f5946f95de374687 Mon Sep 17 00:00:00 2001 From: Robbie Harwood Date: Tue, 4 Oct 2022 17:16:29 +0000 Subject: [PATCH 03/25] Apply Marta's copy-default args fix Signed-off-by: Robbie Harwood --- grubby.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/grubby.spec b/grubby.spec index 1853265..ee362e6 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 66%{?dist} +Release: 67%{?dist} Summary: Command line tool for updating bootloader configs License: GPLv2+ Source1: grubby-bls @@ -84,6 +84,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Tue Oct 04 2022 Robbie Harwood - 8.40-67 +- Apply Marta's copy-default args fix + * Mon Aug 22 2022 Robbie Harwood - 8.40-66 - Give up and just pull the config from BLS - Suggested-by: Bojan Smojver From 68f872a10efca0a0553717a20f99460d9692865c Mon Sep 17 00:00:00 2001 From: Robbie Harwood Date: Tue, 1 Nov 2022 17:40:38 +0000 Subject: [PATCH 04/25] Drop custom rpm-sort See-also: https://github.com/rpm-software-management/rpm/pull/2249 Signed-off-by: Robbie Harwood --- grubby-bls | 2 +- grubby.spec | 15 +-- rpm-sort.c | 356 ---------------------------------------------------- 3 files changed, 7 insertions(+), 366 deletions(-) delete mode 100644 rpm-sort.c diff --git a/grubby-bls b/grubby-bls index f3650e3..cce0579 100755 --- a/grubby-bls +++ b/grubby-bls @@ -92,7 +92,7 @@ get_bls_values() { bls="${bls%.conf}" bls="${bls##*/}" echo "${bls}" - done | /usr/libexec/grubby/rpm-sort -c rpmnvrcmp 2>/dev/null | tac)) || : + done | sort -Vr 2>/dev/null)) || : for bls in "${files[@]}" ; do blspath="${blsdir}/${bls}.conf" diff --git a/grubby.spec b/grubby.spec index ee362e6..4ee7241 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,11 +3,11 @@ Name: grubby Version: 8.40 -Release: 67%{?dist} +Release: 68%{?dist} Summary: Command line tool for updating bootloader configs License: GPLv2+ Source1: grubby-bls -Source2: rpm-sort.c +# Source2: rpm-sort.c Source3: COPYING Source4: installkernel-bls Source5: 95-kernel-hooks.install @@ -49,13 +49,8 @@ cp %{SOURCE3} . || true %build %set_build_flags -gcc ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} -std=gnu99 -DVERSION='"8.4.0"' \ - -o rpm-sort %{SOURCE2} -lrpmio %install -mkdir -p %{buildroot}%{_libexecdir}/grubby/ -install -D -m 0755 rpm-sort %{buildroot}%{_libexecdir}/grubby - mkdir -p %{buildroot}%{_sbindir}/ install -T -m 0755 %{SOURCE1} %{buildroot}%{_sbindir}/grubby install -T -m 0755 %{SOURCE4} %{buildroot}%{_sbindir}/installkernel @@ -75,8 +70,6 @@ fi %files %license COPYING -%dir %{_libexecdir}/grubby -%attr(0755,root,root) %{_libexecdir}/grubby/rpm-sort %attr(0755,root,root) %{_sbindir}/grubby %attr(0755,root,root) %{_sbindir}/installkernel %attr(0755,root,root) %{_prefix}/lib/kernel/install.d/10-devicetree.install @@ -84,6 +77,10 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Tue Nov 01 2022 Robbie Harwood - 8.40-68 +- Drop custom rpm-sort +- See-also: https://github.com/rpm-software-management/rpm/pull/2249 + * Tue Oct 04 2022 Robbie Harwood - 8.40-67 - Apply Marta's copy-default args fix diff --git a/rpm-sort.c b/rpm-sort.c deleted file mode 100644 index 274bcb1..0000000 --- a/rpm-sort.c +++ /dev/null @@ -1,356 +0,0 @@ -#define _GNU_SOURCE - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -typedef enum { - RPMNVRCMP, - VERSNVRCMP, - RPMVERCMP, - STRVERSCMP, -} comparitors; - -static comparitors comparitor = RPMNVRCMP; - -static inline void *xmalloc(size_t sz) -{ - void *ret = malloc(sz); - - assert(sz == 0 || ret != NULL); - return ret; -} - -static inline void *xrealloc(void *p, size_t sz) -{ - void *ret = realloc(p, sz); - - assert(sz == 0 || ret != NULL); - return ret; -} - -static inline char *xstrdup(const char * const s) -{ - void *ret = strdup(s); - - assert(s == NULL || ret != NULL); - return ret; -} - -static size_t -read_file (const char *input, char **ret) -{ - FILE *in; - size_t s; - size_t sz = 2048; - size_t offset = 0; - char *text; - - if (!strcmp(input, "-")) - in = stdin; - else - in = fopen(input, "r"); - - text = xmalloc (sz); - - if (!in) - err(1, "cannot open `%s'", input); - - while ((s = fread (text + offset, 1, sz - offset, in)) != 0) - { - offset += s; - if (sz - offset == 0) - { - sz += 2048; - text = xrealloc (text, sz); - } - } - - text[offset] = '\0'; - *ret = text; - - if (in != stdin) - fclose(in); - - return offset + 1; -} - -/* returns name/version/release */ -/* NULL string pointer returned if nothing found */ -static void -split_package_string (char *package_string, char **name, - char **version, char **release) -{ - char *package_version, *package_release; - - /* Release */ - package_release = strrchr (package_string, '-'); - - if (package_release != NULL) - *package_release++ = '\0'; - - *release = package_release; - - /* Version */ - package_version = strrchr(package_string, '-'); - - if (package_version != NULL) - *package_version++ = '\0'; - - *version = package_version; - /* Name */ - *name = package_string; - - /* Bubble up non-null values from release to name */ - if (*name == NULL) - { - *name = (*version == NULL ? *release : *version); - *version = *release; - *release = NULL; - } - if (*version == NULL) - { - *version = *release; - *release = NULL; - } -} - -static int -cmprpmversp(const void *p1, const void *p2) -{ - return rpmvercmp(*(char * const *)p1, *(char * const *)p2); -} - -static int -cmpstrversp(const void *p1, const void *p2) -{ - return strverscmp(*(char * const *)p1, *(char * const *)p2); -} - -/* - * package name-version-release comparator for qsort - * expects p, q which are pointers to character strings (char *) - * which will not be altered in this function - */ -static int -package_version_compare (const void *p, const void *q) -{ - char *local_p, *local_q; - char *lhs_name, *lhs_version, *lhs_release; - char *rhs_name, *rhs_version, *rhs_release; - int vercmpflag = 0; - int (*cmp)(const char *s1, const char *s2); - - switch(comparitor) - { - default: /* just to shut up -Werror=maybe-uninitialized */ - case RPMNVRCMP: - cmp = rpmvercmp; - break; - case VERSNVRCMP: - cmp = strverscmp; - break; - case RPMVERCMP: - return cmprpmversp(p, q); - break; - case STRVERSCMP: - return cmpstrversp(p, q); - break; - } - - local_p = alloca (strlen (*(char * const *)p) + 1); - local_q = alloca (strlen (*(char * const *)q) + 1); - - /* make sure these allocated */ - assert (local_p); - assert (local_q); - - strcpy (local_p, *(char * const *)p); - strcpy (local_q, *(char * const *)q); - - split_package_string (local_p, &lhs_name, &lhs_version, &lhs_release); - split_package_string (local_q, &rhs_name, &rhs_version, &rhs_release); - - /* Check Name and return if unequal */ - vercmpflag = cmp ((lhs_name == NULL ? "" : lhs_name), - (rhs_name == NULL ? "" : rhs_name)); - if (vercmpflag != 0) - return vercmpflag; - - /* Check version and return if unequal */ - vercmpflag = cmp ((lhs_version == NULL ? "" : lhs_version), - (rhs_version == NULL ? "" : rhs_version)); - if (vercmpflag != 0) - return vercmpflag; - - /* Check release and return the version compare value */ - vercmpflag = cmp ((lhs_release == NULL ? "" : lhs_release), - (rhs_release == NULL ? "" : rhs_release)); - - return vercmpflag; -} - -static void -add_input (const char *filename, char ***package_names, size_t *n_package_names) -{ - char *orig_input_buffer = NULL; - char *input_buffer; - char *position_of_newline; - char **names = *package_names; - char **new_names = NULL; - size_t n_names = *n_package_names; - - if (!*package_names) - new_names = names = xmalloc (sizeof (char *) * 2); - - if (read_file (filename, &orig_input_buffer) < 2) - { - if (new_names) - free (new_names); - if (orig_input_buffer) - free (orig_input_buffer); - return; - } - - input_buffer = orig_input_buffer; - while (input_buffer && *input_buffer && - (position_of_newline = strchrnul (input_buffer, '\n'))) - { - size_t sz = position_of_newline - input_buffer; - char *new; - - if (sz == 0) - { - input_buffer = position_of_newline + 1; - continue; - } - - new = xmalloc (sz+1); - strncpy (new, input_buffer, sz); - new[sz] = '\0'; - - names = xrealloc (names, sizeof (char *) * (n_names + 1)); - names[n_names] = new; - n_names++; - - /* move buffer ahead to next line */ - input_buffer = position_of_newline + 1; - if (*position_of_newline == '\0') - input_buffer = NULL; - } - - free (orig_input_buffer); - - *package_names = names; - *n_package_names = n_names; -} - -static char * -help_filter (int key, const char *text, void *input __attribute__ ((unused))) -{ - return (char *)text; -} - -static struct argp_option options[] = { - { "comparitor", 'c', "COMPARITOR", 0, "[rpm-nvr-cmp|vers-nvr-cmp|rpmvercmp|strverscmp]", 0}, - { 0, } -}; - -struct arguments -{ - size_t ninputs; - size_t input_max; - char **inputs; -}; - -static error_t -argp_parser (int key, char *arg, struct argp_state *state) -{ - struct arguments *arguments = state->input; - switch (key) - { - case 'c': - if (!strcmp(arg, "rpm-nvr-cmp") || !strcmp(arg, "rpmnvrcmp")) - comparitor = RPMNVRCMP; - else if (!strcmp(arg, "vers-nvr-cmp") || !strcmp(arg, "versnvrcmp")) - comparitor = VERSNVRCMP; - else if (!strcmp(arg, "rpmvercmp")) - comparitor = RPMVERCMP; - else if (!strcmp(arg, "strverscmp")) - comparitor = STRVERSCMP; - else - err(1, "Invalid comparitor \"%s\"", arg); - break; - case ARGP_KEY_ARG: - assert (arguments->ninputs < arguments->input_max); - arguments->inputs[arguments->ninputs++] = xstrdup (arg); - break; - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - -static struct argp argp = { - options, argp_parser, "[INPUT_FILES]", - "Sort a list of strings in RPM version sort order.", - NULL, help_filter, NULL -}; - -int -main (int argc, char *argv[]) -{ - struct arguments arguments; - char **package_names = NULL; - size_t n_package_names = 0; - int i; - - memset (&arguments, 0, sizeof (struct arguments)); - arguments.input_max = argc+1; - arguments.inputs = xmalloc ((arguments.input_max + 1) - * sizeof (arguments.inputs[0])); - memset (arguments.inputs, 0, (arguments.input_max + 1) - * sizeof (arguments.inputs[0])); - - /* Parse our arguments */ - if (argp_parse (&argp, argc, argv, 0, 0, &arguments) != 0) - errx(1, "%s", "Error in parsing command line arguments\n"); - - /* If there's no inputs in argv, add one for stdin */ - if (!arguments.ninputs) - { - arguments.ninputs = 1; - arguments.inputs[0] = xmalloc (2); - strcpy(arguments.inputs[0], "-"); - } - - for (i = 0; i < arguments.ninputs; i++) - add_input(arguments.inputs[i], &package_names, &n_package_names); - - if (package_names == NULL || n_package_names < 1) - errx(1, "Invalid input"); - - qsort (package_names, n_package_names, sizeof (char *), - package_version_compare); - - /* send sorted list to stdout */ - for (i = 0; i < n_package_names; i++) - { - fprintf (stdout, "%s\n", package_names[i]); - free (package_names[i]); - } - - free (package_names); - for (i = 0; i < arguments.ninputs; i++) - free (arguments.inputs[i]); - - free (arguments.inputs); - - return 0; -} From d6967109223a4e10698fd8fc5a717637bce85d94 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 19 Jan 2023 11:35:50 +0000 Subject: [PATCH 05/25] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- grubby.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/grubby.spec b/grubby.spec index 4ee7241..44b20ad 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 68%{?dist} +Release: 69%{?dist} Summary: Command line tool for updating bootloader configs License: GPLv2+ Source1: grubby-bls @@ -77,6 +77,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Thu Jan 19 2023 Fedora Release Engineering - 8.40-69 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Tue Nov 01 2022 Robbie Harwood - 8.40-68 - Drop custom rpm-sort - See-also: https://github.com/rpm-software-management/rpm/pull/2249 From 8656bfd5651fe4ccf7a22e4a24129cfdf485946d Mon Sep 17 00:00:00 2001 From: Marta Lewandowska Date: Tue, 21 Feb 2023 19:33:02 +0100 Subject: [PATCH 06/25] Do not set root with not copying default --- grubby-bls | 15 +++++++++------ grubby.spec | 5 ++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/grubby-bls b/grubby-bls index cce0579..2d59de7 100755 --- a/grubby-bls +++ b/grubby-bls @@ -827,12 +827,15 @@ fi remove_var_prefix "$(get_prefix)" if [[ -n $kernel ]]; then - opts="${bls_options[$default_index]}" - if [[ $copy_default != "true" ]]; then - opts=$(echo $opts | sed -e 's/ .*//') - fi - if [[ -n $args ]]; then - opts="${opts} ${args}" + if [[ $copy_default = "true" ]]; then + opts="${bls_options[$default_index]}" + if [[ -n $args ]]; then + opts="${opts} ${args}" + fi + else + opts="${opts} ${args}" + remove_args="$kernelopts" + update_args "${opts}" "${remove_args}" "" fi add_bls_fragment "${kernel}" "${title}" "${opts}" "${initrd}" \ diff --git a/grubby.spec b/grubby.spec index 44b20ad..4ae304d 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 69%{?dist} +Release: 70%{?dist} Summary: Command line tool for updating bootloader configs License: GPLv2+ Source1: grubby-bls @@ -77,6 +77,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Tue Feb 21 2023 Marta Lewandowska - 8.40-70 +- remove root= when not copying default + * Thu Jan 19 2023 Fedora Release Engineering - 8.40-69 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 3d050aaf49cfd85b4cac6b48e461a147e85d4ff2 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 20 Jul 2023 05:39:58 +0000 Subject: [PATCH 07/25] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- grubby.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/grubby.spec b/grubby.spec index 4ae304d..a19523e 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 70%{?dist} +Release: 71%{?dist} Summary: Command line tool for updating bootloader configs License: GPLv2+ Source1: grubby-bls @@ -77,6 +77,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Thu Jul 20 2023 Fedora Release Engineering - 8.40-71 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Tue Feb 21 2023 Marta Lewandowska - 8.40-70 - remove root= when not copying default From aa9b1b454fd0c792226cefb65d744fadfaa8acda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 22 Jun 2023 11:33:14 -0600 Subject: [PATCH 08/25] Drop installkernel so that it can by provided by systemd MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit systemd has kernel-install which supports being invoked as installkernel. After the file is removed from grubby, we can just provide a symlink installkernel → kernel-install. --- grubby.spec | 8 ++--- installkernel-bls | 83 ----------------------------------------------- 2 files changed, 4 insertions(+), 87 deletions(-) delete mode 100755 installkernel-bls diff --git a/grubby.spec b/grubby.spec index a19523e..af0bbdc 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,13 +3,12 @@ Name: grubby Version: 8.40 -Release: 71%{?dist} +Release: 72%{?dist} Summary: Command line tool for updating bootloader configs License: GPLv2+ Source1: grubby-bls # Source2: rpm-sort.c Source3: COPYING -Source4: installkernel-bls Source5: 95-kernel-hooks.install Source6: 10-devicetree.install Source7: grubby.8 @@ -53,7 +52,6 @@ cp %{SOURCE3} . || true %install mkdir -p %{buildroot}%{_sbindir}/ install -T -m 0755 %{SOURCE1} %{buildroot}%{_sbindir}/grubby -install -T -m 0755 %{SOURCE4} %{buildroot}%{_sbindir}/installkernel install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE5} install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE6} @@ -71,12 +69,14 @@ fi %files %license COPYING %attr(0755,root,root) %{_sbindir}/grubby -%attr(0755,root,root) %{_sbindir}/installkernel %attr(0755,root,root) %{_prefix}/lib/kernel/install.d/10-devicetree.install %attr(0755,root,root) %{_prefix}/lib/kernel/install.d/95-kernel-hooks.install %{_mandir}/man8/grubby.8* %changelog +* Mon Sep 11 2023 Zbigniew Jedrzejewski-Szmek - 8.40-72 +- Drop installkernel so that it can be provided by systemd + * Thu Jul 20 2023 Fedora Release Engineering - 8.40-71 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/installkernel-bls b/installkernel-bls deleted file mode 100755 index f2f607e..0000000 --- a/installkernel-bls +++ /dev/null @@ -1,83 +0,0 @@ -#! /bin/sh -# -# /sbin/installkernel -# -# Copyright 2007-2008 Red Hat, Inc. All rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -# Author(s): tyson@rwii.com -# - -usage() { - echo "Usage: `basename $0` " >&2 - exit 1 -} - -cfgLoader= - -if [ -z "$INSTALL_PATH" -o "$INSTALL_PATH" == "/boot" ]; then - INSTALL_PATH=/boot - cfgLoader=1 -fi - -LINK_PATH=/boot -RELATIVE_PATH=`echo "$INSTALL_PATH/" | sed "s|^$LINK_PATH/||"` -KERNEL_VERSION=$1 -BOOTIMAGE=$2 -MAPFILE=$3 -ARCH=$(uname -m) -if [ $ARCH = 'ppc64' -o $ARCH = 'ppc' ]; then - KERNEL_NAME=vmlinux -else - KERNEL_NAME=vmlinuz -fi - -if [ -z "$KERNEL_VERSION" -o -z "$BOOTIMAGE" -o -z "$MAPFILE" ]; then - usage -fi - -if [ -f $INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION ]; then - mv $INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION \ - $INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION.old; -fi - -if [ ! -L $INSTALL_PATH/$KERNEL_NAME ]; then - if [ -e $INSTALLPATH/$KERNEL_NAME ]; then - mv $INSTALL_PATH/$KERNEL_NAME $INSTALL_PATH/$KERNEL_NAME.old - fi -fi - -if [ -f $INSTALL_PATH/System.map-$KERNEL_VERSION ]; then - mv $INSTALL_PATH/System.map-$KERNEL_VERSION \ - $INSTALL_PATH/System.map-$KERNEL_VERSION.old; -fi - -if [ ! -L $INSTALL_PATH/System.map ]; then - if [ -e $INSTALLPATH/System.map ]; then - mv $INSTALL_PATH/System.map $INSTALL_PATH/System.map.old - fi -fi -ln -sf ${RELATIVE_PATH}$INSTALL_PATH/System.map-$KERNEL_VERSION $LINK_PATH/System.map - -cat $BOOTIMAGE > $INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION -cp $MAPFILE $INSTALL_PATH/System.map-$KERNEL_VERSION - -ln -fs ${RELATIVE_PATH}$INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION $LINK_PATH/$KERNEL_NAME -ln -fs ${RELATIVE_PATH}$INSTALL_PATH/System.map-$KERNEL_VERSION $LINK_PATH/System.map - -if [ -n "$cfgLoader" ]; then - kernel-install add $KERNEL_VERSION $INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION - exit $? -fi From a73ecd5815d180cfd6a8adce7e23cf652462fa70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Fri, 1 Dec 2023 08:13:01 +0000 Subject: [PATCH 09/25] Migrate to SPDX license This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_2 --- grubby.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grubby.spec b/grubby.spec index af0bbdc..a82fe14 100644 --- a/grubby.spec +++ b/grubby.spec @@ -5,7 +5,7 @@ Name: grubby Version: 8.40 Release: 72%{?dist} Summary: Command line tool for updating bootloader configs -License: GPLv2+ +License: GPL-2.0-or-later Source1: grubby-bls # Source2: rpm-sort.c Source3: COPYING From 893f94f4284445d5337ccd7c08aa265ef9d09f86 Mon Sep 17 00:00:00 2001 From: Marta Lewandowska Date: Wed, 10 Jan 2024 16:40:47 +0200 Subject: [PATCH 10/25] Don't overwrite vars that start with GRUB_CMDLINE_LINUX When updating args for ALL kernels, grubby clobbers all variables in /etc/default/grub that start with GRUB_CMDLINE_LINUX and renders that line multiple times, for each variable that exists. This breaks using recovery mode. Fix so this doesn't happen anymore. Signed-off-by: Marta Lewandowska --- grubby-bls | 2 +- grubby.spec | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/grubby-bls b/grubby-bls index 2d59de7..ac82950 100755 --- a/grubby-bls +++ b/grubby-bls @@ -500,7 +500,7 @@ update_bls_fragment() { if [[ -n $old_args ]]; then opts="$(update_args "${old_args}" "${remove_args}" "${add_args}")" opts="$(echo "$opts" | sed -e 's/\//\\\//g')" - sed -i -e "s/^GRUB_CMDLINE_LINUX.*/GRUB_CMDLINE_LINUX=\\\"${opts}\\\"/" "${grub_etc_default}" + sed -i -e "s/^GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\\\"${opts}\\\"/" "${grub_etc_default}" fi fi diff --git a/grubby.spec b/grubby.spec index a82fe14..f4bac16 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 72%{?dist} +Release: 73%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Wed Jan 10 2024 Marta Lewandowska - 8.40-73 +- Do not overwrite all vars that start with GRUB_CMDLINE_LINUX + * Mon Sep 11 2023 Zbigniew Jedrzejewski-Szmek - 8.40-72 - Drop installkernel so that it can be provided by systemd From 5318daa5c6383c3927ef85c81d28b3dfb0fdecd9 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 20 Jan 2024 21:34:21 +0000 Subject: [PATCH 11/25] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- grubby.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/grubby.spec b/grubby.spec index f4bac16..a1c39e0 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 73%{?dist} +Release: 74%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Sat Jan 20 2024 Fedora Release Engineering - 8.40-74 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Wed Jan 10 2024 Marta Lewandowska - 8.40-73 - Do not overwrite all vars that start with GRUB_CMDLINE_LINUX From 758f62e580bc1732088a3a1ceb2847312ab020c4 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 24 Jan 2024 21:05:49 +0000 Subject: [PATCH 12/25] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- grubby.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/grubby.spec b/grubby.spec index a1c39e0..421a493 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 74%{?dist} +Release: 75%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Wed Jan 24 2024 Fedora Release Engineering - 8.40-75 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Sat Jan 20 2024 Fedora Release Engineering - 8.40-74 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 197adec183a9b0c645c99384c69346efc84cf1fe Mon Sep 17 00:00:00 2001 From: Emanuele Petriglia Date: Wed, 10 Apr 2024 14:38:27 +0000 Subject: [PATCH 13/25] Fix small typo in --args help message --- grubby-bls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grubby-bls b/grubby-bls index ac82950..1182a4a 100755 --- a/grubby-bls +++ b/grubby-bls @@ -630,7 +630,7 @@ print_usage() cat < Date: Thu, 18 Jul 2024 08:39:45 +0000 Subject: [PATCH 14/25] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- grubby.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/grubby.spec b/grubby.spec index 421a493..8478d3e 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 75%{?dist} +Release: 76%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Thu Jul 18 2024 Fedora Release Engineering - 8.40-76 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Wed Jan 24 2024 Fedora Release Engineering - 8.40-75 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 014744456dc40ad11344facea8b575cbcdb039ea Mon Sep 17 00:00:00 2001 From: Leo Sandoval Date: Mon, 25 Nov 2024 13:47:35 -0600 Subject: [PATCH 15/25] On grub cfg updates, run grub2-mkconfig for Xen systems Signed-off-by: Leo Sandoval --- grubby-bls | 9 +++++++++ grubby.spec | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/grubby-bls b/grubby-bls index 1182a4a..c7cb264 100755 --- a/grubby-bls +++ b/grubby-bls @@ -620,6 +620,15 @@ update_grubcfg() fi fi + # PV and PVH Xen DomU guests boot with pygrub that doesn't have BLS support, + # also Xen Dom0 use the menuentries from 20_linux_xen and not the ones from + # 10_linux. So grub2-mkconfig has to run for both Xen Dom0 and DomU. + if [[ -e /sys/hypervisor/type ]] && grep -q "^xen$" /sys/hypervisor/type; then + if [ ! -e /sys/hypervisor/guest_type ] || ! grep -q "^HVM$" /sys/hypervisor/guest_type; then + RUN_MKCONFIG=true + fi + fi + if [[ $RUN_MKCONFIG = "true" ]]; then grub2-mkconfig --no-grubenv-update -o "${grub_config}" >& /dev/null fi diff --git a/grubby.spec b/grubby.spec index 8478d3e..5ee8ddc 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 76%{?dist} +Release: 77%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Mon Nov 25 2024 Leo Sandoval - 8.40-77 +- On grub cfg updates, run grub2-mkconfig for Xen systems + * Thu Jul 18 2024 Fedora Release Engineering - 8.40-76 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From a94c545ae243d8050eec603e6df38c84e2f5f5ca Mon Sep 17 00:00:00 2001 From: David Abdurachmanov Date: Thu, 21 Mar 2024 17:09:57 +0200 Subject: [PATCH 16/25] Add riscv64 support Signed-off-by: David Abdurachmanov --- 10-devicetree.install | 2 +- grubby.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/10-devicetree.install b/10-devicetree.install index 3345391..fdea5ec 100755 --- a/10-devicetree.install +++ b/10-devicetree.install @@ -2,7 +2,7 @@ # set -x -if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]] +if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 || "$(uname -m)" == riscv64 ]] then COMMAND="$1" KERNEL_VERSION="$2" diff --git a/grubby.spec b/grubby.spec index 5ee8ddc..63b5b6f 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 77%{?dist} +Release: 78%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -21,7 +21,7 @@ BuildRequires: pkgconfig BuildRequires: popt-devel BuildRequires: rpm-devel BuildRequires: sed -%ifarch aarch64 x86_64 %{power64} +%ifarch aarch64 x86_64 %{power64} riscv64 BuildRequires: grub2-tools-minimal Requires: grub2-tools-minimal Requires: grub2-tools @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Mon Dec 02 2024 David Abdurachmanov - 8.40-78 +- Add riscv64 support + * Mon Nov 25 2024 Leo Sandoval - 8.40-77 - On grub cfg updates, run grub2-mkconfig for Xen systems From 410b6c7592b831b18d5b2e18ccd28422c309c539 Mon Sep 17 00:00:00 2001 From: Leo Sandoval Date: Mon, 25 Nov 2024 13:07:52 -0600 Subject: [PATCH 17/25] grubby-bls: in s390* systems, run zipl on grub cfg update event Signed-off-by: Leo Sandoval --- grubby-bls | 6 +++++- grubby.spec | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/grubby-bls b/grubby-bls index c7cb264..8d26a06 100755 --- a/grubby-bls +++ b/grubby-bls @@ -630,7 +630,11 @@ update_grubcfg() fi if [[ $RUN_MKCONFIG = "true" ]]; then - grub2-mkconfig --no-grubenv-update -o "${grub_config}" >& /dev/null + if [[ $bootloader = "zipl" ]]; then + zipl + else + grub2-mkconfig --no-grubenv-update -o "${grub_config}" &> /dev/null + fi fi } diff --git a/grubby.spec b/grubby.spec index 63b5b6f..bf11b1c 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 78%{?dist} +Release: 79%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Fri Dec 06 2024 Leo Sandoval - 8.40-79 +- grubby-bls: in s390* systems, run zipl on grub cfg update event + * Mon Dec 02 2024 David Abdurachmanov - 8.40-78 - Add riscv64 support From 6f82f6bf089e69d8ab59531766de0a79a4a21319 Mon Sep 17 00:00:00 2001 From: Leo Sandoval Date: Tue, 3 Dec 2024 17:54:14 -0600 Subject: [PATCH 18/25] grubby-bls: on PPC systems, remove petiboot's version checks Signed-off-by: Leo Sandoval --- grubby-bls | 23 ++--------------------- grubby.spec | 5 ++++- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/grubby-bls b/grubby-bls index 8d26a06..8fbaa27 100755 --- a/grubby-bls +++ b/grubby-bls @@ -595,29 +595,10 @@ remove_var_prefix() { update_grubcfg() { - # Older ppc64le OPAL firmware (petitboot version < 1.8.0) don't have BLS support - # so grub2-mkconfig has to be run to generate a config with menuentry commands. + # Older ppc64le OPAL firmware don't have BLS support so grub2-mkconfig has to be run + # to generate a config with menuentry commands. if [ "${arch}" = "ppc64le" ] && [ -d /sys/firmware/opal ]; then RUN_MKCONFIG="true" - petitboot_path="/sys/firmware/devicetree/base/ibm,firmware-versions/petitboot" - - if test -e ${petitboot_path}; then - read -r -d '' petitboot_version < ${petitboot_path} - petitboot_version="$(echo ${petitboot_version//v})" - - if test -n ${petitboot_version}; then - major_version="$(echo ${petitboot_version} | cut -d . -f1)" - minor_version="$(echo ${petitboot_version} | cut -d . -f2)" - - re='^[0-9]+$' - if [[ $major_version =~ $re ]] && [[ $minor_version =~ $re ]] && - ([[ ${major_version} -gt 1 ]] || - [[ ${major_version} -eq 1 && - ${minor_version} -ge 8 ]]); then - RUN_MKCONFIG="false" - fi - fi - fi fi # PV and PVH Xen DomU guests boot with pygrub that doesn't have BLS support, diff --git a/grubby.spec b/grubby.spec index bf11b1c..dab4aa7 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 79%{?dist} +Release: 80%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Fri Dec 06 2024 Leo Sandoval - 8.40-80 +- grubby-bls: on PPC systems, remove petiboot's version checks + * Fri Dec 06 2024 Leo Sandoval - 8.40-79 - grubby-bls: in s390* systems, run zipl on grub cfg update event From 50760fed68aefd7a29bfc818a7dc8bf2168e3539 Mon Sep 17 00:00:00 2001 From: Martin Hicks Date: Wed, 24 Jul 2024 12:00:45 -0400 Subject: [PATCH 19/25] Allow custom filenames to exceed 10 9 sorts after 10, so "next" was always 10 and would overwrite previous 10~custom.conf files Signed-off-by: Martin Hicks --- grubby-bls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grubby-bls b/grubby-bls index 8fbaa27..526cf6c 100755 --- a/grubby-bls +++ b/grubby-bls @@ -356,7 +356,7 @@ get_custom_bls_filename() { prefix="${bls_target%%${arch}}" prefix="${prefix%.*}" - last=($(for bls in ${prefix}.*~custom*.conf ; do + last=($(for bls in $(ls ${prefix}.*~custom*.conf 2>/dev/null | sort -V); do if ! [[ -e "${bls}" ]] ; then continue fi From beb5f2b8a8856c22ef76566eea54c7bb0b3721cf Mon Sep 17 00:00:00 2001 From: Martin Hicks Date: Fri, 26 Jul 2024 08:22:44 -0400 Subject: [PATCH 20/25] Add 'custom' file entries at first gap Don't add a the next custom file after the last existing entry. This could result in a growing custom number with a large gap at the beginning. Fill the custom entries starting from 0. Signed-off-by: Martin Hicks Signed-off-by: Nicolas Frayer --- grubby-bls | 30 +++++++++++++++++------------- grubby.spec | 5 ++++- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/grubby-bls b/grubby-bls index 526cf6c..2785583 100755 --- a/grubby-bls +++ b/grubby-bls @@ -356,22 +356,26 @@ get_custom_bls_filename() { prefix="${bls_target%%${arch}}" prefix="${prefix%.*}" - last=($(for bls in $(ls ${prefix}.*~custom*.conf 2>/dev/null | sort -V); do - if ! [[ -e "${bls}" ]] ; then - continue - fi - bls="${bls##${prefix}.}" - bls="${bls%%~custom*}" - echo "${bls}" - done | tail -n1)) || : + first_gap=$( + first=0 + for bls_entry in $(ls "${prefix}".*~custom*.conf 2>/dev/null | sort -V); do + if [[ -e ${bls_entry} ]]; then + bls_entry="${bls_entry##"${prefix}".}" + bls_entry="${bls_entry%%~custom*}" + if [[ "${bls_entry}" = "${first}" ]]; then + first=$((first+1)) + else + break + fi + fi + done + echo "${first}") || : - if [[ -z $last ]]; then - last="0" - else - last=$((last+1)) + if [[ -z "$first_gap" ]]; then + first_gap="0" fi - echo "${bls_target}" | sed -e "s!${prefix}!${prefix}.${last}~custom!" + echo "${bls_target}" | sed -e "s!${prefix}!${prefix}.${first_gap}~custom!" } add_bls_fragment() { diff --git a/grubby.spec b/grubby.spec index dab4aa7..d7efabe 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 80%{?dist} +Release: 81%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Mon Jan 06 2025 Nicolas Frayer - 8.40-81 +- Fixups to custom kernel targets + * Fri Dec 06 2024 Leo Sandoval - 8.40-80 - grubby-bls: on PPC systems, remove petiboot's version checks From 06113ecc4c8825b2b4788514f51b9f39afb3fbbf Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 17 Jan 2025 05:15:43 +0000 Subject: [PATCH 21/25] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- grubby.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/grubby.spec b/grubby.spec index d7efabe..9813791 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 81%{?dist} +Release: 82%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Fri Jan 17 2025 Fedora Release Engineering - 8.40-82 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Mon Jan 06 2025 Nicolas Frayer - 8.40-81 - Fixups to custom kernel targets From 7d63bffff90403fdb8e33c0a30562e0d73cafeeb Mon Sep 17 00:00:00 2001 From: Leo Sandoval Date: Thu, 20 Mar 2025 11:28:33 -0600 Subject: [PATCH 22/25] grubby-bls: in s390* systems, run zipl on grub cfg update event Change takes into account s390* systems as target for zipl execution. Reformat better archs/scenarios when either zipl or grub2-mkconfig must be run. Signed-off-by: Leo Sandoval --- grubby-bls | 20 +++++++++++--------- grubby.spec | 6 +++++- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/grubby-bls b/grubby-bls index 2785583..555fd13 100755 --- a/grubby-bls +++ b/grubby-bls @@ -599,17 +599,19 @@ remove_var_prefix() { update_grubcfg() { - # Older ppc64le OPAL firmware don't have BLS support so grub2-mkconfig has to be run - # to generate a config with menuentry commands. - if [ "${arch}" = "ppc64le" ] && [ -d /sys/firmware/opal ]; then + # Turn on RUN_MKCONFIG on different archs/scenarios + if [[ "${arch}" = 's390' ]] || [[ "${arch}" = 's390x' ]]; then + # On s390/s390x systems, run mkconfig/zipl RUN_MKCONFIG="true" - fi - - # PV and PVH Xen DomU guests boot with pygrub that doesn't have BLS support, - # also Xen Dom0 use the menuentries from 20_linux_xen and not the ones from - # 10_linux. So grub2-mkconfig has to run for both Xen Dom0 and DomU. - if [[ -e /sys/hypervisor/type ]] && grep -q "^xen$" /sys/hypervisor/type; then + elif [[ "${arch}" = "ppc64le" ]] && [[ -d /sys/firmware/opal ]]; then + # Older ppc64le OPAL firmware don't have BLS support so grub2-mkconfig has to be run + # to generate a config with menuentry commands. + RUN_MKCONFIG="true" + elif [[ -e /sys/hypervisor/type ]] && grep -q "^xen$" /sys/hypervisor/type; then if [ ! -e /sys/hypervisor/guest_type ] || ! grep -q "^HVM$" /sys/hypervisor/guest_type; then + # PV and PVH Xen DomU guests boot with pygrub that doesn't have BLS support, + # also Xen Dom0 use the menuentries from 20_linux_xen and not the ones from + # 10_linux. So grub2-mkconfig has to run for both Xen Dom0 and DomU. RUN_MKCONFIG=true fi fi diff --git a/grubby.spec b/grubby.spec index 9813791..1ffa529 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 82%{?dist} +Release: 83%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,10 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Thu Mar 20 2025 Leo Sandoval - 8.40-83 +- grubby-bls: in s390* systems, run zipl on grub cfg update event + Fixes previous commit and formats better the conditions that trigger grub cfg updates + * Fri Jan 17 2025 Fedora Release Engineering - 8.40-82 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 0eb1bed0a54ae1c41514e636f4016560cd355cdf Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 24 Jul 2025 16:39:20 +0000 Subject: [PATCH 23/25] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- grubby.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/grubby.spec b/grubby.spec index 1ffa529..6abb3ed 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 83%{?dist} +Release: 84%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Thu Jul 24 2025 Fedora Release Engineering - 8.40-84 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Thu Mar 20 2025 Leo Sandoval - 8.40-83 - grubby-bls: in s390* systems, run zipl on grub cfg update event Fixes previous commit and formats better the conditions that trigger grub cfg updates From 6095bc576b3aa216400f1cc133ade107d4830ea7 Mon Sep 17 00:00:00 2001 From: Leo Sandoval Date: Wed, 30 Jul 2025 12:16:29 -0600 Subject: [PATCH 24/25] Update cfg when setting a default kernel Signed-off-by: Raju Cheerla Signed-off-by: Leo Sandoval --- grubby-bls | 2 +- grubby.spec | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/grubby-bls b/grubby-bls index 555fd13..11b69b1 100755 --- a/grubby-bls +++ b/grubby-bls @@ -567,7 +567,7 @@ set_default_bls() { echo "default=${default}" >> "${zipl_config}" fi fi - + update_grubcfg print_info "The default is ${bls_file[$index]} with index $index and kernel $(get_prefix)${bls_linux[$index]}" } diff --git a/grubby.spec b/grubby.spec index 6abb3ed..a7ec5c4 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 84%{?dist} +Release: 85%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -74,6 +74,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Wed Jul 30 2025 Leo Sandoval - 8.40-85 +- Update cfg when setting a default kernel + * Thu Jul 24 2025 Fedora Release Engineering - 8.40-84 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From 482a2825c47c4fd28a18beb279a3e826461bf878 Mon Sep 17 00:00:00 2001 From: Simon de Vlieger Date: Wed, 10 Dec 2025 07:50:55 +0100 Subject: [PATCH 25/25] spec: own `/etc/sysconfig/kernel` `grubby` reads the `/etc/sysconfig/kernel` file which isn't owned by the package, nor created by it. This leads to all image build tooling having to take special care to write this file [1] [2] so produced deliverables automatically update their kernels. This commit moves the creation of this file to the `grubby` package so things work 'out of the box' instead of needing to do out-of-package configuration by third parties. [1]: https://pagure.io/fedora-kiwi-descriptions/blob/f43/f/root/etc/sysconfig [2]: https://github.com/osbuild/images/blob/a8fafe8d9b9f7fa0d4e7316b15452acd63c6941d/data/distrodefs/fedora/imagetypes.yaml#L1027-L1028 Signed-off-by: Simon de Vlieger --- grubby.spec | 10 +++++++++- kernel.sysconfig | 6 ++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 kernel.sysconfig diff --git a/grubby.spec b/grubby.spec index a7ec5c4..87b8787 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 85%{?dist} +Release: 86%{?dist} Summary: Command line tool for updating bootloader configs License: GPL-2.0-or-later Source1: grubby-bls @@ -12,6 +12,7 @@ Source3: COPYING Source5: 95-kernel-hooks.install Source6: 10-devicetree.install Source7: grubby.8 +Source8: kernel.sysconfig BuildRequires: gcc BuildRequires: glib2-devel @@ -59,6 +60,9 @@ install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE6} mkdir -p %{buildroot}%{_mandir}/man8 install -m 0644 %{SOURCE7} %{buildroot}%{_mandir}/man8/ +mkdir -p %{buildroot}%{_sysconfdir}/sysconfig +install -m 0644 %{SOURCE8} %{buildroot}%{_sysconfdir}/sysconfig/kernel + %post if [ "$1" = 2 ]; then arch=$(uname -m) @@ -72,8 +76,12 @@ fi %attr(0755,root,root) %{_prefix}/lib/kernel/install.d/10-devicetree.install %attr(0755,root,root) %{_prefix}/lib/kernel/install.d/95-kernel-hooks.install %{_mandir}/man8/grubby.8* +%config(noreplace) %{_sysconfdir}/sysconfig/kernel %changelog +* Wed Dec 10 2025 Simon de Vlieger - 8.40-86 +- Own `/etc/sysconfig/kernel` which is used for `grubby` configuration + * Wed Jul 30 2025 Leo Sandoval - 8.40-85 - Update cfg when setting a default kernel diff --git a/kernel.sysconfig b/kernel.sysconfig new file mode 100644 index 0000000..8da1970 --- /dev/null +++ b/kernel.sysconfig @@ -0,0 +1,6 @@ +# UPDATEDEFAULT specifies if kernel-install should make +# new kernels the default +UPDATEDEFAULT=yes + +# DEFAULTKERNEL specifies the default kernel package type +DEFAULTKERNEL=kernel-core