Package: grub-common
Version: 2.14-1
Severity: normal

After upgrading grub from 2.12-9 to 2.14-1, I now have

cventin:~> ll /etc/systemd/system/**/*grub*
lrwxrwxrwx 1 root root 44 2026-02-10 17:06:40 
/etc/systemd/system/hibernate.target.wants/grub2-common.service -> 
/usr/lib/systemd/system/grub2-common.service
lrwxrwxrwx 1 root root 43 2024-01-24 12:35:11 
/etc/systemd/system/hibernate.target.wants/grub-common.service -> 
/usr/lib/systemd/system/grub-common.service
lrwxrwxrwx 1 root root 44 2026-02-10 17:06:40 
/etc/systemd/system/hybrid-sleep.target.wants/grub2-common.service -> 
/usr/lib/systemd/system/grub2-common.service
lrwxrwxrwx 1 root root 43 2024-01-24 12:35:11 
/etc/systemd/system/hybrid-sleep.target.wants/grub-common.service -> 
/usr/lib/systemd/system/grub-common.service
lrwxrwxrwx 1 root root 44 2026-02-10 17:06:40 
/etc/systemd/system/multi-user.target.wants/grub2-common.service -> 
/usr/lib/systemd/system/grub2-common.service
lrwxrwxrwx 1 root root 43 2024-01-24 12:35:11 
/etc/systemd/system/multi-user.target.wants/grub-common.service -> 
/usr/lib/systemd/system/grub-common.service
lrwxrwxrwx 1 root root 44 2026-02-10 17:06:40 
/etc/systemd/system/suspend-then-hibernate.target.wants/grub2-common.service -> 
/usr/lib/systemd/system/grub2-common.service
lrwxrwxrwx 1 root root 43 2024-01-24 12:35:11 
/etc/systemd/system/suspend-then-hibernate.target.wants/grub-common.service -> 
/usr/lib/systemd/system/grub-common.service
lrwxrwxrwx 1 root root 44 2026-02-10 17:06:40 
/etc/systemd/system/suspend.target.wants/grub2-common.service -> 
/usr/lib/systemd/system/grub2-common.service
lrwxrwxrwx 1 root root 43 2024-01-24 12:35:11 
/etc/systemd/system/suspend.target.wants/grub-common.service -> 
/usr/lib/systemd/system/grub-common.service

where /usr/lib/systemd/system/grub-common.service no longer exists.

It seems that symlinks to /usr/lib/systemd/system/grub2-common.service
have been created, but the old symlinks have not been removed.

The installed grub packages:
grub-common, grub-pc, grub-pc-bin, grub2-common.

-- Package-specific info:

*********************** BEGIN /proc/mounts
/dev/sda5 / ext4 rw,relatime,errors=remount-ro 0 0
*********************** END /proc/mounts

*********************** BEGIN /boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi

if [ "${env_block}" ] ; then
  set env_block="(${root})${env_block}"
  export env_block
  load_env -f "${env_block}"
fi

if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   if [ "${env_block}" ] ; then
     save_env -f "${env_block}" next_entry
   else
     save_env next_entry
   fi
   set boot_once=true
else
   set default="${saved_entry}"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    if [ "${env_block}" ] ; then
      save_env -f "${env_block}" saved_entry
    else
      save_env saved_entry
    fi

  fi
}
function load_video {
  if [ x$grub_platform = xefi ]; then
    insmod efi_gop
    insmod efi_uga
  elif [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 
--hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  
4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
else
  search --no-floppy --fs-uuid --set=root 4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=1024x768 640x480
  load_video
  insmod gfxterm
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
  set timeout=30
else
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
    set timeout=5
  # Fallback normal timeout code in case the timeout_style feature is
  # unavailable.
  else
    set timeout=5
  fi
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 
--hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  
4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
else
  search --no-floppy --fs-uuid --set=root 4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
fi
insmod png
if background_image 
"/usr/share/desktop-base/ceratopsian-theme/grub/grub-4x3.png"; then
  set color_normal=white/black
  set color_highlight=black/white
else
  set menu_color_normal=cyan/blue
  set menu_color_highlight=white/blue
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
        set gfxpayload="${1}"
}
set linux_gfx_mode=keep
export linux_gfx_mode
menuentry 'Debian GNU/Linux, with Linux 6.18.8+deb14-amd64' --class debian 
--class gnu-linux --class gnu --class os $menuentry_id_option 
'gnulinux-6.18.8+deb14-amd64-advanced-4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0' {
        savedefault
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 
--hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  
4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
        else
          search --no-floppy --fs-uuid --set=root 
4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
        fi
        echo    'Loading Linux 6.18.8+deb14-amd64 ...'
        linux   /boot/vmlinuz-6.18.8+deb14-amd64 
root=UUID=4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0 ro  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-6.18.8+deb14-amd64
}
menuentry 'Debian GNU/Linux, with Linux 6.18.8+deb14-amd64 (recovery mode)' 
--class debian --class gnu-linux --class gnu --class os $menuentry_id_option 
'gnulinux-6.18.8+deb14-amd64-recovery-4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0' {
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 
--hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  
4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
        else
          search --no-floppy --fs-uuid --set=root 
4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
        fi
        echo    'Loading Linux 6.18.8+deb14-amd64 ...'
        linux   /boot/vmlinuz-6.18.8+deb14-amd64 
root=UUID=4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0 ro single dis_ucode_ldr 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-6.18.8+deb14-amd64
}
menuentry 'Debian GNU/Linux, with Linux 6.18.5+deb14-amd64' --class debian 
--class gnu-linux --class gnu --class os $menuentry_id_option 
'gnulinux-6.18.5+deb14-amd64-advanced-4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0' {
        savedefault
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 
--hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  
4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
        else
          search --no-floppy --fs-uuid --set=root 
4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
        fi
        echo    'Loading Linux 6.18.5+deb14-amd64 ...'
        linux   /boot/vmlinuz-6.18.5+deb14-amd64 
root=UUID=4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0 ro  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-6.18.5+deb14-amd64
}
menuentry 'Debian GNU/Linux, with Linux 6.18.5+deb14-amd64 (recovery mode)' 
--class debian --class gnu-linux --class gnu --class os $menuentry_id_option 
'gnulinux-6.18.5+deb14-amd64-recovery-4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0' {
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 
--hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  
4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
        else
          search --no-floppy --fs-uuid --set=root 
4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0
        fi
        echo    'Loading Linux 6.18.5+deb14-amd64 ...'
        linux   /boot/vmlinuz-6.18.5+deb14-amd64 
root=UUID=4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0 ro single dis_ucode_ldr 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-6.18.5+deb14-amd64
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/25_bli ###
if [ "$grub_platform" = "efi" ]; then
  insmod bli
fi
### END /etc/grub.d/25_bli ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
if [ "$grub_platform" = "efi" ]; then
        fwsetup --is-supported
        if [ "$?" = 0 ]; then
                menuentry 'UEFI Firmware Settings' $menuentry_id_option 
'uefi-firmware' {
                        fwsetup
                }
        fi
fi
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg
fi
### END /etc/grub.d/41_custom ###
*********************** END /boot/grub/grub.cfg

*********************** BEGIN /proc/mdstat
cat: /proc/mdstat: No such file or directory
*********************** END /proc/mdstat

*********************** BEGIN /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root  9 2026-02-10 17:11:25 
ata-HL-DT-ST_DVD+_-RW_GHB0N_K74ECIG5041 -> ../../sr1
lrwxrwxrwx 1 root root  9 2026-02-10 17:11:29 
ata-HL-DT-ST_DVD+_-RW_GTA0N_KZIF4DG4119 -> ../../sr0
lrwxrwxrwx 1 root root  9 2026-02-10 17:11:24 
ata-SK_hynix_SH920_2.5_7MM_512GB_1I45N12261160645N -> ../../sda
lrwxrwxrwx 1 root root 10 2026-02-10 17:11:24 
ata-SK_hynix_SH920_2.5_7MM_512GB_1I45N12261160645N-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 2026-02-10 17:11:24 
ata-SK_hynix_SH920_2.5_7MM_512GB_1I45N12261160645N-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 2026-02-10 17:11:24 
ata-SK_hynix_SH920_2.5_7MM_512GB_1I45N12261160645N-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 2026-02-10 17:11:24 
ata-SK_hynix_SH920_2.5_7MM_512GB_1I45N12261160645N-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 2026-02-10 17:11:24 
ata-SK_hynix_SH920_2.5_7MM_512GB_1I45N12261160645N-part6 -> ../../sda6
lrwxrwxrwx 1 root root  9 2026-02-10 17:11:25 wwn-0x5001480000000000 -> 
../../sr1
*********************** END /dev/disk/by-id

*********************** BEGIN /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 2026-02-10 17:11:24 
3a31982a-76fe-493b-a6b0-a627706c26c7 -> ../../sda6
lrwxrwxrwx 1 root root 10 2026-02-10 17:11:24 
4bcb3bbd-f516-4ddf-be96-6fa3a8cdc8a0 -> ../../sda5
lrwxrwxrwx 1 root root 10 2026-02-10 17:11:24 5450-4444 -> ../../sda1
lrwxrwxrwx 1 root root 10 2026-02-10 17:11:24 F07B-1091 -> ../../sda2
*********************** END /dev/disk/by-uuid

-- System Information:
Debian Release: forky/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'stable-updates'), (500, 
'stable-security'), (500, 'stable-debug'), (500, 'proposed-updates-debug'), 
(500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.18.8+deb14-amd64 (SMP w/12 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages grub-common depends on:
ii  grub2-common  2.14-1

grub-common recommends no packages.

grub-common suggests no packages.

-- Configuration Files:
/etc/grub.d/00_header changed:
set -e
prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
grub_lang=`echo $LANG | cut -d . -f 1`
grubdir="`echo "/boot/grub" | sed 's,//*,/,g'`"
quick_boot="0"
export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"
. "$pkgdatadir/grub-mkconfig_lib"
for i in ${GRUB_PRELOAD_MODULES} ; do
  echo "insmod $i"
done
if [ "x${GRUB_DEFAULT}" = "x" ] ; then GRUB_DEFAULT=0 ; fi
if [ "x${GRUB_DEFAULT}" = "xsaved" ] ; then GRUB_DEFAULT='${saved_entry}' ; fi
if [ "x${GRUB_TIMEOUT}" = "x" ] ; then GRUB_TIMEOUT=5 ; fi
if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=auto ; fi
if [ "x${GRUB_DEFAULT_BUTTON}" = "x" ] ; then 
GRUB_DEFAULT_BUTTON="$GRUB_DEFAULT" ; fi
if [ "x${GRUB_DEFAULT_BUTTON}" = "xsaved" ] ; then 
GRUB_DEFAULT_BUTTON='${saved_entry}' ; fi
if [ "x${GRUB_TIMEOUT_BUTTON}" = "x" ] ; then 
GRUB_TIMEOUT_BUTTON="$GRUB_TIMEOUT" ; fi
cat << EOF
if [ -s \$prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
if [ "\${env_block}" ] ; then
  set env_block="(\${root})\${env_block}"
  export env_block
  load_env -f "\${env_block}"
fi
EOF
if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
    cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
   set default="${GRUB_DEFAULT_BUTTON}"
elif [ "\${next_entry}" ] ; then
   set default="\${next_entry}"
   set next_entry=
   if [ "\${env_block}" ] ; then
     save_env -f "\${env_block}" next_entry
   else
     save_env next_entry
   fi
   set boot_once=true
else
   set default="${GRUB_DEFAULT}"
fi
EOF
else
    cat <<EOF
if [ "\${next_entry}" ] ; then
   set default="\${next_entry}"
   set next_entry=
   if [ "\${env_block}" ] ; then
     save_env -f "\${env_block}" next_entry
   else
     save_env next_entry
   fi
   set boot_once=true
else
   set default="${GRUB_DEFAULT}"
fi
EOF
fi
cat <<EOF
if [ x"\${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi
export menuentry_id_option
if [ "\${prev_saved_entry}" ]; then
  set saved_entry="\${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi
function savedefault {
  if [ -z "\${boot_once}" ]; then
    saved_entry="\${chosen}"
    if [ "\${env_block}" ] ; then
      save_env -f "\${env_block}" saved_entry
    else
      save_env saved_entry
    fi
  fi
}
EOF
if [ "$quick_boot" = 1 ]; then
    cat <<EOF
function recordfail {
  set recordfail=1
EOF
  check_writable () {
    abstractions="$(grub-probe --target=abstraction "${grubdir}")"
    for abstraction in $abstractions; do
      case "$abstraction" in
        diskfilter | lvm)
          cat <<EOF
  # GRUB lacks write support for $abstraction, so recordfail support is 
disabled.
EOF
          return 1
          ;;
      esac
    done
    FS="$(grub-probe --target=fs "${grubdir}")"
    case "$FS" in
      btrfs | cpiofs | newc | odc | romfs | squash4 | tarfs | zfs)
        cat <<EOF
  # GRUB lacks write support for $FS, so recordfail support is disabled.
EOF
        return 1
        ;;
    esac
    cat <<EOF
  if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env 
recordfail; fi; fi
EOF
  }
  if ! check_writable; then
    recordfail_broken=1
  fi
  cat <<EOF
}
EOF
fi
cat <<EOF
function load_video {
EOF
if [ -n "${GRUB_VIDEO_BACKEND}" ]; then
    cat <<EOF
  insmod ${GRUB_VIDEO_BACKEND}
EOF
else
if [ "${GRUB_FORCE_EFI_ALL_VIDEO}" = "1" ]; then
    cat <<EOF
  if [ x\$feature_all_video_module = xy ]; then
EOF
else # GRUB_FORCE_EFI_ALL_VIDEO is not set true
    cat <<EOF
  if [ x\$grub_platform = xefi ]; then
    insmod efi_gop
    insmod efi_uga
  elif [ x\$feature_all_video_module = xy ]; then
EOF
fi # end GRUB_FORCE_EFI_ALL_VIDEO
cat <<EOF
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
EOF
fi
cat <<EOF
}
EOF
serial=0;
gfxterm=0;
for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do
    if [ xserial = "x$x" ]; then
        serial=1;
    fi
    if [ xgfxterm = "x$x" ]; then
        gfxterm=1;
    fi
done
if [ "x$serial" = x1 ]; then
    if [ "x${GRUB_SERIAL_COMMAND}" = "x" ] ; then
        grub_warn "$(gettext "Requested serial terminal but GRUB_SERIAL_COMMAND 
is unspecified. Default parameters will be used.")"
        GRUB_SERIAL_COMMAND=serial
    fi
    echo "${GRUB_SERIAL_COMMAND}"
fi
if [ "x$gfxterm" = x1 ]; then
    if [ -n "$GRUB_FONT" ] ; then
       # Make the font accessible
       prepare_grub_to_access_device `${grub_probe} --target=device 
"${GRUB_FONT}"`
    cat << EOF
if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT}"` ; then
EOF
    else
        for dir in "${pkgdatadir}" "`echo '/boot/grub' | sed "s,//*,/,g"`" 
/usr/share/grub ; do
            for basename in unicode unifont ascii; do
                path="${dir}/${basename}.pf2"
                if is_path_readable_by_grub "${path}" > /dev/null ; then
                    font_path="${path}"
                else
                    continue
                fi
                break 2
            done
        done
        if [ -n "${font_path}" ] ; then
    cat << EOF
if [ x\$feature_default_font_path = xy ] ; then
   font=unicode
else
EOF
                # Make the font accessible
                prepare_grub_to_access_device `${grub_probe} --target=device 
"${font_path}"`
    cat << EOF
    font="`make_system_path_relative_to_its_root "${font_path}"`"
fi
if loadfont \$font ; then
EOF
            else
    cat << EOF
if loadfont unicode ; then
EOF
            fi
        fi
    cat << EOF
  set gfxmode=${GRUB_GFXMODE}
  load_video
  insmod gfxterm
EOF
if [ "x${grub_lang}" != "xC" ] && [ "x${LANG}" != "xPOSIX" ] && [ "x${LANG}" != 
"x" ]; then
  cat << EOF
  set locale_dir=\$prefix/locale
  set lang=${grub_lang}
  insmod gettext
EOF
fi
cat <<EOF
fi
EOF
fi
case x${GRUB_TERMINAL_INPUT} in
  x)
    # Just use the native terminal
  ;;
  x*)
    cat << EOF
terminal_input ${GRUB_TERMINAL_INPUT}
EOF
  ;;
esac
case x${GRUB_TERMINAL_OUTPUT} in
  x)
    # Just use the native terminal
  ;;
  x*)
    cat << EOF
terminal_output ${GRUB_TERMINAL_OUTPUT}
EOF
  ;;
esac
if [ "x$gfxterm" = x1 ]; then
    if [ "x$GRUB_THEME" != x ] && [ -f "$GRUB_THEME" ] \
        && is_path_readable_by_grub "$GRUB_THEME"; then
        gettext_printf "Found theme: %s\n" "$GRUB_THEME" >&2
        prepare_grub_to_access_device `${grub_probe} --target=device 
"$GRUB_THEME"`
        cat << EOF
insmod gfxmenu
EOF
        themedir="`dirname "$GRUB_THEME"`"
        for x in "$themedir"/*.pf2 "$themedir"/f/*.pf2; do
            if [ -f "$x" ]; then
                cat << EOF
loadfont (\$root)`make_system_path_relative_to_its_root $x`
EOF
            fi
        done
        if [ x"`echo "$themedir"/*.jpg`" != x"$themedir/*.jpg" ] || [ x"`echo 
"$themedir"/*.jpeg`" != x"$themedir/*.jpeg" ]; then
            cat << EOF
insmod jpeg
EOF
        fi
        if [ x"`echo "$themedir"/*.png`" != x"$themedir/*.png" ]; then
            cat << EOF
insmod png
EOF
        fi
        if [ x"`echo "$themedir"/*.tga`" != x"$themedir/*.tga" ]; then
            cat << EOF
insmod tga
EOF
        fi
            
        cat << EOF
set theme=(\$root)`make_system_path_relative_to_its_root $GRUB_THEME`
export theme
EOF
    elif [ "x$GRUB_BACKGROUND" != x ] && [ -f "$GRUB_BACKGROUND" ] \
            && is_path_readable_by_grub "$GRUB_BACKGROUND"; then
        gettext_printf "Found background: %s\n" "$GRUB_BACKGROUND" >&2
        case "$GRUB_BACKGROUND" in 
            *.png)         reader=png ;;
            *.tga)         reader=tga ;;
            *.jpg|*.jpeg)  reader=jpeg ;;
            *)             gettext "Unsupported image format" >&2; echo >&2; 
exit 1 ;;
        esac
        prepare_grub_to_access_device `${grub_probe} --target=device 
"$GRUB_BACKGROUND"`
        cat << EOF
insmod $reader
background_image -m stretch "`make_system_path_relative_to_its_root 
"$GRUB_BACKGROUND"`"
EOF
    fi
fi
make_timeout ()
{
    cat << EOF
if [ "\${recordfail}" = 1 ] ; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
else
EOF
    if [ "x${3}" != "x" ] ; then
        timeout="${2}"
        style="${3}"
    elif [ "x${1}" != "x" ] && \
         ([ "$quick_boot" = 1 ] || [ "x${1}" != "x0" ]) ; then
        # Handle the deprecated GRUB_HIDDEN_TIMEOUT scheme.
        timeout="${1}"
        if [ "x${2}" != "x0" ] ; then
            grub_warn "$(gettext "Setting GRUB_TIMEOUT to a non-zero value when 
GRUB_HIDDEN_TIMEOUT is set is no longer supported.")"
        fi
        if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
            style="hidden"
            verbose=
        else
            style="countdown"
            verbose=" --verbose"
        fi
    else
        # No hidden timeout, so treat as GRUB_TIMEOUT_STYLE=menu
        timeout="${2}"
        style="menu"
    fi
    cat << EOF
  if [ x\$feature_timeout_style = xy ] ; then
    set timeout_style=${style}
    set timeout=${timeout}
EOF
    if [ "x${style}" = "xmenu" ] ; then
        cat << EOF
  # Fallback normal timeout code in case the timeout_style feature is
  # unavailable.
  else
    set timeout=${timeout}
EOF
    else
        cat << EOF
  # Fallback hidden-timeout code in case the timeout_style feature is
  # unavailable.
  elif sleep${verbose} --interruptible ${timeout} ; then
    set timeout=0
EOF
    fi
    cat << EOF
  fi
fi
EOF
if [ "$recordfail_broken" = 1 ]; then
  cat << EOF
if [ \$grub_platform = efi ]; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
  if [ x\$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi
EOF
fi
}
if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
    cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
EOF
make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}" 
"${GRUB_TIMEOUT_STYLE_BUTTON}"
echo else
make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}" "${GRUB_TIMEOUT_STYLE}"
echo fi
else
make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}" "${GRUB_TIMEOUT_STYLE}"
fi
if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ] && [ "x$GRUB_BUTTON_CMOS_CLEAN" = 
"xyes" ]; then
    cat <<EOF
cmosclean $GRUB_BUTTON_CMOS_ADDRESS
EOF
fi
if [ "x${GRUB_INIT_TUNE}" != "x" ] ; then
  echo "play ${GRUB_INIT_TUNE}"
fi
if [ "x${GRUB_BADRAM}" != "x" ] ; then
  echo "badram ${GRUB_BADRAM}"
fi

/etc/grub.d/05_debian_theme changed:
set -e
. /usr/share/grub/grub-mkconfig_lib
test -d /boot/grub; cd /boot/grub
BACKGROUND_CACHE=".background_cache"
set_default_theme(){
        case $GRUB_DISTRIBUTOR in
                Ubuntu|Kubuntu)
                        # Set a monochromatic theme for Ubuntu.
                        echo "${1}set menu_color_normal=white/black"
                        echo "${1}set menu_color_highlight=black/light-gray"
                        if [ -e /usr/share/plymouth/themes/default.grub ]; then
                                sed "s/^/${1}/" 
/usr/share/plymouth/themes/default.grub
                        fi
                        # For plymouth backward compatibility. Can be removed
                        # after xenial.
                        if [ -e /lib/plymouth/themes/default.grub ]; then
                                sed "s/^/${1}/" 
/lib/plymouth/themes/default.grub
                        fi
                        ;;
                *)
                        # Set the traditional Debian blue theme.
                        echo "${1}set menu_color_normal=cyan/blue"
                        echo "${1}set menu_color_highlight=white/blue"
                        ;;
        esac
}
module_available(){
        local module
        for module in "${1}.mod" */"${1}.mod"; do
                if [ -f "${module}" ]; then
                        return 0
                fi
        done
        return 1
}
set_background_image(){
        # Step #1: Search all available output modes ...
        local output
        for output in ${GRUB_TERMINAL_OUTPUT}; do
                if [ "x$output" = "xgfxterm" ]; then
                        break
                fi
        done
        # ... and check if we are able to display a background image at all.
        if ! [ "x${output}" = "xgfxterm" ]; then
                return 1
        fi
        # Step #2: Check if the specified background image exists.
        if ! [ -f "${1}" ]; then
                return 2
        fi
        # Step #3: Search the correct GRUB module for our background image.
        local reader
        case "${1}" in
                *.jpg|*.JPG|*.jpeg|*.JPEG) reader="jpeg";;
                *.png|*.PNG) reader="png";;
                *.tga|*.TGA) reader="tga";;
                *) return 3;; # Unknown image type.
        esac
        # Step #4: Check if the necessary GRUB module is available.
        if ! module_available "${reader}"; then
                return 4
        fi
        # Step #5: Check if GRUB can read the background image directly and
        # it is in the same filesystem as /boot/grub.
        # If so, we can remove the cache file (if any). Otherwise the background
        # image needs to be cached under /boot/grub/.
        if is_path_readable_by_grub "${1}" &&
           [ "`${grub_probe} --target=device "${1}"`" = "`${grub_probe} 
--target=device .`" ]; then
                rm --force "${BACKGROUND_CACHE}.jpeg" \
                        "${BACKGROUND_CACHE}.png" "${BACKGROUND_CACHE}.tga"
        elif cp "${1}" "${BACKGROUND_CACHE}.${reader}"; then
                set -- "${BACKGROUND_CACHE}.${reader}" "${2}" "${3}"
        else
                return 5
        fi
        # Step #6: Prepare GRUB to read the background image.
        if ! prepare_grub_to_access_device "`${grub_probe} --target=device 
"${1}"`"; then
                return 6
        fi
        # Step #7: Everything went fine, print out a message to stderr ...
        echo "Found background image: ${1}" >&2
        # ... and write our configuration snippet to stdout. Use the colors
        # desktop-base specified. If we're using a user-defined background, use
        # the default colors since we've got no idea how the image looks like.
        # If loading the background image fails, use the default theme.
        echo "insmod ${reader}"
        echo "if background_image \"`make_system_path_relative_to_its_root 
"${1}"`\"; then"
        if [ -n "${2}" ]; then
                echo "  set color_normal=${2}"
        fi
        if [ -n "${3}" ]; then
                echo "  set color_highlight=${3}"
        fi
        if [ -z "${2}" ] && [ -z "${3}" ]; then
                echo "  true"
        fi
        echo "else"
        set_default_theme "  "
        echo "fi"
}
while read checksum background; do
        if [ -f "${background}" ] && [ "x`sha1sum "${background}"`" = 
"x${checksum}  ${background}" ]; then
                echo "Removing old background image: ${background}" >&2
                rm "${background}"
        fi
done <<EOF
648ee65dd0c157a69b019a5372cbcfea4fc754a5  debian-blueish-wallpaper-640x480.png
0431e97a6c661084c59676c4baeeb8c2f602edb8  debian-blueish-wallpaper-640x480.png
968ecf6696c5638cfe80e8e70aba239526270864  debian-blueish-wallpaper-640x480.tga
11143e8c92a073401de0b0fd42d0c052af4ccd9b  moreblue-orbit-grub.png
d00d5e505ab63f2d53fa880bfac447e2d3bb197c  moreblue-orbit-grub.png
f5b12c1009ec0a3b029185f6b66cd0d7e5611019  moreblue-orbit-grub.png
EOF
if [ -f "/usr/share/desktop-base/grub_background.sh" ]; then
        . "/usr/share/desktop-base/grub_background.sh"
fi
if [ -n "${GRUB_BACKGROUND+x}" ]; then
        set_background_image "${GRUB_BACKGROUND}" || set_default_theme
        exit 0
fi
for background in *.jpg *.JPG *.jpeg *.JPEG *.png *.PNG *.tga *.TGA; do
        if set_background_image "${background}"; then
                exit 0
        fi
done
if set_background_image "${WALLPAPER}" "${COLOR_NORMAL}" "${COLOR_HIGHLIGHT}"; 
then
        exit 0
fi
case $GRUB_DISTRIBUTOR in
        Ubuntu|Kubuntu)
                ;;
        *)
                if set_background_image 
"/usr/share/images/desktop-base/desktop-grub.png"; then
                        exit 0
                fi
                ;;
esac
set_default_theme

/etc/grub.d/10_linux changed:
set -e
prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
ubuntu_recovery="0"
quiet_boot="0"
quick_boot="0"
gfxpayload_dynamic="0"
vt_handoff="0"
. "$pkgdatadir/grub-mkconfig_lib"
export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"
CLASS="--class gnu-linux --class gnu --class os"
if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
  OS=GNU/Linux
else
  case ${GRUB_DISTRIBUTOR} in
    Ubuntu|*GNU/Linux)
      OS="${GRUB_DISTRIBUTOR}"
      ;;
    *)
      OS="${GRUB_DISTRIBUTOR} GNU/Linux"
      ;;
  esac
  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' 
-f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
fi
case ${GRUB_DEVICE} in
  /dev/loop/*|/dev/loop[0-9])
    GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
  ;;
esac
if [ -x /lib/recovery-mode/recovery-menu ]; then
    : ${GRUB_CMDLINE_LINUX_RECOVERY:=recovery}
else
    : ${GRUB_CMDLINE_LINUX_RECOVERY:=single}
fi
: ${GRUB_DISABLE_LINUX_PARTUUID=true}
if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) 
\
    || ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
        && [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \
    || ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
        && ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \
    || ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); 
then
  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \
    || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then
  LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID}
else
  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi
case x"$GRUB_FS" in
    xbtrfs)
        rootsubvol="`make_system_path_relative_to_its_root /`"
        rootsubvol="${rootsubvol#/}"
        if [ "x${rootsubvol}" != x ]; then
            GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} 
${GRUB_CMDLINE_LINUX}"
        fi;;
    xzfs)
        rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 
2>/dev/null || zdb -l ${GRUB_DEVICE} | awk -F \' '/ name/ { print $2 }'`
        bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
        LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs%/}"
        ;;
esac
title_correction_code=
if [ "$ubuntu_recovery" = 1 ]; then
    GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY nomodeset"
fi
if [ "$vt_handoff" = 1 ]; then
  for word in $GRUB_CMDLINE_LINUX_DEFAULT; do
    if [ "$word" = splash ]; then
      GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \$vt_handoff"
    fi
  done
fi
linux_entry ()
{
  os="$1"
  version="$2"
  type="$3"
  args="$4"
  if [ -z "$boot_device_id" ]; then
      boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
  fi
  if [ x$type != xsimple ] ; then
      case $type in
          recovery)
              title="$(gettext_printf "%s, with Linux %s (%s)" "${os}" 
"${version}" "$(gettext "${GRUB_RECOVERY_TITLE}")")" ;;
          *)
              title="$(gettext_printf "%s, with Linux %s" "${os}" 
"${version}")" ;;
      esac
      if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux 
versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
          replacement_title="$(echo "Advanced options for ${OS}" | sed 
's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
          quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
          title_correction_code="${title_correction_code}if [ \"x\$default\" = 
'$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
          grub_warn "$(gettext_printf "Please don't use old title \`%s' for 
GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or 
later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" 
"gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
      fi
      echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} 
\$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed 
"s/^/$submenu_indentation/"
  else
      echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} 
\$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed 
"s/^/$submenu_indentation/"
  fi      
  if [ "$quick_boot" = 1 ]; then
      echo "    recordfail" | sed "s/^/$submenu_indentation/"
  fi
  if [ x$type != xrecovery ] ; then
      save_default_entry | grub_add_tab
  fi
  # Use ELILO's generic "efifb" when it's known to be available.
  # FIXME: We need an interface to select vesafb in case efifb can't be used.
  if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
      echo "    load_video" | sed "s/^/$submenu_indentation/"
  else
      if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
          echo "        load_video" | sed "s/^/$submenu_indentation/"
      fi
  fi
  if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \
     ([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then
      echo "    gfxmode \$linux_gfx_mode" | sed "s/^/$submenu_indentation/"
  fi
  echo "        insmod gzio" | sed "s/^/$submenu_indentation/"
  echo "        if [ x\$grub_platform = xxen ]; then insmod xzio; insmod 
lzopio; fi" | sed "s/^/$submenu_indentation/"
  if [ x$dirname = x/ ]; then
    if [ -z "${prepare_root_cache}" ]; then
      prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | 
grub_add_tab)"
    fi
    printf '%s\n' "${prepare_root_cache}" | sed "s/^/$submenu_indentation/"
  else
    if [ -z "${prepare_boot_cache}" ]; then
      prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | 
grub_add_tab)"
    fi
    printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
  fi
  if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
    message="$(gettext_printf "Loading Linux %s ..." ${version})"
    sed "s/^/$submenu_indentation/" << EOF
        echo    '$(echo "$message" | grub_quote)'
EOF
  fi
  sed "s/^/$submenu_indentation/" << EOF
        linux   ${rel_dirname}/${basename} 
root=${linux_root_device_thisversion} ro ${args}
EOF
  if test -n "${initrd}" ; then
    # TRANSLATORS: ramdisk isn't identifier. Should be translated.
    if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
      message="$(gettext_printf "Loading initial ramdisk ...")"
      sed "s/^/$submenu_indentation/" << EOF
        echo    '$(echo "$message" | grub_quote)'
EOF
    fi
    initrd_path=
    for i in ${initrd}; do
      initrd_path="${initrd_path} ${rel_dirname}/${i}"
    done
    sed "s/^/$submenu_indentation/" << EOF
        initrd  $(echo $initrd_path)
EOF
  fi
  sed "s/^/$submenu_indentation/" << EOF
}
EOF
}
machine=`uname -m`
case "x$machine" in
    xi?86 | xx86_64)
        list=
        for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
            if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
        done ;;
    *) 
        list=
        for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* 
/boot/kernel-* ; do
                  if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
        done ;;
esac
case "$machine" in
    i?86) GENKERNEL_ARCH="x86" ;;
    mips|mips64) GENKERNEL_ARCH="mips" ;;
    mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
    arm*) GENKERNEL_ARCH="arm" ;;
    *) GENKERNEL_ARCH="$machine" ;;
esac
case "$GENKERNEL_ARCH" in
  x86*) GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY 
dis_ucode_ldr";;
esac
prepare_boot_cache=
prepare_root_cache=
boot_device_id=
title_correction_code=
cat << 'EOF'
function gfxmode {
        set gfxpayload="${1}"
EOF
if [ "$vt_handoff" = 1 ]; then
  cat << 'EOF'
        if [ "${1}" = "keep" ]; then
                set vt_handoff=vt.handoff=7
        else
                set vt_handoff=
        fi
EOF
fi
cat << EOF
}
EOF
if [ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 0 ]; then
  echo "set linux_gfx_mode=$GRUB_GFXPAYLOAD_LINUX"
else
  cat << EOF
if [ "\${recordfail}" != 1 ]; then
  if [ -e \${prefix}/gfxblacklist.txt ]; then
    if [ \${grub_platform} != pc ]; then
      set linux_gfx_mode=keep
    elif hwmatch \${prefix}/gfxblacklist.txt 3; then
      if [ \${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
EOF
fi
cat << EOF
export linux_gfx_mode
EOF
submenu_indentation=""
reverse_sorted_list=$(echo $list | tr ' ' '\n' | sed -e 's/\.old$/ 1/; / 1$/! 
s/$/ 2/' | version_sort -r | sed -e 's/ 1$/.old/; s/ 2$//')
if [ "x$GRUB_TOP_LEVEL" != x ]; then
  reverse_sorted_list=$(grub_move_to_front "$GRUB_TOP_LEVEL" 
${reverse_sorted_list})
fi
is_top_level=true
for linux in ${reverse_sorted_list}; do
  gettext_printf "Found linux image: %s\n" "$linux" >&2
  basename=`basename $linux`
  dirname=`dirname $linux`
  rel_dirname=`make_system_path_relative_to_its_root $dirname`
  version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
  alt_version=`echo $version | sed -e "s,\.old$,,g"`
  linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
  initrd_early=
  for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \
           ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do
    if test -e "${dirname}/${i}" ; then
      initrd_early="${initrd_early} ${i}"
    fi
  done
  initrd_real=
  for i in "initrd.img-${version}" "initrd-${version}.img" \
           "initrd-${alt_version}.img.old" "initrd-${version}.gz" \
           "initrd-${alt_version}.gz.old" "initrd-${version}" \
           "initramfs-${version}.img" "initramfs-${alt_version}.img.old" \
           "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
           "initrd-${alt_version}" "initramfs-${alt_version}.img" \
           "initramfs-genkernel-${version}" \
           "initramfs-genkernel-${alt_version}" \
           "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
           "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
    if test -e "${dirname}/${i}" ; then
      initrd_real="${i}"
      break
    fi
  done
  initrd=
  if test -n "${initrd_early}" || test -n "${initrd_real}"; then
    initrd="${initrd_early} ${initrd_real}"
    initrd_display=
    for i in ${initrd}; do
      initrd_display="${initrd_display} ${dirname}/${i}"
    done
    gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
  fi
  config=
  for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" 
"/etc/kernels/kernel-config-${version}" ; do
    if test -e "${i}" ; then
      config="${i}"
      break
    fi
  done
  initramfs=
  if test -n "${config}" ; then
      initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr 
-d \"`
  fi
  if test -z "${initramfs}" && test -z "${initrd_real}" ; then
    # "UUID=" and "ZFS=" magic is parsed by initrd or initramfs.  Since there's
    # no initrd or builtin initramfs, it can't work here.
    if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
        || [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then
        linux_root_device_thisversion=${GRUB_DEVICE}
    else
        linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID}
    fi
  fi
  # The GRUB_DISABLE_SUBMENU option used to be different than others since it 
was
  # mentioned in the documentation that has to be set to 'y' instead of 'true' 
to
  # enable it. This caused a lot of confusion to users that set the option to 
'y',
  # 'yes' or 'true'. This was fixed but all of these values must be supported 
now.
  if [ "x${GRUB_DISABLE_SUBMENU}" = xyes ] || [ "x${GRUB_DISABLE_SUBMENU}" = xy 
]; then
    GRUB_DISABLE_SUBMENU="true"
  fi
  if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; 
then
    linux_entry "${OS}" "${version}" simple \
    "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
    submenu_indentation="$grub_tab"
    
    if [ -z "$boot_device_id" ]; then
        boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
    fi
    # TRANSLATORS: %s is replaced with an OS name
    echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | 
grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
    is_top_level=false
  fi
  linux_entry "${OS}" "${version}" advanced \
              "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
  if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
    linux_entry "${OS}" "${version}" recovery \
                "${GRUB_CMDLINE_LINUX_RECOVERY} ${GRUB_CMDLINE_LINUX}"
  fi
done
if [ x"$is_top_level" != xtrue ]; then
  echo '}'
fi
echo "$title_correction_code"

/etc/grub.d/20_linux_xen changed:
set -e
prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
. "$pkgdatadir/grub-mkconfig_lib"
export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"
CLASS="--class gnu-linux --class gnu --class os --class xen"
if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
  OS=GNU/Linux
else
  OS="${GRUB_DISTRIBUTOR} GNU/Linux"
  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' 
-f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
fi
case ${GRUB_DEVICE} in
  /dev/loop/*|/dev/loop[0-9])
    GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
  ;;
esac
: ${GRUB_CMDLINE_LINUX_RECOVERY:=single}
: ${GRUB_DISABLE_LINUX_PARTUUID=true}
if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) 
\
    || ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
        && [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \
    || ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
        && ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \
    || ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); 
then
  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \
    || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then
  LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID}
else
  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi
if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE}" ]; then
  GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX_XEN_REPLACE}"
fi
if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}" ]; then
  GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}"
fi
case x"$GRUB_FS" in
    xbtrfs)
        rootsubvol="`make_system_path_relative_to_its_root /`"
        rootsubvol="${rootsubvol#/}"
        if [ "x${rootsubvol}" != x ]; then
            GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} 
${GRUB_CMDLINE_LINUX}"
        fi;;
    xzfs)
        rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 
2>/dev/null || zdb -l ${GRUB_DEVICE} | awk -F \' '/ name/ { print $2 }'`
        bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
        LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs%/}"
        ;;
esac
title_correction_code=
linux_entry ()
{
  linux_entry_xsm "$@" false
  linux_entry_xsm "$@" true
}
linux_entry_xsm ()
{
  os="$1"
  version="$2"
  entry_xen_version="$3"
  type="$4"
  args="$5"
  xen_args="$6"
  xsm="$7"
  # If user wants to enable XSM support, make sure there's
  # corresponding policy file.
  xenpolicy=
  if ${xsm} ; then
      xenpolicy="xenpolicy-$entry_xen_version"
      if test ! -e "${xen_dirname}/${xenpolicy}" ; then
          return
      fi
      xen_args="$xen_args flask=enforcing"
      entry_xen_version="$(gettext_printf "%s (XSM enabled)" 
"$entry_xen_version")"
      # entry_xen_version is used for messages only; actual file is xen_basename
  fi
  if [ -z "$boot_device_id" ]; then
      boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
  fi
  if [ x$type != xsimple ] ; then
      if [ x$type = xrecovery ] ; then
          title="$(gettext_printf "%s, with Xen %s and Linux %s (%s)" "${os}" 
"${entry_xen_version}" "${version}" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
      else
          title="$(gettext_printf "%s, with Xen %s and Linux %s" "${os}" 
"${entry_xen_version}" "${version}")"
      fi
      replacement_title="$(echo "Advanced options for ${OS}" | sed 
's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
      if [ x"Xen ${entry_xen_version}>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
         quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
         title_correction_code="${title_correction_code}if [ \"x\$default\" = 
'$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
         grub_warn "$(gettext_printf "Please don't use old title \`%s' for 
GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or 
later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" 
"gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
      fi
      echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} 
\$menuentry_id_option 'xen-gnulinux-$version-$type-$boot_device_id' {" | sed 
"s/^/$submenu_indentation/"
  else
      title="$(gettext_printf "%s, with Xen hypervisor" "${os}")"
      echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} 
\$menuentry_id_option 'xen-gnulinux-simple-$boot_device_id' {" | sed 
"s/^/$submenu_indentation/"
  fi
  if [ x$type != xrecovery ] ; then
      save_default_entry | grub_add_tab | sed "s/^/$submenu_indentation/"
  fi
  if [ -z "${prepare_boot_cache}" ]; then
    prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | 
grub_add_tab)"
  fi
  printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
  xmessage="$(gettext_printf "Loading Xen %s ..." ${entry_xen_version})"
  lmessage="$(gettext_printf "Loading Linux %s ..." ${version})"
  sed "s/^/$submenu_indentation/" << EOF
        echo    '$(echo "$xmessage" | grub_quote)'
        if [ "\$grub_platform" = "pc" -o "\$grub_platform" = "" ]; then
            xen_rm_opts=
        else
            xen_rm_opts="no-real-mode edd=off"
        fi
        ${xen_loader}   ${rel_xen_dirname}/${xen_basename} placeholder 
${xen_args} \${xen_rm_opts}
        echo    '$(echo "$lmessage" | grub_quote)'
        ${module_loader}        ${rel_dirname}/${basename} placeholder 
root=${linux_root_device_thisversion} ro ${args}
EOF
  if test -n "${initrd}" ; then
    # TRANSLATORS: ramdisk isn't identifier. Should be translated.
    message="$(gettext_printf "Loading initial ramdisk ...")"
    initrd_path=
    for i in ${initrd}; do
       initrd_path="${rel_dirname}/${i}"
       sed "s/^/$submenu_indentation/" << EOF
        echo    '$(echo "$message" | grub_quote)'
        ${module_loader}        --nounzip   $(echo $initrd_path)
EOF
    done
  fi
  if ${xsm} && test -n "${xenpolicy}" ; then
    message="$(gettext_printf "Loading XSM policy ...")"
    sed "s/^/$submenu_indentation/" << EOF
        echo    '$(echo "$message" | grub_quote)'
        ${module_loader}     ${rel_dirname}/${xenpolicy}
EOF
  fi
  sed "s/^/$submenu_indentation/" << EOF
}
EOF
}
linux_list=
for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
    if grub_file_is_not_garbage "$i"; then
        basename=$(basename $i)
        version=$(echo $basename | sed -e "s,^[^0-9]*-,,g")
        dirname=$(dirname $i)
        config=
        for j in "${dirname}/config-${version}" 
"${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
            if test -e "${j}" ; then
                config="${j}"
                break
            fi
        done
        if (grep -qx "CONFIG_XEN_DOM0=y" "${config}" 2> /dev/null || grep -qx 
"CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then 
linux_list="$linux_list $i" ; fi
    fi
done
if [ "x${linux_list}" = "x" ] ; then
    exit 0
fi
file_is_not_xen_garbage () {
    case "$1" in
        */xen-syms-*)
            return 1;;
        */xenpolicy-*)
            return 1;;
        */*.config)
            return 1;;
        *)
            return 0;;
    esac
}
xen_list=
for i in /boot/xen*; do
    if grub_file_is_not_garbage "$i" && file_is_not_xen_garbage "$i" ; then 
xen_list="$xen_list $i" ; fi
done
prepare_boot_cache=
boot_device_id=
title_correction_code=
machine=`uname -m`
case "$machine" in
    i?86) GENKERNEL_ARCH="x86" ;;
    mips|mips64) GENKERNEL_ARCH="mips" ;;
    mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
    arm*) GENKERNEL_ARCH="arm" ;;
    *) GENKERNEL_ARCH="$machine" ;;
esac
submenu_indentation=""
reverse_sorted_xen_list=$(echo ${xen_list} | tr ' ' '\n' | sed -e 's/\.old$/ 
1/; / 1$/! s/$/ 2/' | version_sort -r | sed -e 's/ 1$/.old/; s/ 2$//')
reverse_sorted_linux_list=$(echo ${linux_list} | tr ' ' '\n' | sed -e 
's/\.old$/ 1/; / 1$/! s/$/ 2/' | version_sort -r | sed -e 's/ 1$/.old/; s/ 
2$//')
if [ "x$GRUB_TOP_LEVEL_XEN" != x ]; then
  reverse_sorted_xen_list=$(grub_move_to_front "$GRUB_TOP_LEVEL_XEN" 
${reverse_sorted_xen_list})
fi
if [ "x$GRUB_TOP_LEVEL" != x ]; then
  reverse_sorted_linux_list=$(grub_move_to_front "$GRUB_TOP_LEVEL" 
${reverse_sorted_linux_list})
fi
is_top_level=true
for current_xen in ${reverse_sorted_xen_list}; do
    xen_basename=`basename ${current_xen}`
    xen_dirname=`dirname ${current_xen}`
    rel_xen_dirname=`make_system_path_relative_to_its_root $xen_dirname`
    xen_version=`echo $xen_basename | sed -e "s,.gz$,,g;s,^xen-,,g"`
    if [ -z "$boot_device_id" ]; then
        boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
    fi
    if [ "x$is_top_level" != xtrue ]; then
        echo "  submenu '$(gettext_printf "Xen hypervisor, version %s" 
"${xen_version}" | grub_quote)' \$menuentry_id_option 
'xen-hypervisor-$xen_version-$boot_device_id' {"
    fi
    if ($grub_file --is-arm64-efi $current_xen); then
        xen_loader="xen_hypervisor"
        module_loader="xen_module"
    else
        if ($grub_file --is-x86-multiboot2 $current_xen); then
            xen_loader="multiboot2"
            module_loader="module2"
        else
            xen_loader="multiboot"
            module_loader="module"
        fi
    fi
    initrd_early=
    for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \
             ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do
       if test -e "${xen_dirname}/${i}" ; then
          initrd_early="${initrd_early} ${i}"
       fi
    done
    for linux in ${reverse_sorted_linux_list}; do
        gettext_printf "Found linux image: %s\n" "$linux" >&2
        basename=`basename $linux`
        dirname=`dirname $linux`
        rel_dirname=`make_system_path_relative_to_its_root $dirname`
        version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
        alt_version=`echo $version | sed -e "s,\.old$,,g"`
        linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
        initrd_real=
        for i in "initrd.img-${version}" "initrd-${version}.img" \
           "initrd-${alt_version}.img.old" "initrd-${version}.gz" \
           "initrd-${alt_version}.gz.old" "initrd-${version}" \
           "initramfs-${version}.img" "initramfs-${alt_version}.img.old" \
           "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
           "initrd-${alt_version}" "initramfs-${alt_version}.img" \
           "initramfs-genkernel-${version}" \
           "initramfs-genkernel-${alt_version}" \
           "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
           "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}" ; do
            if test -e "${dirname}/${i}" ; then
                initrd_real="$i"
                break
            fi
        done
        initrd=
        if test -n "${initrd_early}" || test -n "${initrd_real}"; then
            # Xen assumes the real initrd is the first module after the kernel.
            # Additional (later) initrds can also be used for microcode update,
            # with Xen option 'ucode=<scan|module number> (non-default anyway).
            initrd="${initrd_real} ${initrd_early}"
            initrd_display=
            for i in ${initrd}; do
                initrd_display="${initrd_display} ${dirname}/${i}"
            done
            gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" 
>&2
        fi
        if test -z "${initrd_real}"; then
    # "UUID=" magic is parsed by initrds.  Since there's no initrd, it can't 
work here.
            if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
                || [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then
                linux_root_device_thisversion=${GRUB_DEVICE}
            else
                linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID}
            fi
        fi
        # The GRUB_DISABLE_SUBMENU option used to be different than others 
since it was
        # mentioned in the documentation that has to be set to 'y' instead of 
'true' to
        # enable it. This caused a lot of confusion to users that set the 
option to 'y',
        # 'yes' or 'true'. This was fixed but all of these values must be 
supported now.
        if [ "x${GRUB_DISABLE_SUBMENU}" = xyes ] || [ 
"x${GRUB_DISABLE_SUBMENU}" = xy ]; then
            GRUB_DISABLE_SUBMENU="true"
        fi
        if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != 
xtrue ]; then
            linux_entry "${OS}" "${version}" "${xen_version}" simple \
                "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" 
"${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
            submenu_indentation="$grub_tab$grub_tab"
    
            if [ -z "$boot_device_id" ]; then
                boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
            fi
            # TRANSLATORS: %s is replaced with an OS name
            echo "submenu '$(gettext_printf "Advanced options for %s (with Xen 
hypervisor)" "${OS}" | grub_quote)' \$menuentry_id_option 
'gnulinux-advanced-$boot_device_id' {"
        echo "  submenu '$(gettext_printf "Xen hypervisor, version %s" 
"${xen_version}" | grub_quote)' \$menuentry_id_option 
'xen-hypervisor-$xen_version-$boot_device_id' {"
           is_top_level=false
        fi
        linux_entry "${OS}" "${version}" "${xen_version}" advanced \
            "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" 
"${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
        if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
            linux_entry "${OS}" "${version}" "${xen_version}" recovery \
                "${GRUB_CMDLINE_LINUX_RECOVERY} ${GRUB_CMDLINE_LINUX}" 
"${GRUB_CMDLINE_XEN}"
        fi
    done
    if [ x"$is_top_level" != xtrue ]; then
        echo '  }'
    fi
done
if [ x"$is_top_level" != xtrue ]; then
  echo '}'
fi
echo "$title_correction_code"

/etc/grub.d/30_os-prober changed:
set -e
prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
quick_boot="0"
export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"
. "$pkgdatadir/grub-mkconfig_lib"
found_other_os=
adjust_timeout () {
  if [ "$quick_boot" = 1 ] && [ "x${found_other_os}" != "x" ]; then
    cat << EOF
set timeout_style=menu
if [ "\${timeout}" = 0 ]; then
  set timeout=10
fi
EOF
  fi
}
if ! command -v os-prober > /dev/null || ! command -v linux-boot-prober > 
/dev/null ; then
  # missing os-prober and/or linux-boot-prober
  exit 0
fi
if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
  grub_warn "$(gettext_printf "os-prober will not be executed to detect other 
bootable partitions.\nSystems on them will not be added to the GRUB boot 
configuration.\nCheck GRUB_DISABLE_OS_PROBER documentation entry.")"
  exit 0
fi
grub_warn "$(gettext_printf "os-prober will be executed to detect other 
bootable partitions.\nIts output will be used to detect bootable binaries on 
them and create new boot entries.")"
OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
if [ -z "${OSPROBED}" ] ; then
  # empty os-prober output, nothing doing
  exit 0
fi
osx_entry() {
    found_other_os=1
    if [ x$2 = x32 ]; then
        # TRANSLATORS: it refers to kernel architecture (32-bit)
        bitstr="$(gettext "(32-bit)")"
    else
        # TRANSLATORS: it refers to kernel architecture (64-bit)
        bitstr="$(gettext "(64-bit)")"
    fi
    # TRANSLATORS: it refers on the OS residing on device %s
    onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
        cat << EOF
menuentry '$(echo "${LONGNAME} $bitstr $onstr" | grub_quote)' --class osx 
--class darwin --class os \$menuentry_id_option 
'osprober-xnu-$2-$(grub_get_device_id "${DEVICE}")'  {
EOF
        save_default_entry | grub_add_tab
        prepare_grub_to_access_device ${DEVICE} | grub_add_tab
        cat << EOF
        load_video
        set do_resume=0
        if [ /var/vm/sleepimage -nt10 / ]; then
           if xnu_resume /var/vm/sleepimage; then
             set do_resume=1
           fi
        fi
        if [ \$do_resume = 0 ]; then
           xnu_uuid ${OSXUUID} uuid
           if [ -f /Extra/DSDT.aml ]; then
              acpi -e /Extra/DSDT.aml
           fi
           if [ /kernelcache -nt /System/Library/Extensions ]; then
              $1 /kernelcache boot-uuid=\${uuid} rd=*uuid
           elif [ -f /System/Library/Kernels/kernel ]; then
              $1 /System/Library/Kernels/kernel boot-uuid=\${uuid} rd=*uuid
              xnu_kextdir /System/Library/Extensions
           else
              $1 /mach_kernel boot-uuid=\${uuid} rd=*uuid
              if [ /System/Library/Extensions.mkext -nt 
/System/Library/Extensions ]; then
                xnu_mkext /System/Library/Extensions.mkext
              else
                xnu_kextdir /System/Library/Extensions
              fi
           fi
           if [ -f /Extra/Extensions.mkext ]; then
              xnu_mkext /Extra/Extensions.mkext
           fi
           if [ -d /Extra/Extensions ]; then
              xnu_kextdir /Extra/Extensions
           fi
           if [ -f /Extra/devprop.bin ]; then
              xnu_devprop_load /Extra/devprop.bin
           fi
           if [ -f /Extra/splash.jpg ]; then
              insmod jpeg
              xnu_splash /Extra/splash.jpg
           fi
           if [ -f /Extra/splash.png ]; then
              insmod png
              xnu_splash /Extra/splash.png
           fi
           if [ -f /Extra/splash.tga ]; then
              insmod tga
              xnu_splash /Extra/splash.tga
           fi
        fi
}
EOF
}
used_osprober_linux_ids=
if [ "x$GRUB_TOP_LEVEL_OS_PROBER" != x ]; then
  OSPROBED=$(grub_move_to_front "$GRUB_TOP_LEVEL_OS_PROBER" ${OSPROBED})
fi
case "$GRUB_OS_PROBER_SKIP_LIST" in *@/[dD][eE][vV]/*)
        grub_warn "$(gettext_printf "GRUB_OS_PROBER_SKIP_LIST contains 
deprecated <UUID>@/dev/* notation. The @/dev/* suffix is ignored.")"
esac
for OS in ${OSPROBED} ; do
  DEVICE="`echo ${OS} | cut -d ':' -f 1`"
  LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
  LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
  BOOT="`echo ${OS} | cut -d ':' -f 4`"
  unset UUID
  if [ -n "${GRUB_OS_PROBER_SKIP_LIST}" ] && UUID="`${grub_probe} 
--target=fs_uuid --device ${DEVICE%@*}`"; then
    SPACE='[[:space:],;]' # regex matching spaces and common separators
    if [ x"${DEVICE##*@*}" = x ] ; then
      EXPUUID="$UUID@${DEVICE#*@}"
    else
      EXPUUID="$UUID(@/dev/.*)?"
    fi
    if printf %s " ${GRUB_OS_PROBER_SKIP_LIST} " | grep -Eqie 
"${SPACE}${EXPUUID}${SPACE}" ; then
      echo "Skipped ${LONGNAME} on ${DEVICE} by user request." >&2
      continue
    fi
  fi
  BTRFS="`echo ${OS} | cut -d ':' -f 5`"
  if [ "x$BTRFS" = "xbtrfs" ]; then
        BTRFSuuid="`echo ${OS} | cut -d ':' -f 6`"
        BTRFSsubvol="`echo ${OS} | cut -d ':' -f 7`"
  fi
  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi
  # os-prober returns text string followed by optional counter
  CLASS="--class $(echo "${LABEL}" | LC_ALL=C sed 's,[[:digit:]]*$,,' | cut -d' 
' -f1 | tr 'A-Z' 'a-z' | LC_ALL=C sed 's,[^[:alnum:]_],_,g')"
  gettext_printf "Found %s on %s\n" "${LONGNAME}" "${DEVICE}" >&2
  case ${BOOT} in
    chain)
          onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
      cat << EOF
if [ "\$grub_platform" = "pc" ]; then
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' $CLASS --class os 
\$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
EOF
      save_default_entry | grub_add_tab
      prepare_grub_to_access_device ${DEVICE} | grub_add_tab
      if [ x"`${grub_probe} --device ${DEVICE} --target=partmap`" = xmsdos ]; 
then
          cat << EOF
        parttool \${root} hidden-
EOF
      fi
      case ${LONGNAME} in
        Windows\ Vista*|Windows\ 7*|Windows\ Server\ 2008*)
        ;;
        *)
          cat << EOF
        drivemap -s (hd0) \${root}
EOF
        ;;
      esac
      cat <<EOF
        chainloader +1
}
fi
EOF
    ;;
    efi)
        found_other_os=1
        EFIPATH=${DEVICE#*@}
        DEVICE=${DEVICE%@*}
        onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
      cat << EOF
if [ "\$grub_platform" = "efi" ]; then
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' $CLASS --class os 
\$menuentry_id_option 'osprober-efi-$(grub_get_device_id "${DEVICE}")' {
EOF
      save_default_entry | sed -e "s/^/\t/"
      prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
      cat <<EOF
        chainloader ${EFIPATH}
}
fi
EOF
    ;;
    linux)
      if [ "x$BTRFS" = "xbtrfs" ]; then
         LINUXPROBED="`linux-boot-prober btrfs ${BTRFSuuid} ${BTRFSsubvol}  2> 
/dev/null | tr ' ' '^' | paste -s -d ' '`"
      else
         LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | 
paste -s -d ' '`"
      fi
      prepare_boot_cache=
      boot_device_id=
      is_top_level=true
      title_correction_code=
      OS="${LONGNAME}"
      for LINUX in ${LINUXPROBED} ; do
        LROOT="`echo ${LINUX} | cut -d ':' -f 1`"
        LBOOT="`echo ${LINUX} | cut -d ':' -f 2`"
        LLABEL="`echo ${LINUX} | cut -d ':' -f 3 | tr '^' ' '`"
        LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`"
        LINITRD="`echo ${LINUX} | cut -d ':' -f 5 | tr '^' ' '`"
        LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`"
        if [ -z "${LLABEL}" ] ; then
          LLABEL="${LONGNAME}"
        fi
        if [ "${LROOT}" != "${LBOOT}" ]; then
          LKERNEL="${LKERNEL#/boot}"
          LINITRD="${LINITRD#/boot}"
        fi
        found_other_os=1
        onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
        recovery_params="$(echo "${LPARAMS}" | grep 'single\|recovery')" || true
        counter=1
        while echo "$used_osprober_linux_ids" | grep 
'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id' > 
/dev/null; do
            counter=$((counter+1));
        done
        if [ -z "$boot_device_id" ]; then
            boot_device_id="$(grub_get_device_id "${DEVICE}")"
        fi
        used_osprober_linux_ids="$used_osprober_linux_ids 
'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id'"
        if [ -z "${prepare_boot_cache}" ]; then
          prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | 
grub_add_tab)"
        fi
        # The GRUB_DISABLE_SUBMENU option used to be different than others 
since it was
        # mentioned in the documentation that has to be set to 'y' instead of 
'true' to
        # enable it. This caused a lot of confusion to users that set the 
option to 'y',
        # 'yes' or 'true'. This was fixed but all of these values must be 
supported now.
        if [ "x${GRUB_DISABLE_SUBMENU}" = xyes ] || [ 
"x${GRUB_DISABLE_SUBMENU}" = xy ]; then
            GRUB_DISABLE_SUBMENU="true"
        fi
        if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != 
xtrue ]; then
            cat << EOF
menuentry '$(echo "$OS $onstr" | grub_quote)' $CLASS --class gnu-linux --class 
gnu --class os \$menuentry_id_option 'osprober-gnulinux-simple-$boot_device_id' 
{
EOF
            save_default_entry | grub_add_tab
            printf '%s\n' "${prepare_boot_cache}"
            cat <<  EOF
        linux ${LKERNEL} ${LPARAMS}
EOF
            if [ -n "${LINITRD}" ] ; then
          cat << EOF
        initrd ${LINITRD}
EOF
            fi
        cat << EOF
}
EOF
            echo "submenu '$(gettext_printf "Advanced options for %s" "${OS} 
$onstr" | grub_quote)' \$menuentry_id_option 
'osprober-gnulinux-advanced-$boot_device_id' {"
            is_top_level=false
        fi
        title="${LLABEL} $onstr"
        cat << EOF
        menuentry '$(echo "$title" | grub_quote)' --class gnu-linux --class gnu 
--class os \$menuentry_id_option 
'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {
EOF
        save_default_entry | sed -e "s/^/$grub_tab$grub_tab/"
        printf '%s\n' "${prepare_boot_cache}" | grub_add_tab
        cat <<  EOF
                linux ${LKERNEL} ${LPARAMS}
EOF
        if [ -n "${LINITRD}" ] ; then
            cat << EOF
                initrd ${LINITRD}
EOF
        fi
        cat << EOF
        }
EOF
        if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux 
versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
            replacement_title="$(echo "Advanced options for ${OS} $onstr" | sed 
's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
            quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
            title_correction_code="${title_correction_code}if [ \"x\$default\" 
= '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
            grub_warn "$(gettext_printf "Please don't use old title \`%s' for 
GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or 
later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" 
"gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
        fi
      done
      if [ x"$is_top_level" != xtrue ]; then
          echo '}'
      fi
      echo "$title_correction_code"
    ;;
    macosx)
      if [ "${UUID=`${grub_probe} --target=fs_uuid --device ${DEVICE}`}" ]; then
        OSXUUID="${UUID}"
        osx_entry xnu_kernel 32
        osx_entry xnu_kernel64 64
      fi
    ;;
    hurd)
      found_other_os=1
      onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
      cat << EOF
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class hurd --class gnu 
--class os \$menuentry_id_option 
'osprober-gnuhurd-/boot/gnumach.gz-false-$(grub_get_device_id "${DEVICE}")' {
EOF
      save_default_entry | grub_add_tab
      prepare_grub_to_access_device ${DEVICE} | grub_add_tab
      grub_device="`${grub_probe} --device ${DEVICE} --target=drive`"
      mach_device="`echo "${grub_device}" | sed -e 
's/(\(hd.*\),msdos\(.*\))/\1s\2/'`"
      grub_fs="`${grub_probe} --device ${DEVICE} --target=fs`"
      case "${grub_fs}" in
        *fs)    hurd_fs="${grub_fs}" ;;
        *)      hurd_fs="${grub_fs}fs" ;;
      esac
      cat << EOF
        multiboot /boot/gnumach.gz root=device:${mach_device}
        module /hurd/${hurd_fs}.static ${hurd_fs} --readonly \\
                        --multiboot-command-line='\${kernel-command-line}' \\
                        --host-priv-port='\${host-port}' \\
                        --device-master-port='\${device-port}' \\
                        --exec-server-task='\${exec-task}' -T typed '\${root}' 
\\
                        '\$(task-create)' '\$(task-resume)'
        module /lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)'
}
EOF
    ;;
    minix)
          cat << EOF
menuentry "${LONGNAME} (on ${DEVICE}, Multiboot)" {
EOF
         save_default_entry | sed -e "s/^/\t/"
         prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
         cat << EOF
        multiboot /boot/image_latest
}
EOF
    ;;
    *)
      # TRANSLATORS: %s is replaced by OS name.
      gettext_printf "%s is not yet supported by grub-mkconfig.\n" "  
${LONGNAME}" >&2
    ;;
  esac
done
adjust_timeout


-- no debconf information

-- 
Vincent Lefèvre <[email protected]> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Pascaline project (LIP, ENS-Lyon)

Reply via email to