Update grub-cereus to 2.12
This commit is contained in:
parent
4411e6d417
commit
6fa69de4f0
6 changed files with 148 additions and 125 deletions
50
srcpkgs/grub-cereus/patches/devicetree-loading.patch
Normal file
50
srcpkgs/grub-cereus/patches/devicetree-loading.patch
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
support loading a devicetree based on GRUB_DEFAULT_DTB in /etc/default/grub
|
||||||
|
|
||||||
|
looks in /boot/dtbs/dtbs-${version}/${GRUB_DEFAULT_DTB}
|
||||||
|
|
||||||
|
based on https://src.fedoraproject.org/rpms/grub2/blob/rawhide/f/0022-Add-devicetree-loading.patch
|
||||||
|
|
||||||
|
--- a/util/grub-mkconfig.in
|
||||||
|
+++ b/util/grub-mkconfig.in
|
||||||
|
@@ -255,7 +255,8 @@
|
||||||
|
GRUB_ENABLE_CRYPTODISK \
|
||||||
|
GRUB_BADRAM \
|
||||||
|
GRUB_OS_PROBER_SKIP_LIST \
|
||||||
|
- GRUB_DISABLE_SUBMENU
|
||||||
|
+ GRUB_DISABLE_SUBMENU \
|
||||||
|
+ GRUB_DEFAULT_DTB
|
||||||
|
|
||||||
|
if test "x${grub_cfg}" != "x"; then
|
||||||
|
rm -f "${grub_cfg}.new"
|
||||||
|
--- a/util/grub.d/10_linux.in
|
||||||
|
+++ b/util/grub.d/10_linux.in
|
||||||
|
@@ -129,6 +129,14 @@
|
||||||
|
|
||||||
|
echo " insmod gzio" | sed "s/^/$submenu_indentation/"
|
||||||
|
|
||||||
|
+ if test -n "${dtb}" ; then
|
||||||
|
+ message="$(gettext_printf "Loading devicetree ...")"
|
||||||
|
+ sed "s/^/$submenu_indentation/" << EOF
|
||||||
|
+ echo '$(echo "$message" | grub_quote)'
|
||||||
|
+ devicetree ${rel_dirname}/${dtb}
|
||||||
|
+EOF
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
if [ x$dirname = x/ ]; then
|
||||||
|
if [ -z "${prepare_root_cache}" ]; then
|
||||||
|
prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)"
|
||||||
|
@@ -250,6 +258,14 @@
|
||||||
|
gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
+ dtb=
|
||||||
|
+ for i in "dtbs-${version}" "dtbs-${alt_version}"; do
|
||||||
|
+ if test -f "${dirname}/dtbs/${i}/${GRUB_DEFAULT_DTB}" ; then
|
||||||
|
+ dtb="dtbs/${i}/${GRUB_DEFAULT_DTB}"
|
||||||
|
+ break
|
||||||
|
+ fi
|
||||||
|
+ done
|
||||||
|
+
|
||||||
|
config=
|
||||||
|
for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
|
||||||
|
if test -e "${i}" ; then
|
31
srcpkgs/grub-cereus/patches/revert-fwsetup-2.12.patch
Normal file
31
srcpkgs/grub-cereus/patches/revert-fwsetup-2.12.patch
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
grub 2.12 introduced the `--is-supported` argument for fwsetup, and runs it for
|
||||||
|
efi systems to determine whether to show the uefi-firmware menu item.
|
||||||
|
|
||||||
|
The problem is that grub 2.06 does not support the `--is-supported` flag yet,
|
||||||
|
and calling it just crashes grub, causing the machine to reboot.
|
||||||
|
|
||||||
|
Showing a menu entry for uefi-firmware that may not work is infinitely better
|
||||||
|
than crashing and preventing the machine to boot, so remove the condition and
|
||||||
|
always show the menu entry.
|
||||||
|
|
||||||
|
See also: https://bugs.archlinux.org/task/75701
|
||||||
|
|
||||||
|
diff --git a/util/grub.d/30_uefi-firmware.in b/util/grub.d/30_uefi-firmware.in
|
||||||
|
index 1c2365d..b6041b5 100644
|
||||||
|
--- a/util/grub.d/30_uefi-firmware.in
|
||||||
|
+++ b/util/grub.d/30_uefi-firmware.in
|
||||||
|
@@ -32,11 +32,8 @@ gettext_printf "Adding boot menu entry for UEFI Firmware Settings ...\n" >&2
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
if [ "\$grub_platform" = "efi" ]; then
|
||||||
|
- fwsetup --is-supported
|
||||||
|
- if [ "\$?" = 0 ]; then
|
||||||
|
- menuentry '$LABEL' \$menuentry_id_option 'uefi-firmware' {
|
||||||
|
- fwsetup
|
||||||
|
- }
|
||||||
|
- fi
|
||||||
|
+ menuentry '$LABEL' \$menuentry_id_option 'uefi-firmware' {
|
||||||
|
+ fwsetup
|
||||||
|
+ }
|
||||||
|
fi
|
||||||
|
EOF
|
60
srcpkgs/grub-cereus/patches/xfs.patch
Normal file
60
srcpkgs/grub-cereus/patches/xfs.patch
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
fixes "unknown filesystem" error when installing grub on a system that
|
||||||
|
uses XFS for /boot.
|
||||||
|
|
||||||
|
From 68dd65cfdaad08b1f8ec01b84949b0bf88bc0d8c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jon DeVree <nuxi@vault24.org>
|
||||||
|
Date: Sun, 11 Feb 2024 10:34:58 -0500
|
||||||
|
Subject: [PATCH] fs/xfs: Handle non-continuous data blocks in directory
|
||||||
|
extents
|
||||||
|
|
||||||
|
The directory extent list does not have to be a continuous list of data
|
||||||
|
blocks. When GRUB tries to read a non-existant member of the list,
|
||||||
|
grub_xfs_read_file() will return a block of zero'ed memory. Checking for
|
||||||
|
a zero'ed magic number is sufficient to skip this non-existant data block.
|
||||||
|
|
||||||
|
Prior to commit 07318ee7e (fs/xfs: Fix XFS directory extent parsing)
|
||||||
|
this was handled as a subtle side effect of reading the (non-existant)
|
||||||
|
tail data structure. Since the block was zero'ed the computation of the
|
||||||
|
number of directory entries in the block would return 0 as well.
|
||||||
|
|
||||||
|
Fixes: 07318ee7e (fs/xfs: Fix XFS directory extent parsing)
|
||||||
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2254370
|
||||||
|
|
||||||
|
Signed-off-by: Jon DeVree <nuxi@vault24.org>
|
||||||
|
Reviewed-By: Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||||
|
---
|
||||||
|
grub-core/fs/xfs.c | 10 ++++++++++
|
||||||
|
1 file changed, 10 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c
|
||||||
|
index bc2224dbb..8e02ab4a3 100644
|
||||||
|
--- a/grub-core/fs/xfs.c
|
||||||
|
+++ b/grub-core/fs/xfs.c
|
||||||
|
@@ -902,6 +902,7 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
|
||||||
|
grub_xfs_first_de(dir->data, dirblock);
|
||||||
|
int entries = -1;
|
||||||
|
char *end = dirblock + dirblk_size;
|
||||||
|
+ grub_uint32_t magic;
|
||||||
|
|
||||||
|
numread = grub_xfs_read_file (dir, 0, 0,
|
||||||
|
blk << dirblk_log2,
|
||||||
|
@@ -912,6 +913,15 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * If this data block isn't actually part of the extent list then
|
||||||
|
+ * grub_xfs_read_file() returns a block of zeros. So, if the magic
|
||||||
|
+ * number field is all zeros then this block should be skipped.
|
||||||
|
+ */
|
||||||
|
+ magic = *(grub_uint32_t *)(void *) dirblock;
|
||||||
|
+ if (!magic)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Leaf and tail information are only in the data block if the number
|
||||||
|
* of extents is 1.
|
||||||
|
--
|
||||||
|
2.44.0
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
Patch-Source: https://git.savannah.gnu.org/cgit/grub.git/commit/?id=7fd5feff97c4b1f446f8fcf6d37aca0c64e7c763
|
|
||||||
useful because e2fsprogs 1.47 defaults to this enabled, and grub won't touch it
|
|
||||||
--
|
|
||||||
From 7fd5feff97c4b1f446f8fcf6d37aca0c64e7c763 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Javier Martinez Canillas <javierm@redhat.com>
|
|
||||||
Date: Fri, 11 Jun 2021 21:36:16 +0200
|
|
||||||
Subject: fs/ext2: Ignore checksum seed incompat feature
|
|
||||||
|
|
||||||
This incompat feature is used to denote that the filesystem stored its
|
|
||||||
metadata checksum seed in the superblock. This is used to allow tune2fs
|
|
||||||
changing the UUID on a mounted metdata_csum filesystem without having
|
|
||||||
to rewrite all the disk metadata. However, the GRUB doesn't use the
|
|
||||||
metadata checksum at all. So, it can just ignore this feature if it
|
|
||||||
is enabled. This is consistent with the GRUB filesystem code in general
|
|
||||||
which just does a best effort to access the filesystem's data.
|
|
||||||
|
|
||||||
The checksum seed incompat feature has to be removed from the ignore
|
|
||||||
list if the support for metadata checksum verification is added to the
|
|
||||||
GRUB ext2 driver later.
|
|
||||||
|
|
||||||
Suggested-by: Eric Sandeen <esandeen@redhat.com>
|
|
||||||
Suggested-by: Lukas Czerner <lczerner@redhat.com>
|
|
||||||
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
|
|
||||||
Reviewed-by: Lukas Czerner <lczerner@redhat.com>
|
|
||||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
|
||||||
---
|
|
||||||
grub-core/fs/ext2.c | 10 ++++++++--
|
|
||||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c
|
|
||||||
index e7dd78e..4953a15 100644
|
|
||||||
--- a/grub-core/fs/ext2.c
|
|
||||||
+++ b/grub-core/fs/ext2.c
|
|
||||||
@@ -103,6 +103,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
|
||||||
#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080
|
|
||||||
#define EXT4_FEATURE_INCOMPAT_MMP 0x0100
|
|
||||||
#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
|
|
||||||
+#define EXT4_FEATURE_INCOMPAT_CSUM_SEED 0x2000
|
|
||||||
#define EXT4_FEATURE_INCOMPAT_ENCRYPT 0x10000
|
|
||||||
|
|
||||||
/* The set of back-incompatible features this driver DOES support. Add (OR)
|
|
||||||
@@ -123,10 +124,15 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
|
||||||
* mmp: Not really back-incompatible - was added as such to
|
|
||||||
* avoid multiple read-write mounts. Safe to ignore for this
|
|
||||||
* RO driver.
|
|
||||||
+ * checksum seed: Not really back-incompatible - was added to allow tools
|
|
||||||
+ * such as tune2fs to change the UUID on a mounted metadata
|
|
||||||
+ * checksummed filesystem. Safe to ignore for now since the
|
|
||||||
+ * driver doesn't support checksum verification. However, it
|
|
||||||
+ * has to be removed from this list if the support is added later.
|
|
||||||
*/
|
|
||||||
#define EXT2_DRIVER_IGNORED_INCOMPAT ( EXT3_FEATURE_INCOMPAT_RECOVER \
|
|
||||||
- | EXT4_FEATURE_INCOMPAT_MMP)
|
|
||||||
-
|
|
||||||
+ | EXT4_FEATURE_INCOMPAT_MMP \
|
|
||||||
+ | EXT4_FEATURE_INCOMPAT_CSUM_SEED)
|
|
||||||
|
|
||||||
#define EXT3_JOURNAL_MAGIC_NUMBER 0xc03b3998U
|
|
||||||
|
|
||||||
--
|
|
||||||
cgit v1.1
|
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
Patch-Source: https://git.savannah.gnu.org/cgit/grub.git/patch/?id=2e9fa73a040462b81bfbfe56c0bc7ad2d30b446b
|
|
||||||
useful to support the large_dir ext4 feature
|
|
||||||
--
|
|
||||||
From 2e9fa73a040462b81bfbfe56c0bc7ad2d30b446b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Theodore Ts'o <tytso@mit.edu>
|
|
||||||
Date: Tue, 30 Aug 2022 22:41:59 -0400
|
|
||||||
Subject: fs/ext2: Ignore the large_dir incompat feature
|
|
||||||
|
|
||||||
Recently, ext4 added the large_dir feature, which adds support for
|
|
||||||
a 3 level htree directory support.
|
|
||||||
|
|
||||||
The GRUB supports existing file systems with htree directories by
|
|
||||||
ignoring their existence, and since the index nodes for the hash tree
|
|
||||||
look like deleted directory entries (by design), the GRUB can simply do
|
|
||||||
a brute force O(n) linear search of directories. The same is true for
|
|
||||||
3 level deep htrees indicated by large_dir feature flag.
|
|
||||||
|
|
||||||
Hence, it is safe for the GRUB to ignore the large_dir incompat feature.
|
|
||||||
|
|
||||||
Fixes: https://savannah.gnu.org/bugs/?61606
|
|
||||||
|
|
||||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
|
||||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
|
||||||
---
|
|
||||||
grub-core/fs/ext2.c | 10 +++++++++-
|
|
||||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c
|
|
||||||
index 0989e26..e1cc5e6 100644
|
|
||||||
--- a/grub-core/fs/ext2.c
|
|
||||||
+++ b/grub-core/fs/ext2.c
|
|
||||||
@@ -104,6 +104,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
|
||||||
#define EXT4_FEATURE_INCOMPAT_MMP 0x0100
|
|
||||||
#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
|
|
||||||
#define EXT4_FEATURE_INCOMPAT_CSUM_SEED 0x2000
|
|
||||||
+#define EXT4_FEATURE_INCOMPAT_LARGEDIR 0x4000 /* >2GB or 3 level htree */
|
|
||||||
#define EXT4_FEATURE_INCOMPAT_ENCRYPT 0x10000
|
|
||||||
|
|
||||||
/* The set of back-incompatible features this driver DOES support. Add (OR)
|
|
||||||
@@ -129,10 +130,17 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
|
||||||
* checksummed filesystem. Safe to ignore for now since the
|
|
||||||
* driver doesn't support checksum verification. However, it
|
|
||||||
* has to be removed from this list if the support is added later.
|
|
||||||
+ * large_dir: Not back-incompatible given that the GRUB ext2 driver does
|
|
||||||
+ * not implement EXT2_FEATURE_COMPAT_DIR_INDEX. If the GRUB
|
|
||||||
+ * eventually supports the htree feature (aka dir_index)
|
|
||||||
+ * it should support 3 level htrees and then move
|
|
||||||
+ * EXT4_FEATURE_INCOMPAT_LARGEDIR to
|
|
||||||
+ * EXT2_DRIVER_SUPPORTED_INCOMPAT.
|
|
||||||
*/
|
|
||||||
#define EXT2_DRIVER_IGNORED_INCOMPAT ( EXT3_FEATURE_INCOMPAT_RECOVER \
|
|
||||||
| EXT4_FEATURE_INCOMPAT_MMP \
|
|
||||||
- | EXT4_FEATURE_INCOMPAT_CSUM_SEED)
|
|
||||||
+ | EXT4_FEATURE_INCOMPAT_CSUM_SEED \
|
|
||||||
+ | EXT4_FEATURE_INCOMPAT_LARGEDIR)
|
|
||||||
|
|
||||||
#define EXT3_JOURNAL_MAGIC_NUMBER 0xc03b3998U
|
|
||||||
|
|
||||||
--
|
|
||||||
cgit v1.1
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Template file for 'grub-cereus'
|
# Template file for 'grub-cereus'
|
||||||
pkgname=grub-cereus
|
pkgname=grub-cereus
|
||||||
version=2.06
|
version=2.12
|
||||||
revision=2
|
revision=1
|
||||||
hostmakedepends="python3 pkg-config flex freetype-devel font-unifont-bdf help2man
|
hostmakedepends="python3 pkg-config flex freetype-devel font-unifont-bdf help2man
|
||||||
automake gettext-devel-tools"
|
automake gettext-devel-tools"
|
||||||
makedepends="libusb-compat-devel ncurses-devel freetype-devel
|
makedepends="libusb-compat-devel ncurses-devel freetype-devel
|
||||||
|
@ -14,8 +14,9 @@ short_desc="GRand Unified Bootloader 2"
|
||||||
maintainer="Kevin Figueroa <kfdevart@disroot.org>"
|
maintainer="Kevin Figueroa <kfdevart@disroot.org>"
|
||||||
license="GPL-3.0-or-later"
|
license="GPL-3.0-or-later"
|
||||||
homepage="https://www.gnu.org/software/grub/"
|
homepage="https://www.gnu.org/software/grub/"
|
||||||
|
changelog="https://git.savannah.gnu.org/cgit/grub.git/plain/NEWS"
|
||||||
distfiles="${GNU_SITE}/grub/grub-${version}.tar.xz"
|
distfiles="${GNU_SITE}/grub/grub-${version}.tar.xz"
|
||||||
checksum=b79ea44af91b93d17cd3fe80bdae6ed43770678a9a5ae192ccea803ebb657ee1
|
checksum=f3c97391f7c4eaa677a78e090c7e97e6dc47b16f655f04683ebd37bef7fe0faa
|
||||||
|
|
||||||
archs="i686* x86_64* aarch64* ppc ppc-musl ppc64*"
|
archs="i686* x86_64* aarch64* ppc ppc-musl ppc64*"
|
||||||
nopie=yes
|
nopie=yes
|
||||||
|
@ -48,6 +49,9 @@ esac
|
||||||
|
|
||||||
pre_configure() {
|
pre_configure() {
|
||||||
autoreconf -fi
|
autoreconf -fi
|
||||||
|
|
||||||
|
# XXX: empty file missing from 2.12 release
|
||||||
|
touch grub-core/extra_deps.lst
|
||||||
}
|
}
|
||||||
|
|
||||||
do_configure() {
|
do_configure() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue