Как автоматически ответить на приглашение fsck при загрузке - PullRequest
10 голосов
/ 29 марта 2012

У меня есть сервер Ubuntu (11.10) на одноплатном компьютере, который иногда неожиданно отключается. Когда он загружается позже, fsck предлагает пользователю нажать «f», чтобы проверить диск. Поскольку к этому серверу обычно не подключены монитор и клавиатура, и единственный способ получить к нему обычный доступ - через SSH, это очень неудобно.

Есть ли способ гарантировать, что при загрузке любая необходимая проверка fsck может быть выполнена без ввода пользователя? По сути, я хочу, чтобы он всегда запускал 'fsck -y' при загрузке (при обнаружении проблем), а не предлагал пользователю ввести данные.

Спасибо!

Ответы [ 3 ]

10 голосов
/ 09 апреля 2012

Итак, я нашел два связанных решения моей проблемы:

Я не уверен, что они действительны везде, но они работают на сервере Ubuntu 11.10.

/ etc / default / rcS Внешний видкак это:

#
# /etc/default/rcS
#
# Default settings for the scripts in /etc/rcS.d/
#
# For information about these variables see the rcS(5) manual page.
#
# This file belongs to the "initscripts" package.

# delete files in /tmp during boot older than x days.
# '0' means always, -1 or 'infinite' disables the feature
TMPTIME=0

# spawn sulogin during boot, continue normal boot if not used in 30 seconds
SULOGIN=no

# do not allow users to log in until the boot has completed
DELAYLOGIN=no

# assume that the BIOS clock is set to UTC time (recommended)
UTC=yes

# be more verbose during the boot process
VERBOSE=no

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=no

Убедитесь, что вместо этой последней строки читается

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

Еще один барьер, который я имел для системы, просто загружался всегда без вмешательства пользователя, это экран загрузчика grub, ожидающийпользовательский ввод после неудачной / прерванной загрузки.

Для этого необходимо отредактировать файл настройки grub в /etc/grub.d/00_header

/etc/grub.d$ grep -r -n -C3 timeout ./
./00_header-229-    fi
./00_header-230-fi
./00_header-231-
./00_header:232:make_timeout ()
./00_header-233-{
./00_header-234-    cat << EOF
./00_header-235-if [ "\${recordfail}" = 1 ]; then
./00_header:236:  set timeout=-1
./00_header-237-else
./00_header:238:  set timeout=${2}
./00_header-239-fi
./00_header-240-EOF
./00_header-241-}

, просто измените строку 236 на

set timeout = 0

и строки 238 до

set timeout = 0

Это приводит к тому, что система никогда не останавливается во время загрузки.После редактирования файла запустите sudo update-grub, чтобы изменения были внесены в файл /boot/grub/grub.cfg.

3 голосов
/ 21 июля 2014

Для grub, вместо того, чтобы возиться с файлом, как указано выше, и если вы используете последнюю версию GRUB, которая называется grub2, более чистый способ:

Изменить "/ etc / default / grub" Добавить строку GRUB_RECORDFAIL_TIMEOUT="30" Затем запустите update-grub

1 голос
/ 17 апреля 2018

Senthil ответ о RECORFAIL TIMETOUT директива относится к загрузчику Grub и возникает после «неудачной попытки загрузки» , как указано здесь ,Несмотря на то, что он связан с вопросом и одним моментом, который необходимо соблюдать при принудительной перезагрузке, он не является решением проблемы fsck ( "всегда запускать 'fsck -y'" ).

Я верю Ответ НАТО Саичека на правильном пути. Эта ссылка приближает проблему форсирования fsck в Ubuntu и RHEL / CentOS.В случае Ubuntu сценарии получают некоторые опции из /etc/default/rcS.Поэтому я считаю, что достаточно раскомментировать и изменить значение по умолчанию #FSCKFIX=no на FSCKFIX=yes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...