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'
|
||||
pkgname=grub-cereus
|
||||
version=2.06
|
||||
revision=2
|
||||
version=2.12
|
||||
revision=1
|
||||
hostmakedepends="python3 pkg-config flex freetype-devel font-unifont-bdf help2man
|
||||
automake gettext-devel-tools"
|
||||
makedepends="libusb-compat-devel ncurses-devel freetype-devel
|
||||
|
@ -14,8 +14,9 @@ short_desc="GRand Unified Bootloader 2"
|
|||
maintainer="Kevin Figueroa <kfdevart@disroot.org>"
|
||||
license="GPL-3.0-or-later"
|
||||
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"
|
||||
checksum=b79ea44af91b93d17cd3fe80bdae6ed43770678a9a5ae192ccea803ebb657ee1
|
||||
checksum=f3c97391f7c4eaa677a78e090c7e97e6dc47b16f655f04683ebd37bef7fe0faa
|
||||
|
||||
archs="i686* x86_64* aarch64* ppc ppc-musl ppc64*"
|
||||
nopie=yes
|
||||
|
@ -48,6 +49,9 @@ esac
|
|||
|
||||
pre_configure() {
|
||||
autoreconf -fi
|
||||
|
||||
# XXX: empty file missing from 2.12 release
|
||||
touch grub-core/extra_deps.lst
|
||||
}
|
||||
|
||||
do_configure() {
|
||||
|
|
Loading…
Add table
Reference in a new issue