linux_root_device_thisversion="PARTUUID=${GRUB_FORCE_PARTUUID}"
fi
message="$(gettext_printf "Loading initial ramdisk ...")"
+ initrd_path=
+ for i in ${initrd}; do
+ initrd_path="${initrd_path} ${rel_dirname}/${i}"
+ done
+ initrd_path_only_early=
+ for i in ${initrd_early}; do
+ initrd_path_only_early="${initrd_path_only_early} ${rel_dirname}/${i}"
+ done
if test -n "${initrd}" && [ x"$GRUB_FORCE_PARTUUID" != x ]; then
sed "s/^/$submenu_indentation/" << EOF
if [ "\${initrdfail}" = 1 ]; then
echo '$(echo "$message" | grub_quote)'
EOF
fi
-
sed "s/^/$submenu_indentation/" << EOF
- initrd ${rel_dirname}/${initrd}
+ initrd $(echo $initrd_path)
else
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} panic=-1
+EOF
+ if [ -n "$initrd_path_only_early" ]; then
+ sed "s/^/$submenu_indentation/" << EOF
+ initrd $(echo $initrd_path_only_early)
+EOF
+ fi
+ sed "s/^/$submenu_indentation/" << EOF
fi
initrdfail
EOF
EOF
fi
sed "s/^/$submenu_indentation/" << EOF
- initrd ${rel_dirname}/${initrd}
+ initrd $(echo $initrd_path)
EOF
fi
fi
*) 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=
initrd=
if test -n "${initrd_early}" || test -n "${initrd_real}"; then
- initrd="${initrd_real}"
- if test -n "${initrd_early}"; then
- initrd="${initrd_early} ${initrd}"
- fi
+ initrd="${initrd_early} ${initrd_real}"
initrd_display=
for i in ${initrd}; do
MNTDIR="$(mktemp -d ${TMPDIR:-/tmp}/zfsmnt.XXXXXX)"
ZFSTMP="$(mktemp -d ${TMPDIR:-/tmp}/zfstmp.XXXXXX)"
+
+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
+
RC=0
on_exit() {
# Restore initial zpool import state
return
fi
- 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
-
initrd_list=""
kernel_list=""
- for linux in $(find "${boot_dir}" -maxdepth 1 -type f -regex '.*/\(vmlinuz\|vmlinux\|kernel\)-.*'|sort -V); do
+ list=$(find "${boot_dir}" -maxdepth 1 -type f -regex '.*/\(vmlinuz\|vmlinux\|kernel\)-.*')
+ while [ "x$list" != "x" ] ; do
+ linux=`version_find_latest $list`
+ list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
if ! grub_file_is_not_garbage "${linux}" ; then
continue
fi
rel_linux_dirname=$(make_system_path_relative_to_its_root "${linux_dirname}")
- initrd_list="${rel_linux_dirname}/${initrd}|${initrd_list}"
- kernel_list="${rel_linux_dirname}/${linux_basename}|${kernel_list}"
+ initrd_list="${initrd_list}|${rel_linux_dirname}/${initrd}"
+ kernel_list="${kernel_list}|${rel_linux_dirname}/${linux_basename}"
done
- initrd_list="${initrd_list%|}"
- kernel_list="${kernel_list%|}"
+ initrd_list="${initrd_list#|}"
+ kernel_list="${kernel_list#|}"
initrd_device=$(${grub_probe} --target=device "${boot_dir}" | head -1)
GRUB_CMDLINE_LINUX_RECOVERY="${GRUB_CMDLINE_LINUX_RECOVERY} nomodeset"
fi
+ case "$GENKERNEL_ARCH" in
+ x86*) GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY dis_ucode_ldr";;
+ esac
+
+
if [ "${vt_handoff}" = 1 ]; then
for word in ${GRUB_CMDLINE_LINUX_DEFAULT}; do
if [ "${word}" = splash ]; then