4

Можно ли как-нибудь вырваться из e2fsck при загрузке?

Моя система запускает e2fsck каждые 30 дней, что мне подходит, и я хочу, чтобы она оставалась такой. Но иногда, когда я включаю компьютер и прошло 30 дней, я все еще хочу, чтобы он быстро загружался. Например, когда мне нужно сделать презентацию с ноутбука - представьте, что 50 человек говорят:«нам просто нужно подождать 10 минут ... нет, я не могу этого избежать ... да, это Linux, почему вы спрашиваете??:)

Если я нажимаю Ctrl+C, он останавливает проверку и продолжает последовательность загрузки, но система не работает, поскольку корневая файловая система монтируется только для чтения. И после перезагрузки проверка начинается снова.

Я искал ответ в Интернете, и есть много подобных вопросов, но я не мог найти решение. Кто-нибудь знает решение?

Примечание . Я ищу решение, которое не отключало бы fsck и не требовало бы каких-либо действий перед перезагрузкой компьютера - заранее я не знаю, мне придется пропустить проверку.

Если это имеет значение: Debian 6 (Squeeze).\

ОБНОВЛЕНИЕ: я узнал, что можно выйти из e2fsck с помощью клавиши Esc в Ubuntu. Это именно то, что я ищу - кто-нибудь знает, как это сделать в Debian?

РЕШЕНИЕ: Ответ Гарретта был верным, мне пришлось отредактировать /etc/init.d/checkroot.sh . Прямо перед этими строками:

#
# The actual checking is done here.
#
if [ "$rootcheck" = yes ]
then
    ...

Я добавил эти строки:

if [ "$rootcheck" = yes ]
then
    if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline
    then
        echo "fsck was forced."
    else
        echo "********************************************************************************************************"
        echo "*                                                                                                      *"
        echo "*  WARNING: fsck should be run, but it is disabled. Create /forcefsck and reboot at your convenience.  *"
        echo "*                                                                                                      *"
        echo "********************************************************************************************************"
        rootcheck="no"
    fi
fi

Работает прекрасно - я улыбаюсь каждый раз, когда вижу сообщение, зная, что я только что спас еще полчаса своей жизни. :)

3 ответа3

6

Есть три простых способа достичь того, что вы хотите сделать, в зависимости от ситуации.

  1. При завершении работы используйте двоичный файл командной строки shutdown и передайте ключ -f , например, для перезагрузки: shutdown -rf now . Вы также можете сделать ярлык с этим, если вы предпочитаете. Это пропустит проверку fsck только при следующей перезагрузке.
  2. Когда меню загрузки отображается при загрузке, нажмите «e», чтобы отредактировать текущее загрузочное ядро, отредактируйте строку vmlinuz и добавьте fastboot до конца. Как и в варианте 1, этот параметр пропускает проверку fsck только для этой загрузки.
  3. Если вы действительно хотите полностью отключить проверку (не рекомендуется), вы можете отредактировать файл /etc/fstab . Найдите строку с корневой файловой системой, и в конце появятся два числа, обычно 1 2 . Изменение последнего числа (здесь 2) на 0 предотвратит запуск всех автоматических проверок fsck во время загрузки на томе.

Правка для # 2: Вы можете добавить новую запись в grub для fastboot , которая может быть более подходящей для вашего примера. Это сохраняет обычную проверку fsck, представляя выбор во время загрузки.

1

Хотя в нем нет прямого ответа на ваш вопрос о том, как прервать работу fsck, если вы заранее знаете, что вам понадобится быстрая загрузка (например, если вы планируете провести презентацию), вы, безусловно, можете запустить fsck вручную на более раннем этапе. время. Это даст вам новые 30 дней до следующей автоматической проверки файловой системы, не затрагивая конфигурацию системы.

1

Вы можете редактировать скрипт запуска, который вызывает fsck. Таким образом, вы можете, например, попросить консоль выполнить fsck с тайм-аутом. Сценарии находятся в /etc/init.d/checkroot.sh и /etc/init.d/checkfs.sh.

Я заметил, что в моей копии есть этот код, который вы можете включить снова:

# Disabled AC power check until fsck can be told to only check the
# file system if it is corrupt when running on battery. (bug #526398)
#       if which on_ac_power >/dev/null 2>&1 && [ "$rootcheck" = yes ]
#       then
#               on_ac_power >/dev/null 2>&1
#               if [ "$?" -eq 1 ]
#               then
#                       log_warning_msg "On battery power, so skipping file system check."
#                       rootcheck=no
#               fi
#       fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .