Мне нужно иметь возможность обновлять конфигурацию grub, чтобы программно удалить опцию загрузки в режиме восстановления. Я получил начальную информацию о том, как сделать это (вручную) из этого вопроса / ответа:
Как отключить режим восстановления / однопользовательский режим?
Итак, я написал простой скрипт, который упакован с файлом grub для замены. Скрипт просто делает:
# Move the new grub file contents into place
cat /path/to/replacement/grub > /etc/default/grub
# Update grub with the new settings
update-grub
В этом скрипте «/ path / to / replace / grub» содержит следующее: http://paste.ubuntu.com/7328274/ и заменяет стандартный файл http://paste.ubuntu.com/7328269/ , который находится в системе. Система Ubuntu 12.04, и приведенный выше скрипт запускается как sudo.
Проблема в том, что большую часть времени он работает, но в некоторых случаях он полностью отключается, и когда система перезагружается, он приземляется в командной строке grub, а не загружается нормально. Из командной строки grub я могу загрузить ядро, загрузочный linux, а затем, когда в командной строке bash, я могу запустить:
sudo update-grub
Затем перезагрузиться, и все будет хорошо. Но может ли кто-нибудь сказать мне, почему иногда он не работает как часть скрипта?
Примечания:
Цель состоит в том, чтобы просто удалить опцию загрузки режима восстановления. из меню grub, без вмешательства пользователя, кроме запуска скрипта - причины этого сложны, но так оно и есть:)
Единственное отличие между 2 файлами grub должно быть раскомментирование строки 'GRUB_DISABLE_RECOVERY = "true"'
Я помещаю содержимое в правильный файл (вместо cp'ing или mv'ing), потому что я решил, что это было самый простой способ убедиться, что файл не был испорчен.
Процесс обычно работает, и перезагрузка системы удаляет опцию меню grub в режиме восстановления (по желанию). Но иногда ... не работает
sed -i "s,#GRUB_DISABLE_RECOVERY,GRUB_DISABLE_RECOVERY,g" /etc/default/grub