У меня есть безголовый сервер Ubuntu 12.04 в центре обработки данных за 1500 миль. Дважды теперь при перезагрузке система решила, что это должно быть fsck. К сожалению, Ubuntu запустил fsck в интерактивном режиме, поэтому мне пришлось попросить кого-нибудь из моего центра обработки данных перейти, подключить консоль и нажать клавишу Y. Как мне настроить так, чтобы fsck запускался в неинтерактивном режиме во время загрузки с флагом -y
или -p
(aka -a
)?
Если я правильно понимаю процесс загрузки Ubuntu, init вызывает mountall, который, в свою очередь, вызывает fsck. Однако я не вижу способа настроить вызов fsck. Это возможно?
(Чтобы tune2fs -i 0 -c 0
избежать одного предложения; я знаю, что могу использовать для предотвращения периодических fscks. Это может немного помочь, но мне нужна система, чтобы попытаться вернуться, даже если у нее была реальная причина для fsck, скажем, после сбоя питания .)
В ответ на дополнительные вопросы вот соответствующие подробности моего / etc / fstab. Я не верю, что отредактировал это вообще из того, что там написала Ubuntu.
UUID=3515461e-d425-4525-a07d-da986d2d7e04 / ext4 errors=remount-ro 0 1
UUID=90908358-b147-42e2-8235-38c8119f15a6 /boot ext4 defaults 0 2
UUID=01f67147-9117-4229-9b98-e97fa526bfc0 none swap sw 0 0
/etc/default/rcS
не очень актуальны в 2019 году, когда Ubuntu 16 и Ubuntu 18 сейчас используют systemd. Я не знаю полной истории для systemd, ноfsck.repair
опция командной строки конфигурации / ядра кажется актуальной. Документы в настоящее время говорят, что по умолчанию этоpreen
означает-p
. Это также может быть установленоyes
для-y
./etc/default/grub
может быть место, чтобы установить это. Я был бы признателен, если бы кто-то более знающий дал бы современный системный ответ.Ответы:
Установка Я ищу в / и т.д. / по умолчанию / RCS ,
FSCKFIX=yes
. Это означает «автоматически восстанавливать файловые системы с несоответствиями во время загрузки» и запускает fsck с-y
флагом. Это было установленоno
в обеих моих системах Ubuntu.Даже при установленном
no
значении время загрузки fsck все еще не является интерактивным. mountall запускает fsck с-a
синонимом-p
, что означает «автоматически исправлять любые проблемы с файловой системой, которые можно безопасно устранить без вмешательства человека». Видимо,-p
переходит в интерактивный режим, если есть небезопасные исправления. Для запуска полностью автоматически, вам нужно-y
илиFSCKFIX=yes
.Вот соответствующий фрагмент кода из mountall.c
источник
fsck.repair=yes
к парамGRUB_CMDLINE_LINUX_DEFAULT
в/etc/default/grub
Для Ubuntu 15,16,17+ настройка значения FSCKFIX находится в lib / init / vars.sh
Можно использовать команду,
grep -r FSCKFIX * 2>/dev/null
чтобы найти его.источник
/etc/default/rcS
./lib/init/vars.sh
имеет значение по умолчанию для,FSCKFIX
но затем источники,/etc/default/rcS
которые могут переопределить его. OTOH у недавно установленной системы Ubuntu 18 вообще не былоrcS
файла.Убедитесь, что у вас нет никаких флагов, которые могут вызвать это в fstab, и проверьте сценарии инициализации. (Попробуйте grep'ing ваших скриптов инициализации для 'fsck', чтобы найти, где он используется) Моя система запускает fsck неинтерактивно, так что здесь есть копия моего fstab и часть моего скрипта / etc / init / mountall для сравнения
Фрагмент из / etc / init / mountall
источник
grep FSCKFIX /etc/default/rcS
говорит в вашей системе?