#21 grub2 installtion and config fixups
Merged 2 months ago by jannau. Opened 2 months ago by jannau.
fedora-asahi/ jannau/asahi-platform-metapackage grub2-fixups  into  main

@@ -0,0 +1,121 @@ 

+ From b885f4374968e8a034762838336ed0a467f460c1 Mon Sep 17 00:00:00 2001

+ From: Janne Grunau <j@jannau.net>

+ 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

+ 

@@ -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

@@ -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}
@@ -60,6 +61,23 @@ 

  %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
@@ -126,6 +144,9 @@ 

  

  %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

  
@@ -138,6 +159,14 @@ 

  %{_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
@@ -166,7 +195,16 @@ 

  TapToClick=false

  EOF

  

+ # Install desktop grub2 config fixup script

+ %if 0%{?fedora} && 0%{?fedora} <= 42

+ install -Dpm0755 -t %{buildroot}%{_libexecdir}/%{name}-desktop %SOURCE1

+ %endif

+ 

  %changelog

+ * Mon Apr 28 2025 Janne Grunau <janne-fdr@jannau.net> - 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 <janne-fdr@jannau.net> - 0-22

  - Drop outdated firefox user-agent override

  - Obsolete flatpak mesa extension for EOL 22.08 fdo runtime

  • remove orphaned grub modules in /boot/grub2/arm64-efi copied by kiwi, prevents rhbz#2361849
  • adjust GOME/KDE installations to match fedora desktop installations, most importantly set menu_auto_hide=1 which automatically shows the grub menu during boot issues

only lightly tested so far

rebased onto 6f79d52

2 months ago

Commented the %posttrans for FAR_grub2_config_fixup.sh so the script can be tested by a wider audience since I'd like merge the grub2 module cleanup ASAP.

Install this script to libexecdir instead of bindir. In general these shouldn't be in the path.

3 new commits added

  • Add all variants of /etc/default/grub inside install images
  • Add script to adjust grub2 config to Fedora Desktop defaults
  • Cleanup orphaned grub2 efi modules (rhbz#2361849)
2 months ago

3 new commits added

  • Add all variants of /etc/default/grub inside install images
  • Add script to adjust grub2 config to Fedora Desktop defaults
  • Cleanup orphaned grub2 efi modules (rhbz#2361849)
2 months ago

dropped the unnecessary copying of %SOURCE1 from %prep as it is directly installed

Pull-Request has been merged by jannau

2 months ago