-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
148 additions
and
125 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
|
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters