From ef3736ee003f5c98c32dc03e73387c14adbb2fa6 Mon Sep 17 00:00:00 2001 From: Marcin Krol Date: Sun, 9 Jul 2023 23:37:15 +0200 Subject: [PATCH] - fix for ext4 fs with metadata_csum_seed - python 3 --- grub2.spec | 8 ++-- ignore-ext4-metadata_csum_seed.patch | 59 ++++++++++++++++++++++++++++ tld-sysconfdir.patch | 32 +++++++-------- 3 files changed, 80 insertions(+), 19 deletions(-) create mode 100644 ignore-ext4-metadata_csum_seed.patch diff --git a/grub2.spec b/grub2.spec index c158e44..bb2ae31 100644 --- a/grub2.spec +++ b/grub2.spec @@ -144,7 +144,7 @@ Summary(pl.UTF-8): GRUB2 - bootloader dla x86 i ppc Summary(pt_BR.UTF-8): Gerenciador de inicialização GRUB2 Name: grub2 Version: 2.06 -Release: 3 +Release: 4 License: GPL v2 Group: Base Source0: https://ftp.gnu.org/gnu/grub/grub-%{version}.tar.xz @@ -169,6 +169,7 @@ Patch14: blscfg.patch Patch15: restricted.patch Patch16: 0193-fs-xfs-Fix-unreadable-filesystem-with-v4-superblock.patch Patch17: 0268-grub_fs_probe-dprint-errors-from-filesystems.patch +Patch18: ignore-ext4-metadata_csum_seed.patch URL: http://www.gnu.org/software/grub/ BuildRequires: autoconf >= 2.63 BuildRequires: automake >= 1:1.11.1-1 @@ -200,8 +201,8 @@ BuildRequires: libfuse-devel BuildRequires: libtool BuildRequires: ncurses-devel BuildRequires: pkgconfig -BuildRequires: python >= 1:2.6 -BuildRequires: python-modules >= 1:2.6 +BuildRequires: python3 +BuildRequires: python3-modules BuildRequires: rpm >= 4.4.9-56 BuildRequires: rpmbuild(macros) >= 1.213 BuildRequires: sed >= 4.0 @@ -539,6 +540,7 @@ Motyw starfield dla GRUB-a. %patch15 -p1 %patch16 -p1 %patch17 -p1 +%patch18 -p1 # we don't have C.utf-8 and need an UTF-8 locale for build sed -i -e 's/LC_ALL=C.UTF-8/LC_ALL=en_US.utf-8/g' po/Makefile* po/Rules* diff --git a/ignore-ext4-metadata_csum_seed.patch b/ignore-ext4-metadata_csum_seed.patch new file mode 100644 index 0000000..27b2277 --- /dev/null +++ b/ignore-ext4-metadata_csum_seed.patch @@ -0,0 +1,59 @@ +From 7fd5feff97c4b1f446f8fcf6d37aca0c64e7c763 Mon Sep 17 00:00:00 2001 +From: Javier Martinez Canillas +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 +Suggested-by: Lukas Czerner +Signed-off-by: Javier Martinez Canillas +Reviewed-by: Lukas Czerner +Reviewed-by: Daniel Kiper +--- + 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 + diff --git a/tld-sysconfdir.patch b/tld-sysconfdir.patch index 5334cca..301f4c5 100644 --- a/tld-sysconfdir.patch +++ b/tld-sysconfdir.patch @@ -1,16 +1,7 @@ -diff -ur grub-2.04.orig/util/grub.d/README grub-2.04/util/grub.d/README ---- grub-2.04.orig/util/grub.d/README 2018-11-24 18:13:02.000000000 +0100 -+++ grub-2.04/util/grub.d/README 2019-08-18 15:41:16.068000000 +0200 -@@ -8,4 +8,4 @@ - The number namespace in-between is configurable by system installer and/or - administrator. For example, you can add an entry to boot another OS as - 01_otheros, 11_otheros, etc, depending on the position you want it to occupy in --the menu; and then adjust the default setting via /etc/default/grub. -+the menu; and then adjust the default setting via /etc/sysconfig/grub. -diff -ur grub-2.04.orig/util/grub-mkconfig.in grub-2.04/util/grub-mkconfig.in ---- grub-2.04.orig/util/grub-mkconfig.in 2019-05-20 12:59:36.000000000 +0200 -+++ grub-2.04/util/grub-mkconfig.in 2019-08-18 15:41:16.068000000 +0200 -@@ -154,8 +154,8 @@ +diff -urNp -x '*.orig' grub-2.06.org/util/grub-mkconfig.in grub-2.06/util/grub-mkconfig.in +--- grub-2.06.org/util/grub-mkconfig.in 2021-03-10 14:42:22.000000000 +0100 ++++ grub-2.06/util/grub-mkconfig.in 2023-07-09 22:57:02.992264334 +0200 +@@ -157,8 +157,8 @@ if [ "x${GRUB_EARLY_INITRD_LINUX_STOCK}" GRUB_EARLY_INITRD_LINUX_STOCK="intel-uc.img intel-ucode.img amd-uc.img amd-ucode.img early_ucode.cpio microcode.cpio" fi @@ -20,8 +11,8 @@ diff -ur grub-2.04.orig/util/grub-mkconfig.in grub-2.04/util/grub-mkconfig.in + . ${sysconfdir}/sysconfig/grub fi - # XXX: should this be deprecated at some point? -@@ -254,7 +254,7 @@ + if [ "x${GRUB_DISABLE_UUID}" = "xtrue" ]; then +@@ -267,7 +267,7 @@ cat << EOF # DO NOT EDIT THIS FILE # # It is automatically generated by $self using templates @@ -30,7 +21,7 @@ diff -ur grub-2.04.orig/util/grub-mkconfig.in grub-2.04/util/grub-mkconfig.in # EOF -@@ -280,7 +280,7 @@ +@@ -293,7 +293,7 @@ if test "x${grub_cfg}" != "x" ; then if ! ${grub_script_check} ${grub_cfg}.new; then # TRANSLATORS: %s is replaced by filename gettext_printf "Syntax errors are detected in generated GRUB config file. @@ -39,3 +30,12 @@ diff -ur grub-2.04.orig/util/grub-mkconfig.in grub-2.04/util/grub-mkconfig.in and /etc/grub.d/* files or please file a bug report with %s file attached." "${grub_cfg}.new" >&2 echo >&2 +diff -urNp -x '*.orig' grub-2.06.org/util/grub.d/README grub-2.06/util/grub.d/README +--- grub-2.06.org/util/grub.d/README 2018-11-24 18:13:02.000000000 +0100 ++++ grub-2.06/util/grub.d/README 2023-07-09 22:57:02.992264334 +0200 +@@ -8,4 +8,4 @@ All executable files in this directory a + The number namespace in-between is configurable by system installer and/or + administrator. For example, you can add an entry to boot another OS as + 01_otheros, 11_otheros, etc, depending on the position you want it to occupy in +-the menu; and then adjust the default setting via /etc/default/grub. ++the menu; and then adjust the default setting via /etc/sysconfig/grub. -- 2.44.0