Gentoo - Grub2, submenu patchПодписка на Комментарии к "Gentoo - Grub2, submenu patch"

Аватар zenon

У Grub2, начиная с версии 2.00 появилась пренеприятнейшая фича - подменю в меню загрузки.
Загрузка основных ОС/последних ядер выводится в главное меню, остальное прячется в подменю,
Может кому-то такой подход и нравится, но меня лишь раздражает, должны были предусмотреть вариант отключения, ан нет.

Патч работает с версией sys-boot/grub-2.00-r2.
В любом случае - сделать начала бэкап двух файлов:
/usr/sbin/grub2-mkconfig
/etc/grub.d/10_linux
Патчи:
10_linux.patch

diff --git a/etc/grub.d/10_linux b/etc/grub.d/10_linux
index ee2d032..6f2a55b 100755
--- a/etc/grub.d/10_linux
+++ b/etc/grub.d/10_linux
@@ -249,6 +249,7 @@ while [ "x$list" != "x" ] ; do
     done
   fi
 
+if [ "x${GRUB_ENABLE_SUBMENU}" = xtrue ]; then
   if [ "x$is_first_entry" = xtrue ]; then
     linux_entry "${OS}" "${version}" simple \
     "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
@@ -261,6 +262,7 @@ while [ "x$list" != "x" ] ; do
     # 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' {"
   fi
+fi

 
   linux_entry "${OS}" "${version}" advanced \
@@ -278,10 +280,12 @@ done
 
 # If at least one kernel was found, then we need to
 # add a closing '}' for the submenu command.
+if [ "x${GRUB_ENABLE_SUBMENU}" = xtrue ]; then
 if [ x"$is_first_entry" != xtrue ]; then
   echo '}'
 fi
+fi
 
 echo "$title_correction_code"

grub2-mkconfig.patch
diff --git a/usr/sbin/grub2-mkconfig b/usr/sbin/grub2-mkconfig
index 81fea9f..124c6a4 100755
--- a/usr/sbin/grub2-mkconfig
+++ b/usr/sbin/grub2-mkconfig
@@ -184,6 +184,7 @@ export GRUB_DEVICE \
 
 # These are optional, user-defined variables.
 export GRUB_DEFAULT \
+  GRUB_ENABLE_SUBMENU \
   GRUB_HIDDEN_TIMEOUT \
   GRUB_HIDDEN_TIMEOUT_QUIET \
   GRUB_TIMEOUT \

После этого в /etc/default/grub добавляем переменную GRUB_ENABLE_SUBMENU=false с нужным значением, и обновляем конфигурацию grub2:
# grub2-mkconfig -o /boot/grub2/grub.cfg

Идея подсмотрена тут.
.
Похожие материалы:
Аватар zenon

Само применение патча, на всякий случай:

# cd /etc/grub.d
# patch -i /path/to/10_linux.patch
patching file 10_linux
Hunk #1 succeeded at 226 with fuzz 1 (offset -23 lines).
Hunk #2 succeeded at 239 with fuzz 2 (offset -23 lines).
Hunk #3 succeeded at 254 with fuzz 2 (offset -26 lines).
# cd /usr/sbin
# patch -i //path/to/grub2-mkconfig.patch
patching file grub2-mkconfig

# grub2-mkconfig -o /boot/grub2/grub.cfg

Добавить комментарий