При наличии второй оси какие цифры не ставь, меню все равно появляется, при чем если 0 то на 10 секунд, а если 1 то на 1 секунду. Хочется знать кто какой костыль подставляет, что бы хоть немного работало
Есть метод. Причем метод самый стандартный. Называется 40_custom.
Попробуем во всем разобраться.
Имеется одна система: ubuntu 16.04.2 на разделе sda1. На этом-же hdd установлен груб.
В файле /etc/default/grub установил "GRUB_TIMEOUT=0", выполнил update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.8.0-36-generic
Found initrd image: /boot/initrd.img-4.8.0-36-generic
done
Смотрим, что получилось в grub.cfg
### BEGIN /etc/grub.d/00_header ###
...
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=0
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=0
fi
fi
### END /etc/grub.d/00_header ###
И хотя timeout_style=menu, мы меню не видим т.к. timeout=0. Проверяем, перезагружаемся - меню нет.
В файле /etc/default/grub установил "GRUB_HIDDEN_TIMEOUT=0", "GRUB_TIMEOUT=2" выполнил update-grub
Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Found linux image: /boot/vmlinuz-4.8.0-36-generic
Found initrd image: /boot/initrd.img-4.8.0-36-generic
done
Смотрим, что получилось в grub.cfg
### BEGIN /etc/grub.d/00_header ###
...
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=hidden
set timeout=0
# Fallback hidden-timeout code in case the timeout_style feature is
# unavailable.
elif sleep --interruptible 0 ; then
set timeout=0
fi
fi
### END /etc/grub.d/00_header ###
timeout_style=hidden, меню скрыто. Предупреждение не обмануло, timeout=0, хотя я высталял "2". Проверяем, перезагружаемся - меню нет.
Что еще отсюда видно.
if [ "${recordfail}" = 1 ] ; then
set timeout=30
Возможно это ответ на вопрос:
достаточно некорректно завершить работу и при следующей загрузке менюшка обязательно появится.
Едем дальше. Подключаю второй hdd, устанавливаю на него груб. На раздел sdb2 устанавливаю ubuntu 16.04.2. Загружаюсь со второго hdd.
Далее все изменения провожу на втором hdd (sdb2).
Удаляю файлы vmlinuz и initrd.
В файле /etc/default/grub установил "GRUB_HIDDEN_TIMEOUT=0", "GRUB_TIMEOUT=0" выполнил update-grub
Generating grub configuration file ...
Found Ubuntu 16.04.2 LTS (16.04) on /dev/sda1
done
Смотрим, что получилось в grub.cfg
### BEGIN /etc/grub.d/00_header ###
...
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=hidden
set timeout=0
# Fallback hidden-timeout code in case the timeout_style feature is
# unavailable.
elif sleep --interruptible 0 ; then
set timeout=0
fi
fi
### END /etc/grub.d/00_header ###
...
### BEGIN /etc/grub.d/30_os-prober ###
...
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
set timeout=10
fi
### END /etc/grub.d/30_os-prober ###
Видим, что автоматика обнаружила одну систему на sda1. Но обнаружил ее скрипт не 10_linux, как в предыдущем случае, а 30_os-probber.
И он установил параметры: показывать меню, timeout=10.
Перезагружаюсь, проверяю. Показывается меню, таймаут 10.
Чтобы скрыть меню добавьте в файл /etc/grub.d/40_custom следующий код
set timeout_style=hidden
set timeout=0
Выполните update-grub.
Таймаут можно выставить не равный нулю, легче будет поймать момент нажатия клавиш для вызова меню.
Только хорошенько подумайте, где будете рвать волоса, когда вам понадобиться меню груб.