Compare commits
10 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e23454f08 |
||
|
|
e10461b754 | ||
|
|
907d2ed59e |
||
|
|
b7409e8032 | ||
|
|
c555f75234 | ||
|
|
2d40f773c6 | ||
|
|
504ff4446b |
||
|
|
83d4145e20 | ||
|
|
8813fe1f7c | ||
|
|
7d47e62c2e |
17 changed files with 2735 additions and 1321 deletions
9
.gitignore
vendored
9
.gitignore
vendored
|
|
@ -1,6 +1,7 @@
|
|||
*.tar.bz2
|
||||
*.tar.gz
|
||||
grubby-*.tar.bz2
|
||||
clog
|
||||
*.rpm
|
||||
.build*log
|
||||
*/
|
||||
/8.40-1.tar.gz
|
||||
grubby-*/
|
||||
.build*.log
|
||||
.*sw?
|
||||
|
|
|
|||
143
0001-Change-return-type-in-getRootSpecifier.patch
Normal file
143
0001-Change-return-type-in-getRootSpecifier.patch
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
From c1c46d21182974181f5b4c2ed0a02288b4bfd880 Mon Sep 17 00:00:00 2001
|
||||
From: Nathaniel McCallum <npmccallum@redhat.com>
|
||||
Date: Fri, 2 Mar 2018 14:59:32 -0500
|
||||
Subject: [PATCH 1/3] Change return type in getRootSpecifier()
|
||||
|
||||
Rather than returning a new allocation of the prefix, just return the
|
||||
length of the prefix. This change accomplishes a couple things. First,
|
||||
it reduces some memory leaks since the return value was often never
|
||||
freed. Second, it simplifies the caller who is usually only interested
|
||||
in the length of the prefix.
|
||||
---
|
||||
grubby.c | 54 +++++++++++++++++++++++++++---------------------------
|
||||
1 file changed, 27 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/grubby.c b/grubby.c
|
||||
index d4ebb86..a062ef8 100644
|
||||
--- a/grubby.c
|
||||
+++ b/grubby.c
|
||||
@@ -675,7 +675,7 @@ static int lineWrite(FILE * out, struct singleLine * line,
|
||||
struct configFileInfo * cfi);
|
||||
static int getNextLine(char ** bufPtr, struct singleLine * line,
|
||||
struct configFileInfo * cfi);
|
||||
-static char * getRootSpecifier(char * str);
|
||||
+static size_t getRootSpecifier(const char *str);
|
||||
static void requote(struct singleLine *line, struct configFileInfo * cfi);
|
||||
static void insertElement(struct singleLine * line,
|
||||
const char * item, int insertHere,
|
||||
@@ -1840,7 +1840,7 @@ int suitableImage(struct singleEntry * entry, const char * bootPrefix,
|
||||
char * fullName;
|
||||
int i;
|
||||
char * dev;
|
||||
- char * rootspec;
|
||||
+ size_t rs;
|
||||
char * rootdev;
|
||||
|
||||
if (skipRemoved && entry->skip) {
|
||||
@@ -1866,12 +1866,11 @@ int suitableImage(struct singleEntry * entry, const char * bootPrefix,
|
||||
|
||||
fullName = alloca(strlen(bootPrefix) +
|
||||
strlen(line->elements[1].item) + 1);
|
||||
- rootspec = getRootSpecifier(line->elements[1].item);
|
||||
- int rootspec_offset = rootspec ? strlen(rootspec) : 0;
|
||||
+ rs = getRootSpecifier(line->elements[1].item);
|
||||
int hasslash = endswith(bootPrefix, '/') ||
|
||||
- beginswith(line->elements[1].item + rootspec_offset, '/');
|
||||
+ beginswith(line->elements[1].item + rs, '/');
|
||||
sprintf(fullName, "%s%s%s", bootPrefix, hasslash ? "" : "/",
|
||||
- line->elements[1].item + rootspec_offset);
|
||||
+ line->elements[1].item + rs);
|
||||
if (access(fullName, R_OK)) {
|
||||
notSuitablePrintf(entry, 0, "access to %s failed\n", fullName);
|
||||
return 0;
|
||||
@@ -1952,7 +1951,6 @@ struct singleEntry * findEntryByPath(struct grubConfig * config,
|
||||
struct singleLine * line;
|
||||
int i;
|
||||
char * chptr;
|
||||
- char * rootspec = NULL;
|
||||
enum lineType_e checkType = LT_KERNEL;
|
||||
|
||||
if (isdigit(*kernel)) {
|
||||
@@ -2044,11 +2042,10 @@ struct singleEntry * findEntryByPath(struct grubConfig * config,
|
||||
|
||||
if (line && line->type != LT_MENUENTRY &&
|
||||
line->numElements >= 2) {
|
||||
- rootspec = getRootSpecifier(line->elements[1].item);
|
||||
- if (!strcmp(line->elements[1].item +
|
||||
- ((rootspec != NULL) ? strlen(rootspec) : 0),
|
||||
- kernel + strlen(prefix)))
|
||||
- break;
|
||||
+ if (!strcmp(line->elements[1].item +
|
||||
+ getRootSpecifier(line->elements[1].item),
|
||||
+ kernel + strlen(prefix)))
|
||||
+ break;
|
||||
}
|
||||
if(line->type == LT_MENUENTRY &&
|
||||
!strcmp(line->elements[1].item, kernel))
|
||||
@@ -2797,11 +2794,11 @@ struct singleLine * addLineTmpl(struct singleEntry * entry,
|
||||
|
||||
/* but try to keep the rootspec from the template... sigh */
|
||||
if (tmplLine->type & (LT_HYPER|LT_KERNEL|LT_MBMODULE|LT_INITRD|LT_KERNEL_EFI|LT_INITRD_EFI|LT_KERNEL_16|LT_INITRD_16)) {
|
||||
- char * rootspec = getRootSpecifier(tmplLine->elements[1].item);
|
||||
- if (rootspec != NULL) {
|
||||
- free(newLine->elements[1].item);
|
||||
- newLine->elements[1].item =
|
||||
- sdupprintf("%s%s", rootspec, val);
|
||||
+ size_t rs = getRootSpecifier(tmplLine->elements[1].item);
|
||||
+ if (rs > 0) {
|
||||
+ free(newLine->elements[1].item);
|
||||
+ newLine->elements[1].item = sdupprintf("%.*s%s", (int) rs,
|
||||
+ tmplLine->elements[1].item, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3729,15 +3726,19 @@ int checkForElilo(struct grubConfig * config) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
-static char * getRootSpecifier(char * str) {
|
||||
- char * idx, * rootspec = NULL;
|
||||
+static size_t getRootSpecifier(const char *str)
|
||||
+{
|
||||
+ size_t rs = 0;
|
||||
|
||||
if (*str == '(') {
|
||||
- idx = rootspec = strdup(str);
|
||||
- while(*idx && (*idx != ')') && (!isspace(*idx))) idx++;
|
||||
- *(++idx) = '\0';
|
||||
+ for (; str[rs] != ')' && !isspace(str[rs]); rs++) {
|
||||
+ if (!str[rs])
|
||||
+ return rs;
|
||||
+ }
|
||||
+ rs++;
|
||||
}
|
||||
- return rootspec;
|
||||
+
|
||||
+ return rs;
|
||||
}
|
||||
|
||||
static char * getInitrdVal(struct grubConfig * config,
|
||||
@@ -4616,7 +4617,7 @@ int main(int argc, const char ** argv) {
|
||||
if (displayDefault) {
|
||||
struct singleLine * line;
|
||||
struct singleEntry * entry;
|
||||
- char * rootspec;
|
||||
+ size_t rs;
|
||||
|
||||
if (config->defaultImage == -1) return 0;
|
||||
if (config->defaultImage == DEFAULT_SAVED_GRUB2 &&
|
||||
@@ -4629,9 +4630,8 @@ int main(int argc, const char ** argv) {
|
||||
line = getLineByType(LT_KERNEL|LT_HYPER|LT_KERNEL_EFI|LT_KERNEL_16, entry->lines);
|
||||
if (!line) return 0;
|
||||
|
||||
- rootspec = getRootSpecifier(line->elements[1].item);
|
||||
- printf("%s%s\n", bootPrefix, line->elements[1].item +
|
||||
- ((rootspec != NULL) ? strlen(rootspec) : 0));
|
||||
+ rs = getRootSpecifier(line->elements[1].item);
|
||||
+ printf("%s%s\n", bootPrefix, line->elements[1].item + rs);
|
||||
|
||||
return 0;
|
||||
|
||||
--
|
||||
2.14.3
|
||||
|
||||
209
0002-Add-btrfs-subvolume-support-for-grub2.patch
Normal file
209
0002-Add-btrfs-subvolume-support-for-grub2.patch
Normal file
|
|
@ -0,0 +1,209 @@
|
|||
From 5dec033b19bb5b07a0a136a7357e16c8ca9f5dd6 Mon Sep 17 00:00:00 2001
|
||||
From: Nathaniel McCallum <npmccallum@redhat.com>
|
||||
Date: Fri, 2 Mar 2018 08:40:18 -0500
|
||||
Subject: [PATCH 2/3] Add btrfs subvolume support for grub2
|
||||
|
||||
In order to find the subvolume prefix from a given path, we parse
|
||||
/proc/mounts. In cases where /proc/mounts doesn't contain the
|
||||
filesystem, the caller can use the --mounts option to specify his own
|
||||
mounts file.
|
||||
|
||||
Btrfs subvolumes are already supported by grub2 and by grub2-mkconfig.
|
||||
|
||||
Fixes #22
|
||||
---
|
||||
grubby.c | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
|
||||
1 file changed, 143 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/grubby.c b/grubby.c
|
||||
index a062ef8..96d252a 100644
|
||||
--- a/grubby.c
|
||||
+++ b/grubby.c
|
||||
@@ -68,6 +68,8 @@ int isEfi = 0;
|
||||
|
||||
char *saved_command_line = NULL;
|
||||
|
||||
+const char *mounts = "/proc/mounts";
|
||||
+
|
||||
/* comments get lumped in with indention */
|
||||
struct lineElement {
|
||||
char * item;
|
||||
@@ -1834,6 +1836,129 @@ static int endswith(const char *s, char c)
|
||||
return s[slen] == c;
|
||||
}
|
||||
|
||||
+typedef struct {
|
||||
+ const char *start;
|
||||
+ size_t chars;
|
||||
+} field;
|
||||
+
|
||||
+static int iscomma(int c)
|
||||
+{
|
||||
+ return c == ',';
|
||||
+}
|
||||
+
|
||||
+static int isequal(int c)
|
||||
+{
|
||||
+ return c == '=';
|
||||
+}
|
||||
+
|
||||
+static field findField(const field *in, typeof(isspace) *isdelim, field *out)
|
||||
+{
|
||||
+ field nxt = {};
|
||||
+ size_t off = 0;
|
||||
+
|
||||
+ while (off < in->chars && isdelim(in->start[off]))
|
||||
+ off++;
|
||||
+
|
||||
+ if (off == in->chars)
|
||||
+ return nxt;
|
||||
+
|
||||
+ out->start = &in->start[off];
|
||||
+ out->chars = 0;
|
||||
+
|
||||
+ while (off + out->chars < in->chars && !isdelim(out->start[out->chars]))
|
||||
+ out->chars++;
|
||||
+
|
||||
+ nxt.start = out->start + out->chars;
|
||||
+ nxt.chars = in->chars - off - out->chars;
|
||||
+ return nxt;
|
||||
+}
|
||||
+
|
||||
+static int fieldEquals(const field *in, const char *str)
|
||||
+{
|
||||
+ return in->chars == strlen(str) &&
|
||||
+ strncmp(in->start, str, in->chars) == 0;
|
||||
+}
|
||||
+
|
||||
+/* Parse /proc/mounts to determine the subvolume prefix. */
|
||||
+static size_t subvolPrefix(const char *str)
|
||||
+{
|
||||
+ FILE *file = NULL;
|
||||
+ char *line = NULL;
|
||||
+ size_t prfx = 0;
|
||||
+ size_t size = 0;
|
||||
+
|
||||
+ file = fopen(mounts, "r");
|
||||
+ if (!file)
|
||||
+ return 0;
|
||||
+
|
||||
+ for (ssize_t s; (s = getline(&line, &size, file)) >= 0; ) {
|
||||
+ field nxt = { line, s };
|
||||
+ field dev = {};
|
||||
+ field path = {};
|
||||
+ field type = {};
|
||||
+ field opts = {};
|
||||
+ field opt = {};
|
||||
+
|
||||
+ nxt = findField(&nxt, isspace, &dev);
|
||||
+ if (!nxt.start)
|
||||
+ continue;
|
||||
+
|
||||
+ nxt = findField(&nxt, isspace, &path);
|
||||
+ if (!nxt.start)
|
||||
+ continue;
|
||||
+
|
||||
+ nxt = findField(&nxt, isspace, &type);
|
||||
+ if (!nxt.start)
|
||||
+ continue;
|
||||
+
|
||||
+ nxt = findField(&nxt, isspace, &opts);
|
||||
+ if (!nxt.start)
|
||||
+ continue;
|
||||
+
|
||||
+ if (!fieldEquals(&type, "btrfs"))
|
||||
+ continue;
|
||||
+
|
||||
+ /* We have found a btrfs mount point. */
|
||||
+
|
||||
+ nxt = opts;
|
||||
+ while ((nxt = findField(&nxt, iscomma, &opt)).start) {
|
||||
+ field key = {};
|
||||
+ field val = {};
|
||||
+
|
||||
+ opt = findField(&opt, isequal, &key);
|
||||
+ if (!opt.start)
|
||||
+ continue;
|
||||
+
|
||||
+ opt = findField(&opt, isequal, &val);
|
||||
+ if (!opt.start)
|
||||
+ continue;
|
||||
+
|
||||
+ if (!fieldEquals(&key, "subvol"))
|
||||
+ continue;
|
||||
+
|
||||
+ /* We have found a btrfs subvolume mount point. */
|
||||
+
|
||||
+ if (strncmp(val.start, str, val.chars))
|
||||
+ continue;
|
||||
+
|
||||
+ if (val.start[val.chars - 1] != '/' &&
|
||||
+ str[val.chars] != '/')
|
||||
+ continue;
|
||||
+
|
||||
+ /* The subvolume mount point matches our input. */
|
||||
+
|
||||
+ if (prfx < val.chars)
|
||||
+ prfx = val.chars;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ dbgPrintf("%s(): str: '%s', prfx: '%s'\n", __FUNCTION__, str, prfx);
|
||||
+
|
||||
+ fclose(file);
|
||||
+ free(line);
|
||||
+ return prfx;
|
||||
+}
|
||||
+
|
||||
int suitableImage(struct singleEntry * entry, const char * bootPrefix,
|
||||
int skipRemoved, int flags) {
|
||||
struct singleLine * line;
|
||||
@@ -2794,12 +2919,22 @@ struct singleLine * addLineTmpl(struct singleEntry * entry,
|
||||
|
||||
/* but try to keep the rootspec from the template... sigh */
|
||||
if (tmplLine->type & (LT_HYPER|LT_KERNEL|LT_MBMODULE|LT_INITRD|LT_KERNEL_EFI|LT_INITRD_EFI|LT_KERNEL_16|LT_INITRD_16)) {
|
||||
- size_t rs = getRootSpecifier(tmplLine->elements[1].item);
|
||||
+ const char *prfx = tmplLine->elements[1].item;
|
||||
+ size_t rs = getRootSpecifier(prfx);
|
||||
+ if (isinitrd(tmplLine->type)) {
|
||||
+ for (struct singleLine *l = entry->lines;
|
||||
+ rs == 0 && l; l = l->next) {
|
||||
+ if (iskernel(l->type)) {
|
||||
+ prfx = l->elements[1].item;
|
||||
+ rs = getRootSpecifier(prfx);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
if (rs > 0) {
|
||||
free(newLine->elements[1].item);
|
||||
- newLine->elements[1].item = sdupprintf("%.*s%s", (int) rs,
|
||||
- tmplLine->elements[1].item, val);
|
||||
- }
|
||||
+ newLine->elements[1].item = sdupprintf("%.*s%s",
|
||||
+ (int) rs, prfx, val);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3738,7 +3873,7 @@ static size_t getRootSpecifier(const char *str)
|
||||
rs++;
|
||||
}
|
||||
|
||||
- return rs;
|
||||
+ return rs + subvolPrefix(str + rs);
|
||||
}
|
||||
|
||||
static char * getInitrdVal(struct grubConfig * config,
|
||||
@@ -4253,6 +4388,9 @@ int main(int argc, const char ** argv) {
|
||||
{ "mbargs", 0, POPT_ARG_STRING, &newMBKernelArgs, 0,
|
||||
_("default arguments for the new multiboot kernel or "
|
||||
"new arguments for multiboot kernel being updated"), NULL },
|
||||
+ { "mounts", 0, POPT_ARG_STRING, &mounts, 0,
|
||||
+ _("path to fake /proc/mounts file (for testing only)"),
|
||||
+ _("mounts") },
|
||||
{ "bad-image-okay", 0, 0, &badImageOkay, 0,
|
||||
_("don't sanity check images in boot entries (for testing only)"),
|
||||
NULL },
|
||||
--
|
||||
2.14.3
|
||||
|
||||
1871
0003-Add-tests-for-btrfs-support.patch
Normal file
1871
0003-Add-tests-for-btrfs-support.patch
Normal file
File diff suppressed because it is too large
Load diff
36
0004-Honor-sbindir.patch
Normal file
36
0004-Honor-sbindir.patch
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
From a56df998177574ef2db332220c15f11bccd98f7e Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 18 Jul 2018 13:41:02 -0400
|
||||
Subject: [PATCH] Honor sbindir
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
Makefile | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index ac144046133..2b18dd6404b 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -42,14 +42,14 @@ test: all
|
||||
@./test.sh
|
||||
|
||||
install: all
|
||||
- mkdir -p $(DESTDIR)$(PREFIX)/sbin
|
||||
+ mkdir -p $(DESTDIR)$(PREFIX)$(sbindir)
|
||||
mkdir -p $(DESTDIR)/$(mandir)/man8
|
||||
- install -m 755 new-kernel-pkg $(DESTDIR)$(PREFIX)/sbin
|
||||
+ install -m 755 new-kernel-pkg $(DESTDIR)$(PREFIX)$(sbindir)
|
||||
install -m 644 new-kernel-pkg.8 $(DESTDIR)/$(mandir)/man8
|
||||
- install -m 755 installkernel $(DESTDIR)$(PREFIX)/sbin
|
||||
+ install -m 755 installkernel $(DESTDIR)$(PREFIX)$(sbindir)
|
||||
install -m 644 installkernel.8 $(DESTDIR)/$(mandir)/man8
|
||||
if [ -f grubby ]; then \
|
||||
- install -m 755 grubby $(DESTDIR)$(PREFIX)/sbin ; \
|
||||
+ install -m 755 grubby $(DESTDIR)$(PREFIX)$(sbindir) ; \
|
||||
install -m 644 grubby.8 $(DESTDIR)/$(mandir)/man8 ; \
|
||||
fi
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
||||
48
0005-installkernel-use-kernel-install.patch
Normal file
48
0005-installkernel-use-kernel-install.patch
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
From f93a35be5bdec17044dd2a17980689d3cbf73d58 Mon Sep 17 00:00:00 2001
|
||||
From: Javier Martinez Canillas <javierm@redhat.com>
|
||||
Date: Tue, 31 Jul 2018 17:43:53 +0200
|
||||
Subject: [PATCH] Make installkernel to use kernel-install scripts on BLS
|
||||
configuration
|
||||
|
||||
The kernel make install target executes the arch/$ARCH/boot/install.sh
|
||||
that in turns executes the distro specific installkernel script. This
|
||||
script always uses new-kernel-pkg to install the kernel images.
|
||||
|
||||
But on a BootLoaderSpec setup, the kernel-install scripts must be used
|
||||
instead. Check if the system uses a BLS setup, and call kernel-install
|
||||
add in that case instead of new-kernel-pkg.
|
||||
|
||||
Reported-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
|
||||
---
|
||||
installkernel | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/installkernel b/installkernel
|
||||
index b887929c179..68dcfac16d2 100755
|
||||
--- a/installkernel
|
||||
+++ b/installkernel
|
||||
@@ -20,6 +20,8 @@
|
||||
# Author(s): tyson@rwii.com
|
||||
#
|
||||
|
||||
+[[ -f /etc/default/grub ]] && . /etc/default/grub
|
||||
+
|
||||
usage() {
|
||||
echo "Usage: `basename $0` <kernel_version> <bootimage> <mapfile>" >&2
|
||||
exit 1
|
||||
@@ -77,6 +79,11 @@ 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 [ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ] || [ ! -f /sbin/new-kernel-pkg ]; then
|
||||
+ kernel-install add $KERNEL_VERSION $INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION
|
||||
+ exit $?
|
||||
+fi
|
||||
+
|
||||
if [ -n "$cfgLoader" ] && [ -x /sbin/new-kernel-pkg ]; then
|
||||
if [ -n "$(which dracut 2>/dev/null)" ]; then
|
||||
new-kernel-pkg --mkinitrd --dracut --host-only --depmod --install --kernel-name $KERNEL_NAME $KERNEL_VERSION
|
||||
--
|
||||
2.17.1
|
||||
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# set -x
|
||||
|
||||
if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 || "$(uname -m)" == riscv64 ]]
|
||||
then
|
||||
COMMAND="$1"
|
||||
KERNEL_VERSION="$2"
|
||||
#BOOT_DIR_ABS="$3"
|
||||
#KERNEL_IMAGE="$4"
|
||||
|
||||
[ -f /etc/u-boot.conf ] && source /etc/u-boot.conf || true
|
||||
[ -z "$FIRMWAREDT" ] || FirmwareDT=$FIRMWAREDT
|
||||
|
||||
if [[ $FirmwareDT == "True" ]]
|
||||
then
|
||||
# if we want to use firmware DT we remove symlink to current kernel DT
|
||||
if [ -h /boot/dtb ]; then
|
||||
rm -f /boot/dtb
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Setup a /boot/dtb -> /boot/dtb-$newest_kernel_version symlink so that
|
||||
# u-boot can find the correct dtb to load.
|
||||
#
|
||||
# If invoked to 'add' a new kernel, find the newest based on `sort`ing
|
||||
# the kernel versions dtb. If 'remove', then follow basically the same
|
||||
# procedure but exclude the version currently being removed.
|
||||
#
|
||||
# The theory of operation here is that, while newer kernels may add new
|
||||
# dtb nodes and fields, as upstreaming hw support for some particular
|
||||
# device progresses, it should never make backward incompatible changes.
|
||||
# So it should always be safe to use a newer dtb with an older kernel.
|
||||
|
||||
list_dtb_versions() {
|
||||
excluded_version="$1"
|
||||
for dtbdir in /boot/dtb-*; do
|
||||
dtbver=${dtbdir#*-}
|
||||
if [ "$dtbver" != "$excluded_version" ]; then
|
||||
echo $dtbver
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
setup_dtb_link() {
|
||||
ver=`list_dtb_versions $1 | sort -r --sort=version | head -1`
|
||||
if [ -h /boot/dtb ]; then
|
||||
rm -f /boot/dtb
|
||||
fi
|
||||
ln -s dtb-$ver /boot/dtb
|
||||
}
|
||||
|
||||
ret=0
|
||||
case "$COMMAND" in
|
||||
add)
|
||||
# If we're adding a kernel we want that version
|
||||
if [ -h /boot/dtb ]; then
|
||||
rm -f /boot/dtb
|
||||
fi
|
||||
ln -s dtb-$KERNEL_VERSION /boot/dtb
|
||||
ret=$?
|
||||
;;
|
||||
remove)
|
||||
setup_dtb_link $KERNEL_VERSION
|
||||
ret=$?
|
||||
;;
|
||||
esac
|
||||
exit $ret
|
||||
else
|
||||
# Just exit on non ARM
|
||||
exit 0
|
||||
fi
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
COMMAND="$1"
|
||||
KERNEL_VERSION="$2"
|
||||
BOOT_DIR_ABS="$3"
|
||||
|
||||
# If $BOOT_DIR_ABS exists, some other boot loader is active.
|
||||
[[ -d "$BOOT_DIR_ABS" ]] && exit 0
|
||||
|
||||
run_hooks()
|
||||
{
|
||||
local f
|
||||
local files="$1"
|
||||
for f in $files ; do
|
||||
[ -x "$f" ] || continue
|
||||
"$f" "$KERNEL_VERSION" "/boot/vmlinuz-$KERNEL_VERSION"
|
||||
done
|
||||
}
|
||||
|
||||
case "$COMMAND" in
|
||||
add)
|
||||
run_hooks "/etc/kernel/postinst.d/*[^~] /etc/kernel/postinst.d/$KERNEL_VERSION/*[^~]"
|
||||
;;
|
||||
remove)
|
||||
run_hooks "/etc/kernel/prerm.d/*[^~] /etc/kernel/prerm.d/$KERNEL_VERSION/*[^~]"
|
||||
;;
|
||||
*)
|
||||
exit 0
|
||||
esac
|
||||
340
COPYING
340
COPYING
|
|
@ -1,340 +0,0 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
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, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
232
drop-uboot-uImage-creation.patch
Normal file
232
drop-uboot-uImage-creation.patch
Normal file
|
|
@ -0,0 +1,232 @@
|
|||
From 3689d4cebedf115e41c192bf034b6f86fcb80acb Mon Sep 17 00:00:00 2001
|
||||
From: Dennis Gilmore <dennis@ausil.us>
|
||||
Date: Wed, 30 Aug 2017 14:03:45 -0500
|
||||
Subject: [PATCH] remove the old crufty u-boot support
|
||||
|
||||
Fedora has only supported extlinux.conf for a few releases now
|
||||
as a result it should be the only way we boot systems. Remove
|
||||
the no longer needed uboot file
|
||||
|
||||
Signed-off-by: Dennis Gilmore <dennis@ausil.us>
|
||||
---
|
||||
new-kernel-pkg | 116 ---------------------------------------------------------
|
||||
uboot | 43 ---------------------
|
||||
2 files changed, 159 deletions(-)
|
||||
delete mode 100644 uboot
|
||||
|
||||
diff --git a/new-kernel-pkg b/new-kernel-pkg
|
||||
index 64225de..0fe6caa 100755
|
||||
--- a/new-kernel-pkg
|
||||
+++ b/new-kernel-pkg
|
||||
@@ -37,7 +37,6 @@ else
|
||||
fi
|
||||
|
||||
[ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
|
||||
-[ -f /etc/sysconfig/uboot ] && . /etc/sysconfig/uboot
|
||||
|
||||
cfgGrub2=""
|
||||
cfgGrub2Efi=""
|
||||
@@ -50,7 +49,6 @@ grubConfig=""
|
||||
grub2Config=""
|
||||
grub2EfiConfig=""
|
||||
extlinuxConfig=""
|
||||
-ubootScript="/boot/boot.scr"
|
||||
|
||||
ARCH=$(uname -m)
|
||||
|
||||
@@ -84,13 +82,6 @@ elif [[ ${ARCH} =~ armv[5|7].*l ]] ; then
|
||||
liloConfig=""
|
||||
bootPrefix=/boot
|
||||
extlinuxConfig=$(readlink -f /etc/extlinux.conf 2>/dev/null)
|
||||
- ubootDir=${UBOOT_DIR:-"/boot"}
|
||||
- ubootScript=$ubootDir/${UBOOT_SCR:-"boot.scr"}
|
||||
- ubootKList=${UBOOT_KLIST:-"klist.txt"}
|
||||
- ubootDevice=/dev/${UBOOT_DEVICE:-"mmcblk0p1"}
|
||||
- ubootDefaultImage=${UBOOT_UIMAGE:-"uImage"}
|
||||
- ubootDefaultInitrd=${UBOOT_UINITRD:-"uInitrd"}
|
||||
- ubootAddress=${UBOOT_IMGADDR:-"0x00008000"}
|
||||
mounted=""
|
||||
liloFlag=""
|
||||
isx86=""
|
||||
@@ -386,53 +377,6 @@ remove() {
|
||||
[ -n "$verbose" ] && echo "$liloConfig does not exist, not running grubby"
|
||||
fi
|
||||
|
||||
- if [ -n "$cfguBoot" ]; then
|
||||
- [ -n "$verbose" ] && echo "removing $version from $ubootDir..."
|
||||
-
|
||||
- if [ -f $ubootDir/$ubootKList ]; then
|
||||
- tmpKList=`mktemp $ubootDir/$ubootKList.XXXX`
|
||||
- curversion=`tail -n1 $ubootDir/$ubootKList`
|
||||
- sed "/$version$/d" $ubootDir/$ubootKList > $tmpKList
|
||||
- newversion=`tail -n1 $tmpKList`
|
||||
- if [ -f $ubootDir/uImage-$newversion ] && [ -f $ubootDir/uInitrd-$newversion ]; then
|
||||
- if [ "$curversion" != "$newversion" ]; then
|
||||
- cp -fp $ubootDir/uImage-$newversion $ubootDir/${ubootDefaultImage}
|
||||
- if [ $? -ne 0 ]; then
|
||||
- [ -n "$verbose" ] && echo "copy uImage-$newversion error, default kernel not replaced!" && exit
|
||||
- fi
|
||||
- cp -fp $ubootDir/uInitrd-$newversion $ubootDir/${ubootDefaultInitrd}
|
||||
- if [ $? -ne 0 ]; then
|
||||
- [ -n "$verbose" ] && echo "copy uInitrd-$newversion error, default Initrd not replaced!" && exit
|
||||
- fi
|
||||
- fi
|
||||
-
|
||||
- [ -n "$verbose" ] && echo "removing uImage-$version"
|
||||
- if [ -f $ubootDir/uImage-$version ]; then
|
||||
- rm -f $ubootDir/uImage-$version
|
||||
- else
|
||||
- [ -n "$verbose" ] && echo "uImage-$version did not exist!"
|
||||
- fi
|
||||
-
|
||||
- [ -n "$verbose" ] && echo "removing uInitrd-$version"
|
||||
- if [ -f $ubootDir/uInitrd-$version ]; then
|
||||
- rm -f $ubootDir/uInitrd-$version
|
||||
- else
|
||||
- [ -n "$verbose" ] && echo "uInitrd-$version did not exist!"
|
||||
- fi
|
||||
-
|
||||
- mv $tmpKList $ubootDir/$ubootKList
|
||||
- [ -x /sbin/a-b-c ] && /sbin/a-b-c
|
||||
- else
|
||||
- [ -n "$verbose" ] && echo "uImage $newversion does not exist!"
|
||||
- [ -f $tmpKList ] && rm -f $tmpKList
|
||||
- fi
|
||||
- else
|
||||
- [ -n "$verbose" ] && echo "No previous kernel version. U-Boot images not removed!"
|
||||
- fi
|
||||
- else
|
||||
- [ -n "$verbose" ] && echo "$ubootScript does not exist, not modifying $ubootDir"
|
||||
- fi
|
||||
-
|
||||
if [ -n "$cfgExtlinux" ]; then
|
||||
[ -n "$verbose" ] && echo "removing $version from $extlinuxConfig"
|
||||
$grubby --extlinux -c $extlinuxConfig \
|
||||
@@ -534,36 +478,6 @@ update() {
|
||||
[ -n "$verbose" ] && echo "$liloConfig does not exist, not running grubby"
|
||||
fi
|
||||
|
||||
- if [ -n "$cfguBoot" ]; then
|
||||
- [ -n "$verbose" ] && echo "adding $version to $ubootDir..."
|
||||
-
|
||||
- [ -n "$verbose" ] && echo "creating uImage-$version"
|
||||
- mkimage -A arm -O linux -T kernel -C none -a $ubootAddress \
|
||||
- -e $ubootAddress -n $version \
|
||||
- -d $kernelImage $ubootDir/uImage-$version
|
||||
-
|
||||
- [ -n "$verbose" ] && echo "creating uInitrd-$version"
|
||||
- mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 \
|
||||
- -n initramfs -d $initrdfile $ubootDir/uInitrd-$version
|
||||
-
|
||||
- if [ -f $ubootDir/uImage-$version ] && [ -f $ubootDir/uInitrd-$version ]; then
|
||||
- cp -fp $ubootDir/uImage-$version $ubootDir/${ubootDefaultImage}
|
||||
- if [ $? -ne 0 ]; then
|
||||
- [ -n "$verbose" ] && echo "copy uImage-$version error, kernel not installed!" && exit
|
||||
- fi
|
||||
- cp -fp $ubootDir/uInitrd-$version $ubootDir/${ubootDefaultInitrd}
|
||||
- if [ $? -ne 0 ]; then
|
||||
- [ -n "$verbose" ] && echo "copy uInitrd-$version error, kernel not installed!" && exit
|
||||
- fi
|
||||
- echo $version >> $ubootDir/$ubootKList
|
||||
- [ -x /sbin/a-b-c ] && /sbin/a-b-c
|
||||
- else
|
||||
- [ -n "$verbose" ] && echo "cannot make $version the default"
|
||||
- fi
|
||||
- else
|
||||
- [ -n "$verbose" ] && echo "$ubootScript does not exist, not setting up $ubootDir"
|
||||
- fi
|
||||
-
|
||||
if [ -n "$cfgExtlinux" ]; then
|
||||
[ -n "$verbose" ] && echo "updating $version from $extlinuxConfig"
|
||||
ARGS="--extlinux -c $extlinuxConfig --update-kernel=$kernelImage \
|
||||
@@ -874,33 +788,6 @@ fi
|
||||
[ -n "$liloConfig" ] && [ -f "$liloConfig" ] && cfgLilo=1;
|
||||
[ -n "$extlinuxConfig" ] && [ -f "$extlinuxConfig" ] && cfgExtlinux=1;
|
||||
|
||||
-# if we have a U-Boot directory, but no boot script, check if the directory
|
||||
-# is mounted. If not, mount it, and then check if a boot script exists.
|
||||
-if [ -n "$ubootDir" ]; then
|
||||
- if [ -f "$ubootScript" ]; then
|
||||
- cfguBoot=1
|
||||
- else
|
||||
- mountEntry=`mount | grep $ubootDir`
|
||||
- if [ -z "$mountEntry" ]; then
|
||||
- mount $ubootDevice $ubootDir
|
||||
- mounted=1
|
||||
- fi
|
||||
- [ -f "$ubootScript" ] && cfguBoot=1;
|
||||
- fi
|
||||
-fi
|
||||
-
|
||||
-# if we're using U-Boot, check if the default load address should change
|
||||
-if [ -n "$cfguBoot" -a -z "$UBOOT_IMGADDR" ]; then
|
||||
- [[ $version =~ .([^.]*)$ ]]
|
||||
- platform=${BASH_REMATCH[1]}
|
||||
- # A few platforms use an alternate kernel load address
|
||||
- if [ "$platform" = "omap" ]; then
|
||||
- ubootAddress=0x80008000
|
||||
- elif [ "$platform" = "imx" ]; then
|
||||
- ubootAddress=0x90008000
|
||||
- fi
|
||||
-fi
|
||||
-
|
||||
# if we have a lilo config on an x86 box, see if the default boot loader
|
||||
# is lilo to determine if it should be run
|
||||
if [ -n "$cfgLilo" -a -n "$isx86" ]; then
|
||||
@@ -920,7 +807,4 @@ elif [ "$mode" == "--rpmposttrans" ]; then
|
||||
rpmposttrans
|
||||
fi
|
||||
|
||||
-# if we mounted the U-Boot directory, unmount it.
|
||||
-[ -n "$mounted" ] && umount $ubootDir
|
||||
-
|
||||
exit 0
|
||||
diff --git a/uboot b/uboot
|
||||
deleted file mode 100644
|
||||
index 07d8671..0000000
|
||||
--- a/uboot
|
||||
+++ /dev/null
|
||||
@@ -1,43 +0,0 @@
|
||||
-# Settings for uBoot setup in /sbin/new-kernel-pkg
|
||||
-#
|
||||
-# Default values are provided below (as comments)
|
||||
-#
|
||||
-# WARNING: These values affect where grubby installs and removes
|
||||
-# uBoot kernel images. Changing these _after_ kernels have
|
||||
-# been installed may cause removing a kernel image to fail.
|
||||
-
|
||||
-# directory where uBoot images and scripts are found
|
||||
-#UBOOT_DIR=/boot
|
||||
-
|
||||
-# Override the load address when running mkimage on the kernel.
|
||||
-# OMAP such as Beagleboard and Pandaboard: Use 0x80008000
|
||||
-# Tegra such as Trimslice: Use 0x00008000
|
||||
-# IMX such as Efika mx51 smarttop: Use 0x90008000
|
||||
-# Kirkwood such as Dreamplug, Guruplug, Sheevaplug: Use 0x00008000
|
||||
-# If left undefined grubby will use defults for Tegra or OMAP depending
|
||||
-# upon the contents of /proc/cpuinfo.
|
||||
-#UBOOT_IMGADDR=0x0x00008000
|
||||
-
|
||||
-# name of the text file containing the list of installed kernel versions
|
||||
-# NOTE: The versions are in order of installation. The last entry should
|
||||
-# always be the default boot kernel version.
|
||||
-#UBOOT_KLIST=klist.txt
|
||||
-
|
||||
-# device partition where uBoot images reside; mounted on $UBOOT_DIR
|
||||
-#UBOOT_DEVICE=mmcblk0p1
|
||||
-
|
||||
-
|
||||
-# NOTE: Both of the following files are automatically overwritte
|
||||
-# when a kernel package is installed or removed.
|
||||
-
|
||||
-# default kernel uImage file name
|
||||
-#UBOOT_UIMAGE=uImage
|
||||
-
|
||||
-# default initrd uInitrd file name
|
||||
-#UBOOT_UINITRD=uInitrd
|
||||
-
|
||||
-# defualt for platform shipping an onboard dtb.
|
||||
-#SHIPSDTB=no
|
||||
-
|
||||
-# option to tell new-kernel-pkg a specific dtb file to load in extlinux.conf
|
||||
-#dtbfile=foo.dtb
|
||||
407
grubby-bls
407
grubby-bls
|
|
@ -48,10 +48,6 @@ print_error() {
|
|||
exit 1
|
||||
}
|
||||
|
||||
print_info() {
|
||||
echo "$1" >&2
|
||||
}
|
||||
|
||||
if [[ ${#} = 0 ]]; then
|
||||
print_error "no action specified"
|
||||
fi
|
||||
|
|
@ -60,7 +56,7 @@ get_bls_value() {
|
|||
local bls="$1" && shift
|
||||
local key="$1" && shift
|
||||
|
||||
echo "$(grep "^${key}[ \t]" "${bls}" | sed -e "s!^${key}[ \t]*!!")"
|
||||
echo "$(grep "^${key}[ \t]" "${bls}" | sed -e "s,^${key}[ \t]*,,")"
|
||||
}
|
||||
|
||||
set_bls_value() {
|
||||
|
|
@ -68,8 +64,7 @@ set_bls_value() {
|
|||
local key="$1" && shift
|
||||
local value="$1" && shift
|
||||
|
||||
value=$(echo $value | sed -e 's/\//\\\//g')
|
||||
sed -i -e "s/^${key}.*/${key} ${value}/" "${bls}"
|
||||
sed -i -e "s,^${key}.*,${key} ${value}," "${bls}"
|
||||
}
|
||||
|
||||
append_bls_value() {
|
||||
|
|
@ -77,32 +72,20 @@ append_bls_value() {
|
|||
local key="$1" && shift
|
||||
local value="$1" && shift
|
||||
|
||||
old_value="$(get_bls_value "${bls}" ${key})"
|
||||
old_value="$(get_bls_value ${bls} ${key})"
|
||||
set_bls_value "${bls}" "${key}" "${old_value}${value}"
|
||||
}
|
||||
|
||||
get_bls_values() {
|
||||
count=0
|
||||
local -a files
|
||||
local IFS=$'\n'
|
||||
files=($(for bls in ${blsdir}/*.conf ; do
|
||||
if ! [[ -e "${bls}" ]] ; then
|
||||
continue
|
||||
fi
|
||||
bls="${bls%.conf}"
|
||||
bls="${bls##*/}"
|
||||
echo "${bls}"
|
||||
done | sort -Vr 2>/dev/null)) || :
|
||||
|
||||
for bls in "${files[@]}" ; do
|
||||
blspath="${blsdir}/${bls}.conf"
|
||||
bls_file[$count]="${blspath}"
|
||||
bls_title[$count]="$(get_bls_value ${blspath} title)"
|
||||
bls_version[$count]="$(get_bls_value ${blspath} version)"
|
||||
bls_linux[$count]="$(get_bls_value ${blspath} linux)"
|
||||
bls_initrd[$count]="$(get_bls_value ${blspath} initrd)"
|
||||
bls_options[$count]="$(get_bls_value ${blspath} options)"
|
||||
bls_id[$count]="${bls}"
|
||||
for bls in $(ls -vr ${blsdir}/*.conf 2> /dev/null); do
|
||||
bls_file[$count]="${bls}"
|
||||
bls_title[$count]="$(get_bls_value ${bls} title)"
|
||||
bls_version[$count]="$(get_bls_value ${bls} version)"
|
||||
bls_linux[$count]="$(get_bls_value ${bls} linux)"
|
||||
bls_initrd[$count]="$(get_bls_value ${bls} initrd)"
|
||||
bls_options[$count]="$(get_bls_value ${bls} options)"
|
||||
bls_id[$count]="$(get_bls_value ${bls} id)"
|
||||
|
||||
count=$((count+1))
|
||||
done
|
||||
|
|
@ -125,13 +108,16 @@ get_default_index() {
|
|||
index="$default"
|
||||
fi
|
||||
|
||||
for i in ${!bls_file[@]}; do
|
||||
if [[ $i -eq $index ]]; then
|
||||
echo $i
|
||||
return
|
||||
fi
|
||||
# GRUB2 and zipl use different fields to set the default entry
|
||||
if [[ $bootloader = "grub2" ]]; then
|
||||
title="$default"
|
||||
else
|
||||
version="$default"
|
||||
fi
|
||||
|
||||
if [[ $default = ${bls_id[$i]} || $default = ${bls_title[$i]} ]]; then
|
||||
for i in ${!bls_file[@]}; do
|
||||
if [[ $title = ${bls_title[$i]} || $version = ${bls_version[$i]} ||
|
||||
$i -eq $index ]]; then
|
||||
echo $i
|
||||
return
|
||||
fi
|
||||
|
|
@ -139,11 +125,9 @@ get_default_index() {
|
|||
}
|
||||
|
||||
display_default_value() {
|
||||
local prefix=$(get_prefix)
|
||||
|
||||
case "$display_default" in
|
||||
kernel)
|
||||
echo "${prefix}${bls_linux[$default_index]}"
|
||||
echo "${bls_linux[$default_index]}"
|
||||
exit 0
|
||||
;;
|
||||
index)
|
||||
|
|
@ -175,7 +159,7 @@ param_to_indexes() {
|
|||
fi
|
||||
|
||||
for i in ${!bls_file[@]}; do
|
||||
if [[ $param = "${bls_linux[$i]}" || "/${param##*/}" = "${bls_linux[$i]}" ]]; then
|
||||
if [[ $param = "${bls_linux[$i]}" ]]; then
|
||||
indexes="$indexes $i"
|
||||
fi
|
||||
|
||||
|
|
@ -196,89 +180,15 @@ param_to_indexes() {
|
|||
echo -n "-1"
|
||||
}
|
||||
|
||||
get_prefix() {
|
||||
if [[ $bootloader = grub2 ]] && mountpoint -q /boot; then
|
||||
echo "/boot"
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
expand_var() {
|
||||
local var=$1
|
||||
|
||||
if [[ $bootloader == "grub2" ]]; then
|
||||
local value="$(grub2-editenv "${env}" list | grep ${var##$} | sed -e "s/${var##$}=//")"
|
||||
value="$(echo ${value} | sed -e 's/\//\\\//g')"
|
||||
if [[ -n $value ]]; then
|
||||
var="$value"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo $var
|
||||
}
|
||||
|
||||
has_kernelopts()
|
||||
{
|
||||
local args=${bls_options[$1]}
|
||||
local opts=(${args})
|
||||
|
||||
for opt in ${opts[*]}; do
|
||||
[[ $opt = "\$kernelopts" ]] && echo "true"
|
||||
done
|
||||
|
||||
echo "false"
|
||||
}
|
||||
|
||||
get_bls_args() {
|
||||
local args=${bls_options[$1]}
|
||||
local opts=(${args})
|
||||
|
||||
for opt in ${opts[*]}; do
|
||||
if [[ $opt = "\$kernelopts" ]]; then
|
||||
value="$(expand_var $opt)"
|
||||
args="$(echo ${args} | sed -e "s/${opt}/${value}/")"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ${args}
|
||||
}
|
||||
|
||||
display_info_values() {
|
||||
local indexes=($(param_to_indexes "$1"))
|
||||
local prefix=$(get_prefix)
|
||||
|
||||
if [[ $indexes = "-1" ]]; then
|
||||
print_error "The param $1 is incorrect"
|
||||
fi
|
||||
|
||||
for i in ${indexes[*]}; do
|
||||
local root=""
|
||||
local value=""
|
||||
local args="$(get_bls_args "$i")"
|
||||
|
||||
local opts=(${args})
|
||||
|
||||
for opt in ${opts[*]}; do
|
||||
if echo $opt | grep -q "^root="; then
|
||||
root="$(echo $opt | sed -e 's/root=//')"
|
||||
value="$(echo ${opt} | sed -e 's/\//\\\//g')"
|
||||
args="$(echo ${args} | sed -e "s/${value}[ \t]*//")"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
echo "index=$i"
|
||||
echo "kernel=\"${prefix}${bls_linux[$i]}\""
|
||||
echo "args=\"${args}\""
|
||||
|
||||
if [[ -n $root ]]; then
|
||||
echo "root=\"${root}\""
|
||||
fi
|
||||
|
||||
echo "initrd=\"${prefix}${bls_initrd[$i]}\""
|
||||
echo "title=\"${bls_title[$i]}\""
|
||||
echo "id=\"${bls_id[$i]}\""
|
||||
echo "kernel=${bls_linux[$i]}"
|
||||
echo "args=\"${bls_options[$i]}\""
|
||||
echo "initrd=${bls_initrd[$i]}"
|
||||
echo "title=${bls_title[$i]}"
|
||||
done
|
||||
exit 0
|
||||
}
|
||||
|
|
@ -290,11 +200,6 @@ mkbls() {
|
|||
|
||||
local debugname=""
|
||||
local flavor=""
|
||||
local prefix=""
|
||||
|
||||
if [[ $(get_prefix) = "" ]]; then
|
||||
prefix="/boot"
|
||||
fi
|
||||
|
||||
if [[ $kernelver == *\+* ]] ; then
|
||||
local flavor=-"${kernelver##*+}"
|
||||
|
|
@ -308,7 +213,7 @@ mkbls() {
|
|||
title ${NAME} (${kernelver}) ${VERSION}${debugname}
|
||||
version ${kernelver}${debugid}
|
||||
linux ${kernel}
|
||||
initrd ${prefix}/initramfs-${kernelver}.img
|
||||
initrd /initramfs-${kernelver}.img
|
||||
options \$kernelopts
|
||||
id ${ID}-${datetime}-${kernelver}${debugid}
|
||||
grub_users \$grub_users
|
||||
|
|
@ -317,65 +222,18 @@ grub_class kernel${flavor}
|
|||
EOF
|
||||
}
|
||||
|
||||
unset_default_bls()
|
||||
{
|
||||
if [[ $bootloader = grub2 ]]; then
|
||||
grub2-editenv "${env}" unset saved_entry
|
||||
else
|
||||
sed -i -e "/^default=.*/d" "${zipl_config}"
|
||||
fi
|
||||
}
|
||||
|
||||
remove_bls_fragment() {
|
||||
local indexes=($(param_to_indexes "$1"))
|
||||
|
||||
if [[ $indexes = "-1" ]]; then
|
||||
print_error "The param $(get_prefix)$1 is incorrect"
|
||||
print_error "The param $1 is incorrect"
|
||||
fi
|
||||
|
||||
for i in "${indexes[@]}"; do
|
||||
if [[ $default_index = $i ]]; then
|
||||
unset_default_bls
|
||||
fi
|
||||
for i in ${indexes[*]}; do
|
||||
rm -f "${bls_file[$i]}"
|
||||
done
|
||||
|
||||
get_bls_values
|
||||
|
||||
update_grubcfg
|
||||
}
|
||||
|
||||
get_custom_bls_filename() {
|
||||
local kernelver=$1
|
||||
local bls_target="${blsdir}/${MACHINE_ID}-${kernelver}.conf"
|
||||
count=0
|
||||
local -a files
|
||||
local IFS=$'\n'
|
||||
|
||||
prefix="${bls_target%%.conf}"
|
||||
prefix="${bls_target%%${arch}}"
|
||||
prefix="${prefix%.*}"
|
||||
|
||||
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 "$first_gap" ]]; then
|
||||
first_gap="0"
|
||||
fi
|
||||
|
||||
echo "${bls_target}" | sed -e "s!${prefix}!${prefix}.${first_gap}~custom!"
|
||||
}
|
||||
|
||||
add_bls_fragment() {
|
||||
|
|
@ -387,12 +245,11 @@ add_bls_fragment() {
|
|||
|
||||
if [[ $kernel = *"vmlinuz-"* ]]; then
|
||||
kernelver="${kernel##*/vmlinuz-}"
|
||||
prefix="vmlinuz-"
|
||||
else
|
||||
kernelver="${kernel##*/}"
|
||||
fi
|
||||
|
||||
if [[ ! -f "/boot/${prefix}${kernelver}" ]] &&
|
||||
if [[ ! -d "/lib/modules/${kernelver}" || ! -f "/boot/vmlinuz-${kernelver}" ]] &&
|
||||
[[ $bad_image != "true" ]]; then
|
||||
print_error "The ${kernelver} kernel isn't installed in the machine"
|
||||
fi
|
||||
|
|
@ -406,19 +263,17 @@ add_bls_fragment() {
|
|||
fi
|
||||
|
||||
bls_target="${blsdir}/${MACHINE_ID}-${kernelver}.conf"
|
||||
|
||||
if [[ -e ${bls_target} ]]; then
|
||||
bls_target="$(get_custom_bls_filename "${kernelver}")"
|
||||
print_info "An entry for kernel ${kernelver} already exists, adding ${bls_target}"
|
||||
fi
|
||||
|
||||
kernel_dir="/lib/modules/${kernelver}"
|
||||
if [[ -d $kernel_dir ]]; then
|
||||
datetime="$(date -u +%Y%m%d%H%M%S -d "$(stat -c '%y' "${kernel_dir}")")"
|
||||
if [[ -f "${kernel_dir}/bls.conf" ]]; then
|
||||
cp -aT "${kernel_dir}/bls.conf" "${bls_target}" || exit $?
|
||||
else
|
||||
datetime=0
|
||||
if [[ -d $kernel_dir ]]; then
|
||||
datetime="$(date -u +%Y%m%d%H%M%S -d "$(stat -c '%y' "${kernel_dir}")")"
|
||||
else
|
||||
datetime=0
|
||||
fi
|
||||
mkbls "${kernel}" "${kernelver}" "${datetime}" > "${bls_target}"
|
||||
fi
|
||||
mkbls "${kernel}" "${kernelver}" "${datetime}" > "${bls_target}"
|
||||
|
||||
if [[ -n $title ]]; then
|
||||
set_bls_value "${bls_target}" "title" "${title}"
|
||||
|
|
@ -433,16 +288,17 @@ add_bls_fragment() {
|
|||
fi
|
||||
|
||||
if [[ -n $extra_initrd ]]; then
|
||||
append_bls_value "${bls_target}" "initrd" " ${extra_initrd}"
|
||||
append_bls_value "${bls_target}" "initrd" "${extra_initrd}"
|
||||
fi
|
||||
|
||||
if [[ $MAKEDEBUG = "yes" ]]; then
|
||||
bls_debug="$(echo ${bls_target} | sed -e "s/${kernelver}/${kernelver}~debug/")"
|
||||
arch="$(uname -m)"
|
||||
bls_debug="$(echo ${bls_target} | sed -e "s/\.${arch}/-debug.${arch}/")"
|
||||
cp -aT "${bls_target}" "${bls_debug}"
|
||||
append_bls_value "${bls_debug}" "title" "${LINUX_DEBUG_TITLE_POSTFIX}"
|
||||
append_bls_value "${bls_debug}" "version" "${LINUX_DEBUG_VERSION_POSTFIX}"
|
||||
append_bls_value "${bls_debug}" "options" "${CMDLINE_LINUX_DEBUG}"
|
||||
blsid="$(get_bls_value ${bls_debug} "id" | sed -e "s/${kernelver}/${kernelver}~debug/")"
|
||||
blsid="$(get_bls_value ${bls_debug} "id" | sed -e "s/\.${arch}/-debug.${arch}/")"
|
||||
set_bls_value "${bls_debug}" "id" "${blsid}"
|
||||
fi
|
||||
|
||||
|
|
@ -452,8 +308,6 @@ add_bls_fragment() {
|
|||
set_default_bls "TITLE=${title}"
|
||||
fi
|
||||
|
||||
update_grubcfg
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
|
@ -463,103 +317,55 @@ update_args() {
|
|||
local add_args=($1) && shift
|
||||
|
||||
for arg in ${remove_args[*]}; do
|
||||
arg="$(echo $arg | sed -e 's/\//\\\//g')"
|
||||
args="$(echo $args | sed -e "s,$arg[^ ]*,,")"
|
||||
done
|
||||
|
||||
for arg in ${add_args[*]}; do
|
||||
if [[ $arg = *"="* ]]; then
|
||||
args="$(echo $args | sed -E "s/(^|[[:space:]])$arg([[:space:]]|$)/ /")"
|
||||
value=${arg##*=}
|
||||
key=${arg%%=$value}
|
||||
exist=$(echo $args | grep "${key}=")
|
||||
if [[ -n $exist ]]; then
|
||||
args="$(echo $args | sed -e "s,$key=[^ ]*,$key=$value,")"
|
||||
else
|
||||
args="$args $key=$value"
|
||||
fi
|
||||
else
|
||||
args="$(echo $args | sed -E "s/(^|[[:space:]])$arg(([[:space:]]|$)|([=][^ ]*([$]*)))/ /g")"
|
||||
exist=$(echo $args | grep $arg)
|
||||
if ! [[ -n $exist ]]; then
|
||||
args="$args $arg"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
for arg in ${add_args[*]}; do
|
||||
arg="${arg%%=*}"
|
||||
arg="$(echo $arg | sed -e 's/\//\\\//g')"
|
||||
args="$(echo $args | sed -E "s/(^|[[:space:]])$arg(([[:space:]]|$)|([=][^ ]*([$]*)))/ /g")"
|
||||
done
|
||||
|
||||
for arg in ${add_args[*]}; do
|
||||
args="$args $arg"
|
||||
done
|
||||
|
||||
echo ${args}
|
||||
}
|
||||
|
||||
update_bls_fragment() {
|
||||
local param="$1"
|
||||
local indexes=($(param_to_indexes "$1")) && shift
|
||||
local remove_args=$1 && shift
|
||||
local add_args=$1 && shift
|
||||
local initrd=$1 && shift
|
||||
local opts
|
||||
|
||||
if [[ $indexes = "-1" ]]; then
|
||||
print_error "The param $(get_prefix)${param} is incorrect"
|
||||
fi
|
||||
|
||||
if [[ $param = "ALL" && $bootloader = grub2 ]] && [[ -n $remove_args || -n $add_args ]]; then
|
||||
local old_args=""
|
||||
|
||||
if [[ -z $no_etc_update ]] && [[ -e ${grub_etc_default} ]]; then
|
||||
old_args="$(source ${grub_etc_default}; echo ${GRUB_CMDLINE_LINUX})"
|
||||
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}"
|
||||
fi
|
||||
fi
|
||||
|
||||
old_args="$(grub2-editenv "${env}" list | grep kernelopts | sed -e "s/kernelopts=//")"
|
||||
if [[ -n $old_args ]]; then
|
||||
opts="$(update_args "${old_args}" "${remove_args}" "${add_args}")"
|
||||
grub2-editenv "${env}" set kernelopts="${opts}"
|
||||
fi
|
||||
elif [[ $bootloader = grub2 ]]; then
|
||||
opts="$(grub2-editenv "${env}" list | grep kernelopts | sed -e "s/kernelopts=//")"
|
||||
fi
|
||||
|
||||
for i in ${indexes[*]}; do
|
||||
if [[ -n $remove_args || -n $add_args ]]; then
|
||||
local old_args="$(get_bls_args "$i")"
|
||||
local new_args="$(update_args "${old_args}" "${remove_args}" "${add_args}")"
|
||||
|
||||
if [[ $param != "ALL" || "$(has_kernelopts "$i")" = "false" ]]; then
|
||||
set_bls_value "${bls_file[$i]}" "options" "${new_args}"
|
||||
fi
|
||||
local new_args="$(update_args "${bls_options[$i]}" "${remove_args}" "${add_args}")"
|
||||
set_bls_value "${bls_file[$i]}" "options" "${new_args}"
|
||||
fi
|
||||
|
||||
if [[ -n $initrd ]]; then
|
||||
set_bls_value "${bls_file[$i]}" "initrd" "${initrd}"
|
||||
fi
|
||||
done
|
||||
|
||||
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
|
||||
# close to the current almost-correct behavior of falling back to
|
||||
# /proc/cmdline anyhow.
|
||||
echo "$(get_bls_args -1)" > /etc/kernel/cmdline
|
||||
fi
|
||||
|
||||
read old_args < /etc/kernel/cmdline
|
||||
local new_args="$(update_args "${old_args}" "${remove_args}" "${add_args}")"
|
||||
echo "$new_args" > /etc/kernel/cmdline
|
||||
fi
|
||||
|
||||
update_grubcfg
|
||||
}
|
||||
|
||||
set_default_bls() {
|
||||
local index=($(param_to_indexes "$1"))
|
||||
|
||||
if [[ $index = "-1" ]]; then
|
||||
print_error "The param $1 is incorrect"
|
||||
fi
|
||||
|
||||
if [[ $bootloader = grub2 ]]; then
|
||||
grub2-editenv "${env}" set saved_entry="${bls_id[$index]}"
|
||||
grub2-editenv "${env}" set saved_entry="${bls_title[$index]}"
|
||||
else
|
||||
local default="${bls_title[$index]}"
|
||||
local default="${bls_version[$index]}"
|
||||
local current="$(grep '^default=' ${zipl_config} | sed -e 's/^default=//')"
|
||||
if [[ -n $current ]]; then
|
||||
sed -i -e "s,^default=.*,default=${default}," "${zipl_config}"
|
||||
|
|
@ -567,61 +373,27 @@ 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]}"
|
||||
}
|
||||
|
||||
remove_var_prefix() {
|
||||
local prefix="$1"
|
||||
|
||||
[ -z "${prefix}" ] && return
|
||||
|
||||
if [[ -n $remove_kernel && $remove_kernel =~ ^/ ]]; then
|
||||
remove_kernel="/${remove_kernel##${prefix}/}"
|
||||
remove_kernel="/${remove_kernel##*/}"
|
||||
fi
|
||||
|
||||
if [[ -n $initrd ]]; then
|
||||
initrd="/${initrd##${prefix}/}"
|
||||
initrd="/${initrd##*/}"
|
||||
fi
|
||||
|
||||
if [[ -n $extra_initrd ]]; then
|
||||
extra_initrd="/${extra_initrd##${prefix}/}"
|
||||
extra_initrd=" /${extra_initrd##*/}"
|
||||
fi
|
||||
|
||||
if [[ -n $kernel ]]; then
|
||||
kernel="/${kernel##${prefix}/}"
|
||||
kernel="/${kernel##*/}"
|
||||
fi
|
||||
|
||||
if [[ -n $update_kernel && $update_kernel =~ ^/ ]]; then
|
||||
update_kernel="/${update_kernel##${prefix}/}"
|
||||
fi
|
||||
}
|
||||
|
||||
update_grubcfg()
|
||||
{
|
||||
# Turn on RUN_MKCONFIG on different archs/scenarios
|
||||
if [[ "${arch}" = 's390' ]] || [[ "${arch}" = 's390x' ]]; then
|
||||
# On s390/s390x systems, run mkconfig/zipl
|
||||
RUN_MKCONFIG="true"
|
||||
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
|
||||
|
||||
if [[ $RUN_MKCONFIG = "true" ]]; then
|
||||
if [[ $bootloader = "zipl" ]]; then
|
||||
zipl
|
||||
else
|
||||
grub2-mkconfig --no-grubenv-update -o "${grub_config}" &> /dev/null
|
||||
fi
|
||||
update_kernel="/${update_kernel##*/}"
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
@ -630,7 +402,7 @@ print_usage()
|
|||
cat <<EOF
|
||||
Usage: grubby [OPTION...]
|
||||
--add-kernel=kernel-path add an entry for the specified kernel
|
||||
--args=args default arguments for the new kernel or new arguments for kernel being updated
|
||||
--args=args default arguments for the new kernel or new arguments for kernel being updated)
|
||||
--bad-image-okay don't sanity check images in boot entries (for testing only)
|
||||
-c, --config-file=path path to grub config file to update ("-" for stdin)
|
||||
--copy-default use the default boot entry as a template for the new entry being added; if the default is not a linux image, or if the kernel referenced by the default image does not exist, the
|
||||
|
|
@ -644,6 +416,7 @@ Usage: grubby [OPTION...]
|
|||
--initrd=initrd-path initrd image for the new kernel
|
||||
-i, --extra-initrd=initrd-path auxiliary initrd image for things other than the new kernel
|
||||
--make-default make the newly added entry the default boot entry
|
||||
-o, --output-file=path path to output updated config file ("-" for stdout)
|
||||
--remove-args=STRING remove kernel arguments
|
||||
--remove-kernel=kernel-path remove all entries for the specified kernel
|
||||
--set-default=kernel-path make the first entry referencing the specified kernel the default
|
||||
|
|
@ -652,19 +425,18 @@ Usage: grubby [OPTION...]
|
|||
--update-kernel=kernel-path updated information for the specified kernel
|
||||
--zipl configure zipl bootloader
|
||||
-b, --bls-directory path to directory containing the BootLoaderSpec fragment files
|
||||
--no-etc-grub-update don't update the GRUB_CMDLINE_LINUX variable in /etc/default/grub
|
||||
|
||||
Help options:
|
||||
-h, --help Show this help message
|
||||
-?, --help Show this help message
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
OPTS="$(getopt -o hc:i:b:? --long help,add-kernel:,args:,bad-image-okay,\
|
||||
OPTS="$(getopt -o c:i:o:b:? --long help,add-kernel:,args:,bad-image-okay,\
|
||||
config-file:,copy-default,default-kernel,default-index,default-title,env:,\
|
||||
grub2,info:,initrd:,extra-initrd:,make-default,remove-args:,\
|
||||
grub2,info:,initrd:,extra-initrd:,make-default,output-file:,remove-args:,\
|
||||
remove-kernel:,set-default:,set-default-index:,title:,update-kernel:,zipl,\
|
||||
bls-directory:,no-etc-grub-update,add-multiboot:,mbargs:,mounts:,boot-filesystem:,\
|
||||
bls-directory:,add-kernel:,add-multiboot:,mbargs:,mounts:,boot-filesystem:,\
|
||||
bootloader-probe,debug,devtree,devtreedir:,elilo,efi,extlinux,grub,lilo,\
|
||||
output-file:,remove-mbargs:,remove-multiboot:,silo,yaboot -n ${SCRIPTNAME} -- "$@")"
|
||||
|
||||
|
|
@ -690,7 +462,6 @@ while [ ${#} -gt 0 ]; do
|
|||
bad_image=true
|
||||
;;
|
||||
--config-file|-c)
|
||||
grub_config="${2}"
|
||||
zipl_config="${2}"
|
||||
shift
|
||||
;;
|
||||
|
|
@ -722,12 +493,16 @@ while [ ${#} -gt 0 ]; do
|
|||
shift
|
||||
;;
|
||||
--extra-initrd|-i)
|
||||
extra_initrd="${2}"
|
||||
extra_initrd=" /${2}"
|
||||
shift
|
||||
;;
|
||||
--make-default)
|
||||
make_default=true
|
||||
;;
|
||||
--output-file|-o)
|
||||
output_file="${2}"
|
||||
shift
|
||||
;;
|
||||
--remove-args)
|
||||
remove_args="${2}"
|
||||
shift
|
||||
|
|
@ -759,11 +534,7 @@ while [ ${#} -gt 0 ]; do
|
|||
blsdir="${2}"
|
||||
shift
|
||||
;;
|
||||
--no-etc-grub-update)
|
||||
no_etc_update=true
|
||||
shift
|
||||
;;
|
||||
--add-multiboot|--mbargs|--mounts|--boot-filesystem|\
|
||||
--add-kernel|--add-multiboot|--mbargs|--mounts|--boot-filesystem|\
|
||||
--bootloader-probe|--debug|--devtree|--devtreedir|--elilo|--efi|\
|
||||
--extlinux|--grub|--lilo|--output-file|--remove-mbargs|--silo|\
|
||||
--remove-multiboot|--slilo|--yaboot)
|
||||
|
|
@ -788,10 +559,6 @@ while [ ${#} -gt 0 ]; do
|
|||
shift
|
||||
done
|
||||
|
||||
if [[ -z $update_kernel && -z $kernel ]] && [[ -n $args || -n $remove_args ]]; then
|
||||
print_error "no action specified"
|
||||
fi
|
||||
|
||||
if [[ -z $blsdir ]]; then
|
||||
blsdir="/boot/loader/entries"
|
||||
fi
|
||||
|
|
@ -804,14 +571,6 @@ if [[ -z $zipl_config ]]; then
|
|||
zipl_config="/etc/zipl.conf"
|
||||
fi
|
||||
|
||||
if [[ -z $grub_config ]]; then
|
||||
grub_config="/boot/grub2/grub.cfg"
|
||||
fi
|
||||
|
||||
if [[ -z $grub_etc_default ]]; then
|
||||
grub_etc_default="/etc/default/grub"
|
||||
fi
|
||||
|
||||
get_bls_values
|
||||
|
||||
default_index="$(get_default_index)"
|
||||
|
|
@ -824,7 +583,9 @@ if [[ -n $display_info ]]; then
|
|||
display_info_values "${display_info}"
|
||||
fi
|
||||
|
||||
remove_var_prefix "$(get_prefix)"
|
||||
if [[ $bootloader = grub2 ]]; then
|
||||
remove_var_prefix
|
||||
fi
|
||||
|
||||
if [[ -n $kernel ]]; then
|
||||
if [[ $copy_default = "true" ]]; then
|
||||
|
|
@ -833,9 +594,7 @@ if [[ -n $kernel ]]; then
|
|||
opts="${opts} ${args}"
|
||||
fi
|
||||
else
|
||||
opts="${opts} ${args}"
|
||||
remove_args="$kernelopts"
|
||||
update_args "${opts}" "${remove_args}" ""
|
||||
opts="${args}"
|
||||
fi
|
||||
|
||||
add_bls_fragment "${kernel}" "${title}" "${opts}" "${initrd}" \
|
||||
|
|
|
|||
177
grubby.8
177
grubby.8
|
|
@ -1,177 +0,0 @@
|
|||
.TH GRUBBY 8 "Wed Apr 29 2020"
|
||||
.SH NAME
|
||||
grubby \- command line tool for configuring grub and zipl
|
||||
|
||||
.SH SYNOPSIS
|
||||
\fBgrubby\fR [--add-kernel=\fIkernel-path\fR] [--args=\fIargs\fR]
|
||||
[--bad-image-okay] [--config-file=\fIpath\fR] [--copy-default]
|
||||
[--default-kernel] [--default-index] [--default-title]
|
||||
[--env=\fIpath\fR] [--grub2] [--info=\fIkernel-path\fR]
|
||||
[--initrd=\fIinitrd-path\fR] [--extra-initrd=\fIinitrd-path\fR]
|
||||
[--make-default] [--remove-args=\fIargs\fR]
|
||||
[--remove-kernel=\fIkernel-path\fR] [--set-default=\fIkernel-path\fR]
|
||||
[--set-default-index=\fientry-index\fR] [--title=\fentry-title\fR]
|
||||
[--update-kernel=\fIkernel-path\fR] [--zipl] [--bls-directory=\fIpath\fR]
|
||||
|
||||
.SH DESCRIPTION
|
||||
\fBgrubby\fR is a command line tool for updating and displaying information
|
||||
about the configuration files for the \fBgrub2\fR and \fBzipl\fR boot loaders.
|
||||
It is primarily designed to be used from scripts which install new kernels and
|
||||
need to find information about the current boot environment.
|
||||
|
||||
On BIOS-based Intel x86, PowerPC and UEFI-based platforms, \fBgrub2\fR is the
|
||||
default bootloader and the configuration file is in \fB/boot/grub2/grub.cfg\fR.
|
||||
On s390x platforms, the \fBzipl\fR bootloader use a default configuration in
|
||||
\fB/etc/zipl.conf\fR.
|
||||
|
||||
All bootloaders define the boot entries as individual configuration fragments
|
||||
that are stored by default in \fB/boot/loader/entries\fR. The format for the
|
||||
config files is specified at \fBhttps://systemd.io/BOOT_LOADER_SPECIFICATION\fR.
|
||||
The \fBgrubby\fR tool is used to update and display the configuration defined
|
||||
in the BootLoaderSpec fragment files.
|
||||
|
||||
There are a number of ways to specify the kernel used for \fB-\-info\fR,
|
||||
\fB-\-remove-kernel\fR, and \fB-\-update-kernel\fR. Specificying \fBDEFAULT\fR
|
||||
or \fBALL\fR selects the default entry and all of the entries, respectively.
|
||||
Also, the title of a boot entry may be specified by using \fBTITLE=\fItitle\fR
|
||||
as the argument; all entries with that title are used.
|
||||
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB-\-add-kernel\fR=\fIkernel-path\fR
|
||||
Add a new boot entry for the kernel located at \fIkernel-path\fR.
|
||||
|
||||
.TP
|
||||
\fB-\-args\fR=\fIkernel-args\fR
|
||||
When a new kernel is added, this specifies the command line arguments
|
||||
which should be passed to the kernel by default (note they are merged
|
||||
with the arguments of the default entry if \fB-\-copy-default\fR is used).
|
||||
When \fB-\-update-kernel\fR is used, this specifies new arguments to add
|
||||
to the argument list. Multiple, space separated arguments may be used. If
|
||||
an argument already exists the new value replaces the old values. The
|
||||
\fBroot=\fR kernel argument gets special handling if the configuration
|
||||
file has special handling for specifying the root filesystem.
|
||||
|
||||
.TP
|
||||
\fB-\-bad-image-okay\fR
|
||||
When \fBgrubby\fR is looking for an entry to use for something (such
|
||||
as a default boot entry) it uses sanity checks, such as ensuring that
|
||||
the kernel exists in the filesystem, to make sure entries that obviously
|
||||
won't work aren't selected. This option overrides that behavior, and is
|
||||
designed primarily for testing.
|
||||
|
||||
.TP
|
||||
\fB-\-config-file\fR=\fIpath\fR
|
||||
Use \fIpath\fR as the configuration file rather then the default.
|
||||
|
||||
.TP
|
||||
\fB-\-copy-default\fR
|
||||
\fBgrubby\fR will copy as much information (such as kernel arguments and
|
||||
root device) as possible from the current default kernel. The kernel path
|
||||
and initrd path will never be copied.
|
||||
|
||||
.TP
|
||||
\fB-\-default-kernel\fR
|
||||
Display the full path to the current default kernel and exit.
|
||||
|
||||
.TP
|
||||
\fB-\-default-index\fR
|
||||
Display the numeric index of the current default boot entry and exit.
|
||||
|
||||
.TP
|
||||
\fB-\-default-title\fR
|
||||
Display the title of the current default boot entry and exit.
|
||||
|
||||
.TP
|
||||
\fB-\-env\fR=\fIpath\fR
|
||||
Use \fIpath\fR as the grub2 environment block file rather then the default path.
|
||||
|
||||
.TP
|
||||
\fB-\-grub2\fR
|
||||
Configure \fBgrub2\fR bootloader.
|
||||
|
||||
.TP
|
||||
\fB-\-info\fR=\fIkernel-path\fR
|
||||
Display information on all boot entries which match \fIkernel-path\fR. If
|
||||
\fIkernel-path\fR is \fBDEFAULT\fR, then information on the default kernel
|
||||
is displayed. If \fIkernel-path\fR is \fBALL\fR, then information on all boot
|
||||
entries are displayed.
|
||||
|
||||
.TP
|
||||
\fB-\-initrd\fR=\fIinitrd-path\fR
|
||||
Use \fIinitrd-path\fR as the path to an initial ram disk for a new kernel
|
||||
being added.
|
||||
|
||||
.TP
|
||||
\fB-\-extrainitrd\fR=\fIinitrd-path\fR
|
||||
Use \fIinitrd-path\fR as the path to an auxiliary init ram disk image to be
|
||||
added to the boot entry.
|
||||
|
||||
.TP
|
||||
\fB-\-make-default\fR
|
||||
Make the new kernel entry being added the default entry.
|
||||
|
||||
.TP
|
||||
\fB-\-remove-args\fR=\fIkernel-args\fR
|
||||
The arguments specified by \fIkernel-args\fR are removed from the kernels
|
||||
specified by \fB-\-update-kernel\fR. The \fBroot\fR argument gets special
|
||||
handling for configuration files that support separate root filesystem
|
||||
configuration.
|
||||
|
||||
.TP
|
||||
\fB-\-remove-kernel\fR=\fIkernel-path\fR
|
||||
Removes all boot entries which match \fIkernel-path\fR. This may be used
|
||||
along with -\-add-kernel, in which case the new kernel being added will
|
||||
never be removed.
|
||||
|
||||
.TP
|
||||
\fB-\-set-default\fR=\fIkernel-path\fR
|
||||
The first entry which boots the specified kernel is made the default
|
||||
boot entry.
|
||||
|
||||
.TP
|
||||
\fB-\-set-default-index\fR=\fIentry-index\fR
|
||||
Makes the given entry number the default boot entry.
|
||||
|
||||
.TP
|
||||
\fB-\-title\fR=\fIentry-title\fR
|
||||
When a new kernel entry is added \fIentry-title\fR is used as the title
|
||||
for the entry.
|
||||
|
||||
.TP
|
||||
\fB-\-update-kernel\fR=\fIkernel-path\fR
|
||||
The entries for kernels matching \fRkernel-path\fR are updated. Currently
|
||||
the only items that can be updated is the kernel argument list, which is
|
||||
modified via the \fB-\-args\fR and \fB-\-remove-args\fR options. If the
|
||||
\fBALL\fR argument is used the variable \fB GRUB_CMDLINE_LINUX\fR in
|
||||
\fB/etc/default/grub\fR is updated with the latest kernel argument list,
|
||||
unless the \fB-\-no-etc-grub-update\fR option is used or the file does not
|
||||
exist (e.g., on s390x).
|
||||
|
||||
.TP
|
||||
\fB-\-zipl\fR
|
||||
Configure \fBzipl\fR bootloader.
|
||||
|
||||
.TP
|
||||
\fB-\-bls-directory\fR=\fIpath\fR
|
||||
Use \fIpath\fR as the directory for the BootLoaderSpec config files rather
|
||||
than the default \fB/boot/loader/entries\fR.
|
||||
|
||||
.TP
|
||||
\fB-\-no-etc-grub-update\fR
|
||||
Makes grubby to not update the \fBGRUB_CMDLINE_LINUX\fR variable in
|
||||
\fB/etc/default/grub\fR when the \fB-\-update-kernel\fR option is
|
||||
used with the \fBALL\fR argument.
|
||||
|
||||
.SH "SEE ALSO"
|
||||
.BR zipl (8),
|
||||
.BR mkinitrd (8),
|
||||
.BR kernel-install (8)
|
||||
|
||||
.SH AUTHORS
|
||||
.nf
|
||||
Erik Troan
|
||||
Jeremy Katz
|
||||
Peter Jones
|
||||
Javier Martinez
|
||||
.fi
|
||||
8
grubby.in
Normal file
8
grubby.in
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
if [[ -x @@LIBEXECDIR@@/grubby-bls ]] ; then
|
||||
exec @@LIBEXECDIR@@/grubby-bls "${@}"
|
||||
elif [[ -x @@LIBEXECDIR@@/grubby ]] ; then
|
||||
exec @@LIBEXECDIR@@/grubby "${@}"
|
||||
fi
|
||||
echo "Grubby is not installed correctly." >>/dev/stderr
|
||||
exit 1
|
||||
455
grubby.spec
455
grubby.spec
|
|
@ -1,393 +1,120 @@
|
|||
# What? No.
|
||||
%define __brp_mangle_shebangs %{nil}
|
||||
|
||||
Name: grubby
|
||||
Version: 8.40
|
||||
Release: 86%{?dist}
|
||||
Release: 16%{?dist}
|
||||
Summary: Command line tool for updating bootloader configs
|
||||
License: GPL-2.0-or-later
|
||||
License: GPLv2+
|
||||
URL: https://github.com/rhinstaller/grubby
|
||||
# we only pull git snaps at the moment
|
||||
# git clone git@github.com:rhinstaller/grubby.git
|
||||
# git archive --format=tar --prefix=grubby-%%{version}/ HEAD |bzip2 > grubby-%%{version}.tar.bz2
|
||||
# Source0: %%{name}-%%{version}.tar.bz2
|
||||
Source0: https://github.com/rhboot/grubby/archive/%{version}-1.tar.gz
|
||||
Source1: grubby-bls
|
||||
# Source2: rpm-sort.c
|
||||
Source3: COPYING
|
||||
Source5: 95-kernel-hooks.install
|
||||
Source6: 10-devicetree.install
|
||||
Source7: grubby.8
|
||||
Source8: kernel.sysconfig
|
||||
Source2: grubby.in
|
||||
Source3: installkernel.in
|
||||
Patch1: drop-uboot-uImage-creation.patch
|
||||
Patch2: 0001-Change-return-type-in-getRootSpecifier.patch
|
||||
Patch3: 0002-Add-btrfs-subvolume-support-for-grub2.patch
|
||||
Patch4: 0003-Add-tests-for-btrfs-support.patch
|
||||
Patch5: 0004-Honor-sbindir.patch
|
||||
Patch6: 0005-installkernel-use-kernel-install.patch
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: glib2-devel
|
||||
BuildRequires: libblkid-devel
|
||||
BuildRequires: make
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: popt-devel
|
||||
BuildRequires: rpm-devel
|
||||
BuildRequires: sed
|
||||
%ifarch aarch64 x86_64 %{power64} riscv64
|
||||
BuildRequires: pkgconfig glib2-devel popt-devel
|
||||
BuildRequires: libblkid-devel git-core sed gcc make
|
||||
# for make test / getopt:
|
||||
BuildRequires: util-linux-ng
|
||||
%ifarch aarch64 i686 x86_64 %{power64}
|
||||
BuildRequires: grub2-tools-minimal
|
||||
Requires: grub2-tools-minimal
|
||||
Requires: grub2-tools
|
||||
%endif
|
||||
%ifarch s390 s390x
|
||||
Requires: s390utils-core
|
||||
Requires: s390utils-base
|
||||
%endif
|
||||
Requires: findutils
|
||||
Requires: util-linux
|
||||
|
||||
ExcludeArch: %{ix86}
|
||||
Conflicts: uboot-tools < 2021.01-0.1.rc2
|
||||
Obsoletes: %{name}-bls < %{version}-%{release}
|
||||
Obsoletes: %{name}-deprecated < %{version}-%{release}
|
||||
|
||||
%description
|
||||
This package provides a grubby compatibility script that manages
|
||||
BootLoaderSpec files and is meant to be backward compatible with
|
||||
the previous grubby tool.
|
||||
grubby is a command line tool for updating and displaying information about
|
||||
the configuration files for the grub, lilo, elilo (ia64), yaboot (powerpc)
|
||||
and zipl (s390) boot loaders. It is primarily designed to be used from scripts
|
||||
which install new kernels and need to find information about the current boot
|
||||
environment.
|
||||
|
||||
%global debug_package %{nil}
|
||||
|
||||
%prep
|
||||
# Make sure the license can be found in mock
|
||||
cp %{SOURCE3} . || true
|
||||
%setup -q -n grubby-%{version}-1
|
||||
|
||||
git init
|
||||
git config user.email "noone@example.com"
|
||||
git config user.name "no one"
|
||||
git add .
|
||||
git commit -a -q -m "%{version} baseline"
|
||||
git am %{patches} </dev/null
|
||||
git config --unset user.email
|
||||
git config --unset user.name
|
||||
|
||||
%build
|
||||
%set_build_flags
|
||||
make %{?_smp_mflags}
|
||||
|
||||
%ifnarch aarch64 %{arm}
|
||||
%check
|
||||
make test
|
||||
%endif
|
||||
|
||||
%install
|
||||
mkdir -p %{buildroot}%{_sbindir}/
|
||||
install -T -m 0755 %{SOURCE1} %{buildroot}%{_sbindir}/grubby
|
||||
make install DESTDIR=$RPM_BUILD_ROOT mandir=%{_mandir} sbindir=%{_sbindir}
|
||||
|
||||
install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE5}
|
||||
install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE6}
|
||||
mkdir -p %{buildroot}%{_libexecdir}/{grubby,installkernel}/ %{buildroot}%{_sbindir}/
|
||||
mv -v %{buildroot}%{_sbindir}/grubby %{buildroot}%{_libexecdir}/grubby/grubby
|
||||
mv -v %{buildroot}%{_sbindir}/installkernel %{buildroot}%{_libexecdir}/installkernel/installkernel
|
||||
cp -v %{SOURCE1} %{buildroot}%{_libexecdir}/grubby/
|
||||
sed -e "s,@@LIBEXECDIR@@,%{_libexecdir}/grubby,g" %{SOURCE2} \
|
||||
> %{buildroot}%{_sbindir}/grubby
|
||||
sed -e "s,@@LIBEXECDIR@@,%{_libexecdir}/installkernel,g" %{SOURCE3} \
|
||||
> %{buildroot}%{_sbindir}/installkernel
|
||||
|
||||
mkdir -p %{buildroot}%{_mandir}/man8
|
||||
install -m 0644 %{SOURCE7} %{buildroot}%{_mandir}/man8/
|
||||
%package bls
|
||||
Summary: Command line tool for updating BootLoaderSpec files
|
||||
Conflicts: %{name} <= 8.40-13
|
||||
BuildArch: noarch
|
||||
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
|
||||
install -m 0644 %{SOURCE8} %{buildroot}%{_sysconfdir}/sysconfig/kernel
|
||||
|
||||
%post
|
||||
if [ "$1" = 2 ]; then
|
||||
arch=$(uname -m)
|
||||
[[ $arch == "s390x" ]] && \
|
||||
zipl-switch-to-blscfg --backup-suffix=.rpmsave &>/dev/null || :
|
||||
fi
|
||||
%description bls
|
||||
This package provides a grubby wrapper that manages BootLoaderSpec files and is
|
||||
meant to only be used for legacy compatibility users with existing grubby users.
|
||||
|
||||
%files
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING
|
||||
%dir %{_libexecdir}/grubby
|
||||
%attr(0755,root,root) %{_libexecdir}/grubby/grubby
|
||||
%dir %{_libexecdir}/installkernel
|
||||
%attr(0755,root,root) %{_libexecdir}/installkernel/installkernel
|
||||
%attr(0755,root,root) %{_sbindir}/grubby
|
||||
%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
|
||||
%attr(0755,root,root) %{_sbindir}/installkernel
|
||||
%attr(0755,root,root) %{_sbindir}/new-kernel-pkg
|
||||
%{_mandir}/man8/*.8*
|
||||
|
||||
%files bls
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING
|
||||
%dir %{_libexecdir}/grubby
|
||||
%attr(0755,root,root) %{_libexecdir}/grubby/grubby-bls
|
||||
%attr(0755,root,root) %{_sbindir}/grubby
|
||||
%{_mandir}/man8/*.8*
|
||||
|
||||
%changelog
|
||||
* Wed Dec 10 2025 Simon de Vlieger <cmdr@supakeen.com> - 8.40-86
|
||||
- Own `/etc/sysconfig/kernel` which is used for `grubby` configuration
|
||||
|
||||
* Wed Jul 30 2025 Leo Sandoval <lsandova@redhat.com> - 8.40-85
|
||||
- Update cfg when setting a default kernel
|
||||
|
||||
* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-84
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Thu Mar 20 2025 Leo Sandoval <lsandova@redhat.com> - 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 <releng@fedoraproject.org> - 8.40-82
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Mon Jan 06 2025 Nicolas Frayer <nfrayer@redhat.com> - 8.40-81
|
||||
- Fixups to custom kernel targets
|
||||
|
||||
* Fri Dec 06 2024 Leo Sandoval <lsandova@redhat.com> - 8.40-80
|
||||
- grubby-bls: on PPC systems, remove petiboot's version checks
|
||||
|
||||
* Fri Dec 06 2024 Leo Sandoval <lsandova@redhat.com> - 8.40-79
|
||||
- grubby-bls: in s390* systems, run zipl on grub cfg update event
|
||||
|
||||
* Mon Dec 02 2024 David Abdurachmanov <davidlt@rivosinc.com> - 8.40-78
|
||||
- Add riscv64 support
|
||||
|
||||
* Mon Nov 25 2024 Leo Sandoval <lsandova@redhat.com> - 8.40-77
|
||||
- On grub cfg updates, run grub2-mkconfig for Xen systems
|
||||
|
||||
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-76
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-75
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Sat Jan 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-74
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Wed Jan 10 2024 Marta Lewandowska <mlewando@redhat.com> - 8.40-73
|
||||
- Do not overwrite all vars that start with GRUB_CMDLINE_LINUX
|
||||
|
||||
* Mon Sep 11 2023 Zbigniew Jedrzejewski-Szmek <zbyszek@in.waw.pl> - 8.40-72
|
||||
- Drop installkernel so that it can be provided by systemd
|
||||
|
||||
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-71
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Tue Feb 21 2023 Marta Lewandowska <mlewando@redhat.com> - 8.40-70
|
||||
- remove root= when not copying default
|
||||
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-69
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Tue Nov 01 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-68
|
||||
- Drop custom rpm-sort
|
||||
- See-also: https://github.com/rpm-software-management/rpm/pull/2249
|
||||
|
||||
* Tue Oct 04 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-67
|
||||
- Apply Marta's copy-default args fix
|
||||
|
||||
* Mon Aug 22 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-66
|
||||
- Give up and just pull the config from BLS
|
||||
- Suggested-by: Bojan Smojver <bojan@rexursive.com>
|
||||
|
||||
* Wed Aug 17 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-65
|
||||
- Mark package as obsoleting -deprecated
|
||||
- Resolves: #2117817
|
||||
|
||||
* Tue Aug 02 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-64
|
||||
- Handle updating /etc/kernel/cmdline
|
||||
|
||||
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-63
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Tue Jul 19 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-62
|
||||
- Clarify that grub files aren't used on s390x in man page
|
||||
|
||||
* Wed Jun 22 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-61
|
||||
- Revert previous change
|
||||
|
||||
* Tue May 31 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-60
|
||||
- Additionally write to /etc/kernel/cmdline
|
||||
|
||||
* Wed Apr 27 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-59
|
||||
- Remove upstream and layers of indirection around -bls
|
||||
|
||||
* Thu Mar 10 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-58
|
||||
- Remove grubby-deprecated
|
||||
|
||||
* Mon Feb 07 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-57
|
||||
- grubby-bls: wire up -h (help)
|
||||
|
||||
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-56
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-55
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Wed Jun 23 2021 Javier Martinez Canillas <javierm@redhat.com> - 8.40-54
|
||||
- Clarify package description
|
||||
Resolves: rhbz#1913299
|
||||
- Update man page to not mention the GRUB config in the ESP anymore
|
||||
Resolves: rhbz#1958458
|
||||
|
||||
* Wed Jun 09 2021 Javier Martinez Canillas <javierm@redhat.com> - 8.40-53
|
||||
- grubby-bls: expand only the kernelopts variable
|
||||
|
||||
* Mon Apr 26 2021 Javier Martinez Canillas <javierm@redhat.com> - 8.40-52
|
||||
- grubby-bs: Fix changing kernel cmdline params not working on ppc64le
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-51
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Wed Dec 30 2020 Tom Stellard <tstellar@redhat.com> - 8.40-50
|
||||
- Use make_build macro instead of plain make
|
||||
- https://docs.fedoraproject.org/en-US/packaging-guidelines/#_parallel_make
|
||||
|
||||
* Fri Nov 20 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 8.40-49
|
||||
- Add device tree kernel install option
|
||||
|
||||
* Mon Oct 26 2020 Josh Boyer <jwb@redhat.com> - 8.40-48
|
||||
- Only require s390utils-core, not s390utils-base
|
||||
|
||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-47
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Fri Jun 26 2020 Javier Martinez Canillas <javierm@redhat.com> - 8.40-46
|
||||
- fix build with rpm-4.16
|
||||
- grubby-bls: fix --extra-initrd option not adding the correct path
|
||||
|
||||
* Wed May 13 2020 Javier Martinez Canillas <javierm@redhat.com> - 8.40-45
|
||||
- grubby-bls: don't replace options with kernelopts if values are the same
|
||||
|
||||
* Wed May 06 2020 Javier Martinez Canillas <javierm@redhat.com> - 8.40-44
|
||||
- Fix installed man page file mode bits
|
||||
|
||||
* Tue May 05 2020 Javier Martinez Canillas <javierm@redhat.com> - 8.40-43
|
||||
- grubby-bls: always escape the delimiter character used in sed commands
|
||||
- grubby-bls: add a --no-etc-grub-update option
|
||||
|
||||
* Wed Apr 29 2020 Javier Martinez Canillas <javierm@redhat.com> - 8.40-42
|
||||
- grubby-bls: fix corner case when a kernel param value contains a '='
|
||||
- grubby-bls: update man page to match options in current wrapper script
|
||||
|
||||
* Mon Mar 30 2020 Javier Martinez Canillas <javierm@redhat.com> - 8.40-41
|
||||
- Make grubby to also update GRUB_CMDLINE_LINUX in /etc/default/grub
|
||||
Related: rhbz#1287854
|
||||
|
||||
* Mon Feb 10 2020 Javier Martinez Canillas <javierm@redhat.com> - 8.40-40
|
||||
- Fix FTBFS
|
||||
Resolves: rhbz#1799496
|
||||
- Fix wrong S-o-B tag in patch
|
||||
- Fix warning about using unversioned Obsoletes
|
||||
|
||||
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-39
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Fri Nov 29 2019 Javier Martinez Canillas <javierm@redhat.com> - 8.40-38
|
||||
- grubby-bls: don't update grubenv when generating grub.cfg for ppc64le
|
||||
Related: rhbz#1726514
|
||||
|
||||
* Thu Nov 28 2019 Javier Martinez Canillas <javierm@redhat.com> - 8.40-37
|
||||
- grubby-bls: don't print rpm-sort error messages
|
||||
Resolves: rhbz#1731924
|
||||
- grubby-bls: remove -o option and support -c for ppc64le grub config
|
||||
Resolves: rhbz#1758598
|
||||
- grubby-bls: fix logic to check if the kernelopts var is defined in a BLS
|
||||
Resolves: rhbz#1726514
|
||||
|
||||
* Tue Aug 06 2019 Yuval Turgeman <yturgema@redhat.com> - 8.40-36
|
||||
- grubby-bls: strip only /boot from paths
|
||||
|
||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-35
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Mon Jun 17 2019 Javier Martinez Canillas <javierm@redhat.com> - 8.40-34
|
||||
- Add a kernel-install plugin to execute hook scripts in /etc/kernel/
|
||||
Resolves: rhbz#1696202
|
||||
|
||||
* Mon Jun 10 22:13:19 CET 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 8.40-33
|
||||
- Rebuild for RPM 4.15
|
||||
|
||||
* Mon Jun 10 15:42:02 CET 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 8.40-32
|
||||
- Rebuild for RPM 4.15
|
||||
|
||||
* Fri May 03 2019 Javier Martinez Canillas <javierm@redhat.com> - 8.40-31
|
||||
- Use mountpoint command to check whether /boot is a mount point
|
||||
Resolves: rhbz#1706091
|
||||
|
||||
* Thu Mar 21 2019 Javier Martinez Canillas <javierm@redhat.com> - 8.40-30
|
||||
- grubby-bls: fix --add-kernel not working when using the --args option
|
||||
Resolves: rhbz#1691004
|
||||
|
||||
* Mon Mar 11 2019 Javier Martinez Canillas <javierm@redhat.com> - 8.40-29
|
||||
- Only switch to BLS config for s390x / zipl
|
||||
Related: rhbz#1652806
|
||||
|
||||
* Fri Mar 01 2019 Javier Martinez Canillas <javierm@redhat.com> - 8.40-28
|
||||
- grubby-bls: make --update-kernel ALL to update kernelopts var in grubenv
|
||||
|
||||
* Thu Feb 14 2019 Javier Martinez Canillas <javierm@redhat.com> - 8.40-27
|
||||
- grubby-bls: error if args or remove-args is used without update-kernel
|
||||
|
||||
* Tue Feb 05 2019 Javier Martinez Canillas <javierm@redhat.com> - 8.40-26
|
||||
- Fix GCC warnings about possible string truncations and buffer overflows
|
||||
- grubby-bls: unset default entry if is the one being removed
|
||||
- grubby-bls: show absolute path when printing error about incorrect param
|
||||
|
||||
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-25
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Mon Jan 14 2019 Javier Martinez Canillas <javierm@redhat.com> - 8.40-24
|
||||
- Correctly set LDFLAGS to include hardened flags (pjones)
|
||||
Related: rhbz#1654936
|
||||
- grubby-bls: expand all variables in options field when updating it
|
||||
Resolves: rhbz#1660700
|
||||
|
||||
* Tue Dec 11 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-23
|
||||
- grubby-bls: lookup default entry by either id or title on grub2
|
||||
Related: rhbz#1654936
|
||||
|
||||
* Fri Nov 30 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-22
|
||||
- grubby-bls: also print the absolute path in the --default-kernel option
|
||||
Resolves: rhbz#1649778
|
||||
- grubby-bls: allow to specify the same kernel param multiple times
|
||||
Resolves: rhbz#1652486
|
||||
- grubby-bls: expand kernel options if these are environment variables
|
||||
Resolves: rhbz#1649785
|
||||
- grubby-bls: always generate the BLS snippets when adding new entries
|
||||
Resolves: rhbz#1653365
|
||||
- Improve man page for --info option (jstodola)
|
||||
Resolves: rhbz#1651672
|
||||
- Make the old grubby take precedence over grubby-bls if is installed
|
||||
Related: rhbz#165484
|
||||
|
||||
* Wed Nov 21 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-21
|
||||
- installkernel-bls: remove unnecessary check for GRUB_ENABLE_BLSCFG=true
|
||||
Resolves: rhbz#1647721
|
||||
- grubby-bls: use title field instead of version for zipl default entry
|
||||
Related: rhbz#1645200
|
||||
- grubby-bls: print the absolute kernel and initramfs images paths
|
||||
Resolves: rhbz#1649778
|
||||
- grubby-bls: make info print the root parameter if is present in cmdline
|
||||
Resolves: rhbz#1649791
|
||||
|
||||
* Tue Nov 13 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-20
|
||||
- Switch to a BLS configuration on %%post
|
||||
|
||||
* Tue Nov 06 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-19
|
||||
- Make the temporary config wrapper be what "grubby" contains, and put
|
||||
traditional grubby in grubby-deprecated (pjones)
|
||||
- Re-enable debuginfo generation (pjones)
|
||||
Related: rhbz#1619344
|
||||
- Install installkernel-bls here as well, not just in the grub2 package,
|
||||
since s390x doesn't have grubby packages (pjones)
|
||||
Related: rhbz#1619344
|
||||
- Make grubby-bls execute grub2-mkconfig on ppc64
|
||||
Resolves: rhbz#1636039
|
||||
- grubby-bls should only check if kernel exists and not if was installed
|
||||
Resolves: rhbz#1634740
|
||||
- Use ! instead of , as sed delimiter in grubby-bls script
|
||||
Resolves: rhbz#1634744
|
||||
- Print information about the entry set as default
|
||||
Resolves: rhbz#1636180
|
||||
- grubby-bls: make "id" be the filename, and include it in --info=ALL (pjones)
|
||||
Related: rhbz#1638103
|
||||
- grubby-bls: Make grubby-bls sort everything the same way grub2 does (pjones)
|
||||
Resolves: rhbz#1638103
|
||||
- grubby-bls: Consistently use the filename as the bls id
|
||||
Related: rhbz#1638103
|
||||
- grubby-bls: check if entry exists before attempting to print its info
|
||||
Resolves: rhbz#1634712
|
||||
- grubby-bls: make a copy of the cmdline if is modified for an entry
|
||||
Resolves: rhbz#1629054
|
||||
- grubby-bls: escape delimiter character before replacing the options field
|
||||
Resolves: rhbz#1640017
|
||||
- grubby-bls: grubby-bls: use id instead of title to get the default entry
|
||||
Resolves: rhbz#1638103
|
||||
- grubby-bls: use ~debug instead of -debug as suffix to sort correctly
|
||||
Related: rhbz#1638103
|
||||
- grubby-bls: allow to add many BLS entries for the same kernel image
|
||||
Resolves: rhbz#1634752
|
||||
- grubby-bls: fix --default-* options for s390x
|
||||
Resolves: rhbz#1644608
|
||||
- grubby-bls: only compare using relative paths if /boot is a mount point
|
||||
Resolves: rhbz#1642078
|
||||
|
||||
* Fri Aug 10 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-18
|
||||
* Fri Aug 03 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-16
|
||||
- Make installkernel to use kernel-install scripts on BLS configuration
|
||||
|
||||
* Tue Jul 24 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-17
|
||||
* Tue Jul 24 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-15
|
||||
- Fix grubby wrapper paths
|
||||
Resolves: rhbz#1607981
|
||||
|
||||
* Tue Jul 24 2018 Peter Jones <pjones@redhat.com> - 8.40-16
|
||||
* Tue Jul 24 2018 Peter Jones <pjones@redhat.com> - 8.40-14
|
||||
- Fix permissions on /usr/sbin/grubby
|
||||
|
||||
* Fri Jul 13 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-15
|
||||
* Fri Jul 13 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-13
|
||||
- Add a grubby-bls package that conflicts with grubby
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 8.40-14
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Thu Jun 14 2018 Peter Jones <pjones@redhat.com> - 8.40-13
|
||||
- Use standard Fedora linker flags (rhbz#1543502) (rdossant)
|
||||
- Switch zipl config to BLS configuration on %%postun for s390x (javierm)
|
||||
|
||||
* Tue Apr 10 2018 Javier Martinez Canillas <javierm@redhat.com> - 8.40-12
|
||||
- Use .rpmsave as backup suffix when switching to BLS configuration
|
||||
|
||||
|
|
@ -643,16 +370,16 @@ fi
|
|||
|
||||
* Thu Dec 08 2011 Adam Williamson <awilliam@redhat.com> - 8.4-1
|
||||
- Update to 8.4:
|
||||
+ fix Loading... line for updated kernels
|
||||
+ Add new '--default-title' feature
|
||||
+ Add new '--default-index' feature
|
||||
+ add feature for testing the output of a grubby command
|
||||
+ Fix detection when comparing stage1 to MBR
|
||||
+ do not link against glib-2.0
|
||||
+ Don't crash if grubConfig not found
|
||||
+ Adding extlinux support for new-kernel-pkg
|
||||
+ Look for Debian / Ubuntu grub config files (#703260)
|
||||
+ Make grubby recognize Ubuntu's spin of Grub2 (#703260)
|
||||
+ fix Loading... line for updated kernels
|
||||
+ Add new '--default-title' feature
|
||||
+ Add new '--default-index' feature
|
||||
+ add feature for testing the output of a grubby command
|
||||
+ Fix detection when comparing stage1 to MBR
|
||||
+ do not link against glib-2.0
|
||||
+ Don't crash if grubConfig not found
|
||||
+ Adding extlinux support for new-kernel-pkg
|
||||
+ Look for Debian / Ubuntu grub config files (#703260)
|
||||
+ Make grubby recognize Ubuntu's spin of Grub2 (#703260)
|
||||
|
||||
* Thu Sep 29 2011 Peter Jones <pjones@redhat.com> - 8.3-1
|
||||
- Fix new-kernel-pkg invocation of grubby for grub (patch from Mads Kiilerich)
|
||||
|
|
|
|||
8
installkernel.in
Normal file
8
installkernel.in
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
if [[ -x @@LIBEXECDIR@@/installkernel ]] ; then
|
||||
exec @@LIBEXECDIR@@/installkernel "${@}"
|
||||
elif [[ -x @@LIBEXECDIR@@/installkernel-bls ]] ; then
|
||||
exec @@LIBEXECDIR@@/installkernel-bls "${@}"
|
||||
fi
|
||||
echo "installkernel is not installed correctly." >>/dev/stderr
|
||||
exit 1
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
# UPDATEDEFAULT specifies if kernel-install should make
|
||||
# new kernels the default
|
||||
UPDATEDEFAULT=yes
|
||||
|
||||
# DEFAULTKERNEL specifies the default kernel package type
|
||||
DEFAULTKERNEL=kernel-core
|
||||
1
sources
Normal file
1
sources
Normal file
|
|
@ -0,0 +1 @@
|
|||
SHA512 (8.40-1.tar.gz) = 956ea6ccec2e7285fc8ebbf1d7659c4f41b1e9eda913d99a9712af9103144a13e66e93dce4c089b64ab370d1fed63656e922eafb88a0a39f843a6a6d166f72c5
|
||||
Loading…
Add table
Add a link
Reference in a new issue