12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #! /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 <http://www.gnu.org/licenses/>.
- 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
|