diff --git a/system/boot/grub2/files/30_uefi-firmware b/system/boot/grub2/files/30_uefi-firmware index 1b68ba87..4593173c 100755 --- a/system/boot/grub2/files/30_uefi-firmware +++ b/system/boot/grub2/files/30_uefi-firmware @@ -76,4 +76,4 @@ cat << EOF } EOF -fi \ No newline at end of file +fi diff --git a/system/boot/grub2/files/30_uefi-firmware-new b/system/boot/grub2/files/30_uefi-firmware-new new file mode 100644 index 00000000..b632425a --- /dev/null +++ b/system/boot/grub2/files/30_uefi-firmware-new @@ -0,0 +1,84 @@ +#! /bin/sh +set -e + +# grub-mkconfig helper script. +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# GRUB is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# GRUB is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GRUB. If not, see . + +prefix="/usr" +exec_prefix="/usr" +datarootdir="/usr/share" + +export TEXTDOMAIN=grub +export TEXTDOMAINDIR="${datarootdir}/locale" + +. "${datarootdir}/grub/grub-mkconfig_lib" + +efi_vars_dir=/sys/firmware/efi/efivars +EFI_GLOBAL_VARIABLE=8be4df61-93ca-11d2-aa0d-00e098032b8c +OsIndications="$efi_vars_dir/OsIndicationsSupported-$EFI_GLOBAL_VARIABLE" + +if [ -e "$OsIndications" ] && \ + [ "$(( $(printf 0x%x \'"$(cat $OsIndications | cut -b1)") & 1 ))" = 1 ]; then + LABEL="System setup" + + gettext_printf "Adding boot menu entry for EFI firmware configuration\n" >&2 + + onstr="$(gettext_printf "(on %s)" "${DEVICE}")" + + cat << EOF +if [ "\$grub_platform" = "efi" ]; then + fwsetup --is-supported + if [ "\$?" = 0 ]; then + menuentry '$LABEL' \$menuentry_id_option 'uefi-firmware' { + fwsetup + } + fi +fi +EOF +fi + +#See for EFI present +if [ -d /sys/firmware/efi ]; then + +. "/usr/share/grub/grub-mkconfig_lib" + +#See for Windows EFI string in EFI BIOS +WINDOWS_EFI=$(/usr/sbin/efibootmgr -v | grep -E -m 1 '(WINDOWS|Windows Boot Manager)' | sed 's/.*\(HD([^()]*)File([^()]*)\).*/\1/i') +if [ -z "$WINDOWS_EFI" ]; then + exit 0 +fi +WIN_EFI_PATH_LINUX=/EFI/Microsoft/Boot/bootmgfw.efi + +#Determine EFI UUID +WIN_EFI_UUID=$(grub2-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi) + +ESP_SEARCH_HINTS=$(grub2-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi) + +cat << EOF +menuentry "Windows Boot Manager" { +EOF +save_default_entry | sed -e "s/^/ /" +cat << EOF + insmod part_gpt + insmod fat + insmod search_fs_uuid + insmod chain + search --fs-uuid --set=root ${ESP_SEARCH_HINTS} ${WIN_EFI_UUID} + chainloader $WIN_EFI_PATH_LINUX +} +EOF + +fi diff --git a/system/boot/grub2/pspec.xml b/system/boot/grub2/pspec.xml index 98b52e5f..9360cb87 100644 --- a/system/boot/grub2/pspec.xml +++ b/system/boot/grub2/pspec.xml @@ -105,13 +105,20 @@ pisi-grub-bg.png grub-defaults - 30_uefi-firmware + 30_uefi-firmware-new update-grub 30_os-prober2 + + 2024-07-11 + 2.12 + Rebuild. + Mustafa Cinasal + muscnsl@gmail.com + 2024-06-09 2.12