diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in index c943a1e403..2b8c561ff7 100644 --- a/util/grub.d/10_linux.in +++ b/util/grub.d/10_linux.in @@ -75,8 +75,18 @@ linux_entry () args="$4" sixteenbit="" + linuxefi="linux" + initrdefi="initrd" case "$machine" in - i?86|x86_64) sixteenbit="16" ;; + i?86|x86_64) + sixteenbit="16" + linuxefi="linuxefi" + initrdefi="initrdefi" + ;; + aarch64) + linuxefi="linux" + initrdefi="initrd" + ;; esac if [ -z "$boot_device_id" ]; then @@ -133,7 +143,7 @@ linux_entry () fi if [ -d /sys/firmware/efi ]; then sed "s/^/$submenu_indentation/" << EOF - linuxefi ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} + ${linuxefi} ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} EOF else sed "s/^/$submenu_indentation/" << EOF @@ -143,7 +153,7 @@ EOF if test -n "${initrd}" ; then if [ -d /sys/firmware/efi ]; then sed "s/^/$submenu_indentation/" << EOF - initrdefi ${rel_dirname}/${initrd} + ${initrdefi} ${rel_dirname}/${initrd} EOF else sed "s/^/$submenu_indentation/" << EOF @@ -151,6 +161,13 @@ EOF EOF fi fi + if test -n "${fdt}" ; then + message="$(gettext_printf "Loading fdt ...")" + sed "s/^/$submenu_indentation/" << EOF + echo '$(echo "$message" | grub_quote)' + devicetree ${rel_dirname}/${fdt} +EOF + fi sed "s/^/$submenu_indentation/" << EOF } EOF @@ -211,6 +228,14 @@ while [ "x$list" != "x" ] ; do fi done + fdt= + for i in "dtb-${version}" "dtb-${alt_version}"; do + if test -e "${dirname}/${i}/foundation-v8.dtb" ; then + fdt="${i}/foundation-v8.dtb" + break + fi + done + config= for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do if test -e "${i}" ; then