144 lines
4.8 KiB
Diff
144 lines
4.8 KiB
Diff
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
|
index db58ab9..e66e139 100644
|
|
--- a/util/grub-mkconfig.in
|
|
+++ b/util/grub-mkconfig.in
|
|
@@ -212,6 +212,8 @@ export GRUB_DEFAULT \
|
|
GRUB_THEME \
|
|
GRUB_GFXPAYLOAD_LINUX \
|
|
GRUB_DISABLE_OS_PROBER \
|
|
+ GRUB_COLOR_NORMAL \
|
|
+ GRUB_COLOR_HIGHLIGHT \
|
|
GRUB_INIT_TUNE \
|
|
GRUB_SAVEDEFAULT \
|
|
GRUB_ENABLE_CRYPTODISK \
|
|
diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
|
|
index 9838720..dbb5dd2 100644
|
|
--- a/util/grub.d/00_header.in
|
|
+++ b/util/grub.d/00_header.in
|
|
@@ -125,6 +125,14 @@ cat <<EOF
|
|
|
|
EOF
|
|
|
|
+if [ x$GRUB_COLOR_NORMAL != x ] && [ x$GRUB_COLOR_HIGHLIGHT != x ] ; then
|
|
+ cat << EOF
|
|
+set menu_color_normal=$GRUB_COLOR_NORMAL
|
|
+set menu_color_highlight=$GRUB_COLOR_HIGHLIGHT
|
|
+
|
|
+EOF
|
|
+fi
|
|
+
|
|
serial=0;
|
|
gfxterm=0;
|
|
for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do
|
|
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
|
index e27d6f7..0a255f5 100644
|
|
--- a/util/grub.d/10_linux.in
|
|
+++ b/util/grub.d/10_linux.in
|
|
@@ -87,6 +87,8 @@ linux_entry ()
|
|
case $type in
|
|
recovery)
|
|
title="$(gettext_printf "%s, with Linux %s (recovery mode)" "${os}" "${version}")" ;;
|
|
+ fallback)
|
|
+ title="$(gettext_printf "%s, with Linux %s (Fallback initramfs)" "${os}" "${version}")" ;;
|
|
*)
|
|
title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;;
|
|
esac
|
|
@@ -100,7 +102,7 @@ linux_entry ()
|
|
else
|
|
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
|
|
fi
|
|
- if [ x$type != xrecovery ] ; then
|
|
+ if [ x$type != xrecovery ] && [ x$type != xfallback ] ; then
|
|
save_default_entry | grub_add_tab
|
|
fi
|
|
|
|
@@ -132,7 +134,8 @@ linux_entry ()
|
|
fi
|
|
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
|
fi
|
|
- message="$(gettext_printf "Loading Linux %s ..." ${version})"
|
|
+
|
|
+ message="$(gettext_printf "Loading Linux %s ..." "${version}")"
|
|
sed "s/^/$submenu_indentation/" << EOF
|
|
echo '$(echo "$message" | grub_quote)'
|
|
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
|
|
@@ -190,7 +193,22 @@ while [ "x$list" != "x" ] ; do
|
|
alt_version=`echo $version | sed -e "s,\.old$,,g"`
|
|
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
|
|
|
|
+ if test -e "/etc/arch-release" ; then
|
|
+ if echo "${basename}" | grep -q 'vmlinuz-linux' ; then
|
|
+ version="`echo "${basename}" | sed -e 's,vmlinuz-linux,,g'`"
|
|
+
|
|
+ if [ "x${version}" = "x" ] ; then
|
|
+ version="core repo kernel"
|
|
+ else
|
|
+ version="`echo "${version}" | sed -e 's,-,,g'`"
|
|
+ version="${version} kernel"
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+
|
|
initrd=
|
|
+ initrd_arch="`echo "${basename}" | sed -e 's,vmlinuz,initramfs,g'`"
|
|
+
|
|
for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
|
|
"initrd-${version}" "initramfs-${version}.img" \
|
|
"initrd.img-${alt_version}" "initrd-${alt_version}.img" \
|
|
@@ -198,7 +216,8 @@ while [ "x$list" != "x" ] ; do
|
|
"initramfs-genkernel-${version}" \
|
|
"initramfs-genkernel-${alt_version}" \
|
|
"initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
|
|
- "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
|
|
+ "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}" \
|
|
+ "${initrd_arch}.img" ; do
|
|
if test -e "${dirname}/${i}" ; then
|
|
initrd="$i"
|
|
break
|
|
@@ -226,6 +245,22 @@ while [ "x$list" != "x" ] ; do
|
|
linux_root_device_thisversion=${GRUB_DEVICE}
|
|
fi
|
|
|
|
+ if test -e "/etc/arch-release" ; then
|
|
+ is_first_entry="false"
|
|
+
|
|
+ linux_entry "${OS}" "${version}" true \
|
|
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
|
+
|
|
+ for i in "${initrd_arch}-fallback.img" "initramfs-${version}-fallback.img" ; do
|
|
+ if test -e "${dirname}/${i}" ; then
|
|
+ initrd="${i}"
|
|
+ linux_entry "${OS}" "${version}" fallback \
|
|
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ fi
|
|
+
|
|
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
|
|
linux_entry "${OS}" "${version}" simple \
|
|
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
|
@@ -240,8 +275,11 @@ while [ "x$list" != "x" ] ; do
|
|
is_top_level=false
|
|
fi
|
|
|
|
+ if ! test -e "/etc/arch-release" ; then
|
|
linux_entry "${OS}" "${version}" advanced \
|
|
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
|
+ fi
|
|
+
|
|
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
|
|
linux_entry "${OS}" "${version}" recovery \
|
|
"single ${GRUB_CMDLINE_LINUX}"
|
|
@@ -252,8 +290,10 @@ done
|
|
|
|
# If at least one kernel was found, then we need to
|
|
# add a closing '}' for the submenu command.
|
|
+if ! test -e "/etc/arch-release" ; then
|
|
if [ x"$is_top_level" != xtrue ]; then
|
|
echo '}'
|
|
fi
|
|
+fi
|
|
|
|
echo "$title_correction_code"
|