Intereting Posts
Преобразование субтитров на основе изображений в текстовые субтитры внутри файла MKV Перенаправить субдомен на сайт https cat все строки из файла, которые после «KEYWORD» Использование scp для передачи файлов на устройство Android Выполняется непосредственно через TTY более безопасно, чем через эмулятор терминала? Поиск разрешений экрана без $ DISPLAY через скрипты python или shell TigerVNC Cinnamon сеанс на Fedora 17 Почему значение $ 1 изменилось в `{$ total = $ total + $ 1}`? Ядро Backport для Debian Jessie? Извлеките TAR на SD-карту и проверьте содержимое впоследствии удалить все экземпляры _000 из нескольких файлов Где находится журнал динамического туннельного трафика ssh? Как удалить разрешения Linux на файлы для отправки по электронной почте пользователю Windows Импортировать переменные из другого файла извлечение определенной строки, поиск и замена или сохранение более длинной строки содержат извлеченное значение

Как я могу избежать сообщений «Запустить fsck вручную», позволяя экспериментировать с изменениями системного времени?

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

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. (ie, 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.

Я собирался предложить взломать e2fsck чтобы отключить определенные проверки для последнего времени монтирования или последнего времени записи в будущем. Они определены в problem.c / problem.h и используются в super.c . Но в поиске я обнаружил, что E2fsprogs 1.41.10 добавляет новую опцию /etc/e2fsck.conf именем broken_system_clock . Это похоже на то, что вам нужно, и поскольку вы используете Red Hat Enterprise Linux 6, у вас должен быть 1.41.12, который включает эту опцию. На странице руководства:

  broken_system_clock The e2fsck(8) program has some hueristics that assume that the system clock is correct. In addition, many system programs make similar assumptions. For example, the UUID library depends on time not going backwards in order for it to be able to make its guarantees about issuing universally unique ID's. Systems with broken system clocks, are well, broken. However, broken system clocks, particularly in embedded systems, do exist. E2fsck will attempt to use hueristics to determine if the time can no tbe trusted; and to skip time-based checks if this is true. If this boolean is set to true, then e2fsck will always assume that the system clock can not be trusted. 

Да, страница руководства не может произносить «эвристику». К сожалению. Но, по-видимому, код работает в любом случае. 🙂

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

Поэтому я предлагаю следующее обходное решение: изменить сценарии загрузки, чтобы установить системную дату на некоторое время в будущем (скажем, 2038-01-18 на 32-битной машине) перед запуском fsck и прочитать его обратно с аппаратного обеспечения ( hwclock --hctosys , с дополнительными параметрами по мере необходимости в зависимости от вашего оборудования и использования GMT в аппаратных часах).

Похоже, он должен запускаться на виртуальной машине, где вы можете иметь больше контроля (или просто вернуться к снимку).

Вот решение, которое отлично подойдет для меня:

Создайте /etc/e2fsck.conf:

 [problems] # Superblock last mount time is in the future (PR_0_FUTURE_SB_LAST_MOUNT). 0x000031 = { preen_ok = true preen_nomessage = true } # Superblock last write time is in the future (PR_0_FUTURE_SB_LAST_WRITE). 0x000032 = { preen_ok = true preen_nomessage = true } 

Подробнее об этом исправить здесь:

http://stillstup.blogspot.com/2010/02/superblock-last-mount-time-is-in-future.html