Я работаю над встроенным устройством debian linux. Из-за того, что в любой момент происходит отключение питания, что приводит к внезапному отключению питания, мы установили FSCKFIX с «нет» на «да» в файле / etc / default / rcS. Без этого я столкнулся с ошибками, когда система переходит к терминалу, ожидая, пока пользователь (в последовательном режиме) вручную запустит fsck для восстановления диска (поскольку устройство не имеет терминала при нормальной работе, это фактически блокирует коробку). Также карта была сделана RO, перемонтирована как RW по мере необходимости для обновлений, но это не связано с моей проблемой, я не думаю.
Я пытался сделать модульный тест для этого, который повредит SD-карту, тогда мы сможем вернуть карту во встроенное устройство, и оно должно восстановиться и загрузиться как обычно.
Первоначально меня интересовала только надежная генерация ошибки, которую я иногда вижу с FSCKFIX = no, т.е. переход к терминалу для исправления карты вручную с помощью fsck. Я пробовал предложения Вот и Вот, но эти методы либо делают карту полностью незагружаемой, либо кажутся проигнорированными / исправленными, и система загружается нормально, не подталкивая меня к терминалу для запуска fsck. Похоже, мне нужно повредить диск очень специфическим образом, чтобы заставить fsck нуждаться в ручном вмешательстве с FSCKFIX = no. Может кто подскажет как это сделать ????
Ура.
Хорошо, технически я получил свой ответ по той ссылке, которую опубликовал Иэн (ура!), Мне просто нужно было сделать счет огромным и убедиться, что я вызвал e2fsck с опцией -f & -F, а также -p, чтобы fsck увидел проблему.
sudo dd if = / dev / zero of = / dev / mmcblk0p4 bs = 1 count = 4096 seek = 10000; синхронизировать sudo e2fsck -f -F -p / dev / mmcblk0p4; эхо $? / dev / mmcblk0p4: изменить размер inode недействительно.
/ dev / mmcblk0p4: НЕОЖИДАННАЯ НЕПРАВИЛЬНОСТЬ; ЗАПУСТИТЕ fsck ВРУЧНУЮ. (т.е. без параметров -a или -p) 4
Хотя это дало мне результат, который я ищу (сломанная SD-карта), мне бы очень хотелось узнать, как fsck на самом деле определяет, что раздел ext3 поврежден, когда он не использует контрольные суммы данных, и если он использует журнал, то как это работает для журналирования ext2 или ext3 wo?
Снова ура