Категории

понедельник, 4 августа 2014 г.

Ubuntu GRUB2 отключить подтверждение при перезагрузке

В 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
После чего выполнить обновление конфигурации командой:
root@Ubuntu# update-grub

1. правильное выключение + GRUB2 отключить подтверждение при перезагрузке
2. recordfail в grub2 [РЕШЕНО]

Комментариев нет:

Отправить комментарий