From ffe251c9a0c51d13a61a7aa60a22825d6981e9aa Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: May 03 2025 09:25:19 +0000 Subject: [PATCH 1/3] Cleanup orphaned grub2 efi modules (rhbz#2361849) To prevent rhbz#2361849 to be triggered on further devices. --- diff --git a/asahi-platform-metapackage.spec b/asahi-platform-metapackage.spec index 9431429..b34421a 100644 --- a/asahi-platform-metapackage.spec +++ b/asahi-platform-metapackage.spec @@ -60,6 +60,23 @@ This package declares the core dependencies for the Asahi platform. %files core %dnl No files to ship +# cleanup orphaned grub2 modules in /boot/grub2/arm64-efi mistakenly installed +# kiwi. +# Check if ext2.mod in /boot/grub2/arm64-efi is newer than the system module. +# This means most likely `grub2-install` was used. +%if 0%{?fedora} && 0%{?fedora} <= 42 +%posttrans core +if [ -d /boot/grub2/arm64-efi ]; then + if [ ! -d /usr/lib/grub/arm64-efi ]; then + echo "Cleaning stale grub2 modules in /boot/grub2/arm64-efi" + rm -rf /boot/grub2/arm64-efi + elif [ ! /boot/grub2/arm64-efi/ext2.mod -nt /usr/lib/grub/arm64-efi/ext2.mod ]; then + echo "Cleaning stale grub2 modules in /boot/grub2/arm64-efi" + rm -rf /boot/grub2/arm64-efi + fi +fi +%endif + %dnl ------------------------------------------------------------------- %package audio From 808350f83b5dd7b7e13e2f068e9810461218afef Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: May 03 2025 12:57:28 +0000 Subject: [PATCH 2/3] Add script to adjust grub2 config to Fedora Desktop defaults For now just install the script to allow wider testing. After successful testing the script should be excuted as %posttrans script. The script adjust unmodified grub configurations for GNOME/KDE installations. The main change for all versions is to enable `menu_auto_hide` in the grubenv with changing the timeout back to default values (5s with menu style). This will show the grub menu automatically when there are boot issues. It also adds `GRUB_ENABLE_BLSCFG=true` and `GRUB_DISABLE_OS_PROBER=true` if those are missing from /etc/default/grub. --- diff --git a/FAR_grub2_config_fixup.sh b/FAR_grub2_config_fixup.sh new file mode 100755 index 0000000..be92a46 --- /dev/null +++ b/FAR_grub2_config_fixup.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# SPDX-License-Identifier: MIT + +set -e + +GRUB_CFG="/boot/grub2/grub.cfg" +GRUB_ENV="/boot/grub2/grubenv" + +GRUB_DEF="${1:-/etc/default/grub}" + +if [ ! -f "${GRUB_DEF}" ]; then + echo "\"${GRUB_DEF}\" is not a regular file" + exit 1 +fi + +# the date if image creation is more important but the fedora version is shorter +# SHA256_F38 from fedora-38-kde-202308291600 +# SHA256_F39A from fedora-39-kde-202401071600 +# SHA256_F39B from fedora-39-kde-202404071600 +# SHA256_F40 from fedora-40-kde-202407011600 +# SHA256_F42 from fedora-42-kde-202504171600 + +SHA256_F38="e0e9f98daa3cd60c009457b7f7edcba0613a5e29bb47ff007a4da9a2131c54bb" # TIMEOUT=5 +SHA256_F39A="18b3f46a5df602be9225642f70f577774aec0fe29889fb5ae45734f65d0d0626" # TIMEOUT=1 +SHA256_F39B="bd8bcc2fd4c87a7e3cda6baf6e0b58077232177c77bcb30c3daa2e61997a543d" # TERMINAL_{INPUT,OUTPUT} +SHA256_F40="c0b8c0a85add76951e27a028f004615ed50429db76e71733b6520951ff0cd64b" # -GRUB_ENABLE_BLSCFG=true +SHA256_F42="abee34c21b1e42d6edadb340fb0872a85eabd20fa957a31965ba8aaac002ceda" # +GRUB_DISABLE_OS_PROBER=true + +SHA256_CUR=$(sha256sum "${GRUB_DEF}" | cut -d' ' -f1) + +if [ $SHA256_CUR != $SHA256_F38 -a \ + $SHA256_CUR != $SHA256_F39A -a \ + $SHA256_CUR != $SHA256_F39B -a \ + $SHA256_CUR != $SHA256_F40 -a \ + $SHA256_CUR != $SHA256_F42 ]; then + echo "\"${GRUB_DEF}\" was modified, skip fixups." + exit 0 +fi + +# always delete "GRUB_TIMEOUT_STYLE=hidden" and "GRUB_GFXMODE=auto" +SED_CMD="/GRUB_TIMEOUT_STYLE=hidden/d +/GRUB_GFXMODE=auto/d +" + +# disable OS_PROBER, it's a bad fit for Apple Silicon setups +if [ $SHA256_CUR != $SHA256_F42 ]; then + SED_CMD+="/GRUB_DISABLE_RECOVERY/a\ +GRUB_DISABLE_OS_PROBER=true +" +fi + +# add missing GRUB_ENABLE_BLSCFG=true +if [ $SHA256_CUR = $SHA256_F40 -o $SHA256_CUR = $SHA256_F42 ]; then + SED_CMD+="/GRUB_DISTRIBUTOR/a\ +GRUB_ENABLE_BLSCFG=true +" +fi + +if [ $SHA256_CUR != $SHA256_F38 ]; then + SED_CMD+="s/\(GRUB_TIMEOUT\)=1/\1=5/ +" +fi + +# exit without modifications for test runs +if [ "${GRUB_DEF}" != "/etc/default/grub" ]; then + echo "Adjusted grub2 defaults:" + sed -e "${SED_CMD}" < "${GRUB_DEF}" + exit 0 +fi + +# check all prerequisites before modification so the script may be executed again +if [ ! -f "${GRUB_CFG}" ]; then + echo "Error: \"${GRUB_CFG}\" does not exists" + exit 1 +elif [ ! -f "${GRUB_ENV}" ]; then + echo "Error: \"${GRUB_ENV}\" does not exists" + exit 1 +elif [ ! -x /usr/sbin/grub2-mkconfig ]; then + echo "Error: \"/usr/sbin/grub2-mkconfig\" is not executable" +elif [ ! -x /usr/bin/grub2-editenv ]; then + echo "Error: \"/usr/bin/grub2-editenv\" is not executable" +fi + +echo "Adjust grub defaults to Fedora defaults" +sed -i -e "$SED_CMD" "${GRUB_DEF}" + +# Regenerate grub.cfg +echo "Regenerating \"${GRUB_CFG}\"" +/usr/sbin/grub2-mkconfig -o "${GRUB_CFG}" + +# switch to menu_auto_hide +echo "Adding \"menu_auto_hide=1\" to \"${GRUB_ENV}\"" +/usr/bin/grub2-editenv "${GRUB_ENV}" set menu_auto_hide=1 diff --git a/asahi-platform-metapackage.spec b/asahi-platform-metapackage.spec index b34421a..9ae4d8d 100644 --- a/asahi-platform-metapackage.spec +++ b/asahi-platform-metapackage.spec @@ -3,12 +3,13 @@ Name: asahi-platform-metapackage Version: 0 -Release: 22%{?dist} +Release: 23%{?dist} Summary: Metapackage declaring Asahi platform dependencies Group: Metapackages License: MIT URL: https://pagure.io/fedora-asahi/asahi-platform-metapackage ExclusiveArch: aarch64 +Source1: FAR_grub2_config_fixup.sh BuildRequires: systemd-rpm-macros Requires: %{name}-core = %{version}-%{release} @@ -143,6 +144,9 @@ appropriate fex-emu overlays and virglrenderer. %package desktop Summary: Metapackage declaring package recommendations for Asahi desktop systems +Requires: sed +Requires: grub2-tools-minimal +Requires: grub2-tools Recommends: asahi-battery Recommends: mesa-libOpenCL @@ -155,6 +159,14 @@ This contains the OpenCL runtime and persistant battery charge control support u %{_environmentdir}/50-asahi-gtk-ngl.conf %endif +%if 0%{?fedora} && 0%{?fedora} <= 42 +%{_libexecdir}/%{name}-desktop/ + +# Adjust grub2 config to Fedora desktop defaults +%dnl %posttrans desktop +%dnl %{_libexecdir}/%{name}-desktop/FAR_grub2_config_fixup.sh +%endif + %dnl ------------------------------------------------------------------- %prep @@ -183,7 +195,16 @@ cat > %{buildroot}%{_sysconfdir}/xdg/kcminputrc < - 0-23 +- Add script to adjust grub2 config to Fedora Desktop defaults +- Cleanup orphaned grub2 efi modules (rhbz#2361849) + * Fri Apr 11 2025 Janne Grunau - 0-22 - Drop outdated firefox user-agent override - Obsolete flatpak mesa extension for EOL 22.08 fdo runtime From 1dc7766478b691fac7d6b14d17e17db8e92c821c Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: May 03 2025 12:57:28 +0000 Subject: [PATCH 3/3] Add all variants of /etc/default/grub inside install images This should cover all install images created after April 2023. --- diff --git a/0001-Initial-import-of-all-etc-default-grub-variants.patch b/0001-Initial-import-of-all-etc-default-grub-variants.patch new file mode 100644 index 0000000..03460be --- /dev/null +++ b/0001-Initial-import-of-all-etc-default-grub-variants.patch @@ -0,0 +1,121 @@ +From b885f4374968e8a034762838336ed0a467f460c1 Mon Sep 17 00:00:00 2001 +From: Janne Grunau +Date: Mon, 28 Apr 2025 20:04:47 +0200 +Subject: [PATCH 1/1] Initial import of all /etc/default/grub variants + +--- + fedora-38-kde-202308291600/grub | 10 ++++++++++ + fedora-39-kde-202401071600/grub | 10 ++++++++++ + fedora-39-kde-202404071600/grub | 11 +++++++++++ + fedora-40-kde-202407011600/grub | 10 ++++++++++ + fedora-41-kde-202501071600/grub | 10 ++++++++++ + fedora-42-kde-202504171600/grub | 11 +++++++++++ + 6 files changed, 62 insertions(+) + create mode 100644 fedora-38-kde-202308291600/grub + create mode 100644 fedora-39-kde-202401071600/grub + create mode 100644 fedora-39-kde-202404071600/grub + create mode 100644 fedora-40-kde-202407011600/grub + create mode 100644 fedora-41-kde-202501071600/grub + create mode 100644 fedora-42-kde-202504171600/grub + +diff --git a/fedora-38-kde-202308291600/grub b/fedora-38-kde-202308291600/grub +new file mode 100644 +index 000000000000..b4657000c634 +--- /dev/null ++++ b/fedora-38-kde-202308291600/grub +@@ -0,0 +1,10 @@ ++GRUB_DEFAULT=saved ++GRUB_DISABLE_SUBMENU=true ++GRUB_DISABLE_RECOVERY=true ++GRUB_CMDLINE_LINUX_DEFAULT="rhgb quiet rootflags=subvol=root" ++GRUB_DISTRIBUTOR="Fedora Linux Asahi Remix" ++GRUB_ENABLE_BLSCFG=true ++GRUB_GFXMODE=auto ++GRUB_TERMINAL="console" ++GRUB_TIMEOUT=5 ++GRUB_TIMEOUT_STYLE=hidden +diff --git a/fedora-39-kde-202401071600/grub b/fedora-39-kde-202401071600/grub +new file mode 100644 +index 000000000000..c9b8bd6049de +--- /dev/null ++++ b/fedora-39-kde-202401071600/grub +@@ -0,0 +1,10 @@ ++GRUB_DEFAULT=saved ++GRUB_DISABLE_SUBMENU=true ++GRUB_DISABLE_RECOVERY=true ++GRUB_CMDLINE_LINUX_DEFAULT="rhgb quiet rootflags=subvol=root" ++GRUB_DISTRIBUTOR="Fedora Linux Asahi Remix" ++GRUB_ENABLE_BLSCFG=true ++GRUB_GFXMODE=auto ++GRUB_TERMINAL="console" ++GRUB_TIMEOUT=1 ++GRUB_TIMEOUT_STYLE=hidden +diff --git a/fedora-39-kde-202404071600/grub b/fedora-39-kde-202404071600/grub +new file mode 100644 +index 000000000000..e0ded7e9b5f7 +--- /dev/null ++++ b/fedora-39-kde-202404071600/grub +@@ -0,0 +1,11 @@ ++GRUB_DEFAULT=saved ++GRUB_DISABLE_SUBMENU=true ++GRUB_DISABLE_RECOVERY=true ++GRUB_CMDLINE_LINUX_DEFAULT="rhgb quiet rootflags=subvol=root" ++GRUB_DISTRIBUTOR="Fedora Linux Asahi Remix" ++GRUB_ENABLE_BLSCFG=true ++GRUB_GFXMODE=auto ++GRUB_TERMINAL_INPUT="console" ++GRUB_TERMINAL_OUTPUT="console" ++GRUB_TIMEOUT=1 ++GRUB_TIMEOUT_STYLE=hidden +diff --git a/fedora-40-kde-202407011600/grub b/fedora-40-kde-202407011600/grub +new file mode 100644 +index 000000000000..0ca6162dece5 +--- /dev/null ++++ b/fedora-40-kde-202407011600/grub +@@ -0,0 +1,10 @@ ++GRUB_DEFAULT=saved ++GRUB_DISABLE_SUBMENU=true ++GRUB_DISABLE_RECOVERY=true ++GRUB_CMDLINE_LINUX_DEFAULT="rhgb quiet rootflags=subvol=root" ++GRUB_DISTRIBUTOR="Fedora Linux Asahi Remix" ++GRUB_GFXMODE=auto ++GRUB_TERMINAL_INPUT="console" ++GRUB_TERMINAL_OUTPUT="console" ++GRUB_TIMEOUT=1 ++GRUB_TIMEOUT_STYLE=hidden +diff --git a/fedora-41-kde-202501071600/grub b/fedora-41-kde-202501071600/grub +new file mode 100644 +index 000000000000..0ca6162dece5 +--- /dev/null ++++ b/fedora-41-kde-202501071600/grub +@@ -0,0 +1,10 @@ ++GRUB_DEFAULT=saved ++GRUB_DISABLE_SUBMENU=true ++GRUB_DISABLE_RECOVERY=true ++GRUB_CMDLINE_LINUX_DEFAULT="rhgb quiet rootflags=subvol=root" ++GRUB_DISTRIBUTOR="Fedora Linux Asahi Remix" ++GRUB_GFXMODE=auto ++GRUB_TERMINAL_INPUT="console" ++GRUB_TERMINAL_OUTPUT="console" ++GRUB_TIMEOUT=1 ++GRUB_TIMEOUT_STYLE=hidden +diff --git a/fedora-42-kde-202504171600/grub b/fedora-42-kde-202504171600/grub +new file mode 100644 +index 000000000000..a7790b0cff88 +--- /dev/null ++++ b/fedora-42-kde-202504171600/grub +@@ -0,0 +1,11 @@ ++GRUB_DEFAULT=saved ++GRUB_DISABLE_SUBMENU=true ++GRUB_DISABLE_RECOVERY=true ++GRUB_DISABLE_OS_PROBER=true ++GRUB_CMDLINE_LINUX_DEFAULT="rhgb quiet rootflags=subvol=root" ++GRUB_DISTRIBUTOR="Fedora Linux Asahi Remix" ++GRUB_GFXMODE=auto ++GRUB_TERMINAL_INPUT="console" ++GRUB_TERMINAL_OUTPUT="console" ++GRUB_TIMEOUT=1 ++GRUB_TIMEOUT_STYLE=hidden +-- +2.49.0 +