Я работаю с системой, где мы хотим, чтобы пользователи могли поиграть с датой и временем, если они хотят, и где перезагрузки могут произойти произвольно. Это нормально, за исключением одного: если есть большой скачок времени назад, при перезагрузке появляется следующая ошибка:
Checking filesystems
IMAGE2: Superblock last mount time (Tue Mar 1 17:32:48 2011,
now = Thu Feb 24 17:34:29 2011) is in the future.
IMAGE2: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
… И затем загрузка зависает в ожидании ввода пользовательской консоли, и даже после получения доступа к консоли требуется пароль root для продолжения.
Это явно не идеально. Есть ли способ пропустить проверку или принудительно выполнить проверку при перезагрузке?
Google предоставил только справку, которая требует запуска fsck вручную, если / когда это произошло, а это не то, что мне нужно. Запуск fsck вручную после установки времени не работает, так как файловая система все еще монтируется в этот момент, и простое полное отключение fsck не является идеальным.
Я использую RedHat 6.
Обновление : решение, с которым я сейчас работаю, - это взломать fstab, чтобы отключить проверку fsck при перезагрузке. Я попытался отредактировать время последнего монтирования на дисках с помощью debugfs
, который отлично работает для дисков ext3, но, по-видимому, не всегда работает на ext4.
Я сомневаюсь, что есть способ удалить эту проверку специально, за исключением модификации исходного кода. Игнорирование всех ошибок из fsck звучит опасно, что если возникнет какая-то другая проблема?
Поэтому я предложу следующий обходной путь: измените загрузочные сценарии, чтобы установить системную дату на какое-то время в будущем (скажем, 2038-01-18 на 32-разрядной машине) непосредственно перед запуском fsck, и прочитайте ее обратно с аппаратного обеспечения. часы после этого (
hwclock --hctosys
с дополнительными параметрами по мере необходимости в зависимости от вашего оборудования и использования GMT в аппаратных часах.)источник
Это звучит так, как будто его следует запускать на виртуальной машине, где вы можете иметь больше контроля (или просто вернуться к снимку).
источник
Вот решение, которое отлично сработало для меня:
Создайте /etc/e2fsck.conf:
Подробнее об этом исправлении здесь:
http://stillstup.blogspot.com/2010/02/superblock-last-mount-time-is-in-future.html
источник