Модули SK-iMX6S-OEM, некоторое время назад одни из пользователей столкнулись с ситуацией, когда "на ровном" месте система переставала грузиться с загрузочного UBI раздела.
После чего, они изменили способ загрузки на прямое чтение с секторов NAND, через некоторое время ситуация повторилась, только теперь рушится корневая UBI ФС (причем пользовательский софт ничего на флешку не пишет). https://pastebin.com/XeKFH8ra https://pastebin.com/VDVmd4GN
Лирическое отступление, появление bad блоков не является само по себе трагедией (даже новые чипы отгружаются с оговариваемым количеством имеющихся битых блоков), возникают (во всяком случае должны) они только при записи, о чем контроллер знает и далее ФС помечает блок как bad.
Конечно отсюда возникает большой вопрос, как возникновение bad блока может привести к рушению ФС ...
Думаю, вам первым делом нужно построить макет имитирующий условия эксплуатации и однозначно определиться, что приводит к краху ФС.
Первое, что приходит в голову по части саомй UBI - покрутить ее настройки в ядре (make linux-menuconfig), как минимум можно увеличить значение "Maximum expected bad eraseblocks count per 1024 eraseblocks" ...
Или включить режим "Read-only block devices on top of UBI volumes".
Подробнее опишу изделие в котором это всё происходит:
- Процессорный модуль установлен на материнскую плату, на которой разведены цепи питания, LVDS и RS232. Больше никакие интерфейсы модуля не используются.
- К процессорному модулю прикручена отводящая тепло алюминиевая пластина. Модуль находится в жёстких температурных условиях, но его температура не выходит за пределы допустимых при любых режимах эксплуатации.
- Загрузка модуля осуществляется из NAND, на который пользовательскими приложениями НИЧЕГО НЕ ПИШЕТСЯ.
- После загрузки модуля автоматически загружается пользовательское графическое приложение, написанное на Qt. Приложение получает данные из RS232 и визуализирует их через LVDS на LCD матрице.
- Включение/ВЫКЛЮЧЕНИЕ устройства производится в любой момент времени путём подачи/СНЯТИЯ напряжения питания.
попробуйте отключить nand-on-flash-bbt - если будет работать то лучше её не использовать, ее пришлось включать для больших MLC флешей, с текущими SLC я не знаю - нужна ли эта опция, возможно у нее достаточно OOB для маркеров
Если изменить inittab с rw на ro сразу, то не получается переписать образ с SD карты в NAND. Возникает ошибка при выполнении последнего пункта - записи в mtd0. Видимо kobs-ng пытается что-то записать SD карту, которая к этому моменту смотнтирована уже в RO. (вывод работы root2nand.sd в лог-файл я при этом уже убрал)
Без опции nand-on-flash-bbt; работает nand - корневая монтируется ? Если да - я её тогда удалю в следующем релизе, т.к. всё равно MLC больше не планируется.
Без опции nand-on-flash-bbt; работает nand - корневая монтируется ? Если да - я её тогда удалю в следующем релизе, т.к. всё равно MLC больше не планируется.
Да, монтируется, только что проверил в одной из сборок. Завтра попробую и отпишусь как в 2014.08 приживётся это изменение.
Всем добрый день!
Порядка в 20 изделиях был применён скрипт, модифицирующий inittab, для монтирования rootfs в режиме ro. После двух недель эксплуатации один из модулей всё же перестал загружаться. Только лог загрузки теперь выглядит не так как в предыдущие разы: Boot Log