В Ubuntu есть проблема - в случае нештатного отключения компьютера (вырубили свет, потом включили) GRUB2 доходит до меню и ждет выбора.
Хотелось, чтобы компьютер рестартовал сам при включении света. Как оказалось за это отвечает переменная recordfail
, которая по умолчанию выставляется recordfail=1
,
а после успешной загрузки системы она обнуляется через init.d
скрипт /etc/init.d/grub-common
.
При загрузке GRUB2 в файле /boot/grub/grub.cfg
идет проверка:
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=0
Таким образом GRUB2 в случае если система была выключена не штатно принудительно выводит меню загрузки и ждет пока администратор в ручную выберет что грузить. Это делается для предотвращения зацикливания загрузки системы, если там что-то серьезно навернулось.
Прямое редактирование /boot/grub/grub.cfg
смысла не имеет, т.к. все изменения затрутся, при запуске команды update-grub
, поиск по скриптам GRUB2 показал,
что в файле /etc/grub.d/00_header
есть описание функции recordfail
:
function recordfail {
set recordfail=1
EOF
FS="$(grub-probe --target=fs "${grubdir}")"
case "$FS" in
btrfs | cpiofs | newc | odc | romfs | squash4 | tarfs | zfs)
cat <<EOF
# GRUB lacks write support for $FS, so recordfail support is disabled.
EOF
;;
*)
cat <<EOF
if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env recordfail; fi; fi
EOF
esac
cat <<EOF
}
Затем ниже проверка значения переменной recordfail
:
make_timeout ()
{
cat << EOF
if [ "\${recordfail}" = 1 ] ; then
set timeout=${GRUB_RECORDFAIL_TIMEOUT:--1}
else
EOF
Решение проблемы напрашивается сам собой - установить переменную GRUB_RECORDFAIL_TIMEOUT
(таймаут при срабатывании recordfail
) в конфигурационном файле GRUB2 /etc/default/grub
:
GRUB_RECORDFAIL_TIMEOUT=15
После чего выполнить обновление конфигурации командой:
update-grub
Ссылки по теме:
Comments
comments powered by Disqus