Имеется дев кит на базе AT91SAM9X25, стоит задача разработать embedded систему способную к апгрейдам, конфигурациям, логированием и т д. В качатсве внешней памяти используется NAND Flash 256Mb имеющая ограниченный цыкл перезаписи плюс запись ведётся постранично. Поэтому вопрос заключается в следующем: Как и где хранить изменяющиеся части корневой файловой системы, а именной /etc /home /var/log ?
На NAND флешке выделяю два раздела под корневую файловую систему. В первый раздел заливаю файловую систему SquashFS c содержимым которое изменяется только при апгрейде – программы, библиотеки (/bin /sbin /lib). Во второй раздел заливаю файловую систему UBI с содержимым /etc /home /var. Логи будут писаться не только системные, но и от приложений.
Есть опасение, что NAND будет быстро умирать от частой перезаписи логов. Какие могут быть пути решения данной проблемы? Или же с использованием UBIfs флешку нереально убить?
Проще всю NAND поделить на разделы UBI, то что нужно можно будет монтировать только для чтения. Плюсы - чем больше есть свобных блоков у UBI (напомню - на уровне подсистемы UBI происходит выравнивание износа - не путать с UBIFS) тем лучше. От применения SquashFS я вообще не вижу профитов, UBIFS с головой хватит. Убить NAND конечно можно - все зависит от объема информации которую будете писать в логах.
Насколько я понимаю SquashFs вообще не удастся залить на mtd раздел. Т.к. если будет хотя бы 1 битый блок то при заливке мы его пропускаем а при чтении SquashFs не имеет механизм обработки битых блоков соответственно будет читаться некорректно, поэтому всё равно надо будет ставить UBI аттачить его и маунтить SquashFS.
Правильно ли я понимаю суть причины?
Нет. squashfs можно использовать на разделах MTD поверх mtdblk - но помоему этот раздел не должен содержать битых блоков - это верно. А можно поверх ubiblk http://lwn.net/Articles/452944/
есть еще вариант gluebi http://www.linux-mtd.infradead.org/faq/ubi.html#L_run_jffs2
но там совсем нереальный оверхед MTD -> UBI -> gluebi -> MTD -> mtdblock)
Выравниванием износа MTD не занимается, этим занимается UBI, но при использовании UBI проще хранить все на UBIFS - ей не нужна лишняя абстракция в виде ubiblk, UBIFS поддерживает компрессию и ее можно смонтировать в RO - для чего нужна Squasfs ?