Цитата(vgovseychuk @ Mar 17 2016, 14:06)

Вообще да, можно и так.
Но это же каждый раз надо вписывать в скрипт, какие пакеты и файлы ты обновлял.
Не понял, о каком скрипте Вы говорите.
Возможно, Вы не совсем понимаете, как работают менеджеры пакетов. В системе имеется список пакетов, установленных в текущий момент. При необходимости обновиться менеджер пакетов скачивает из репозитория свежий список пакетов и сравнивает с установленными. Если он видит в списке пакет более поздней версии, чем установленный, то новый пакет скачивается и устанавливается. Все это (и многое другое, я тут сильно упростил процесс) выполняет готовый менеджер пакетов, Вам как разработчику об этом заботиться не надо, разве что не забывать менять версию пакета (да и это можно автоматизировать, у меня версии пакетов формируются автоматически из ревизии SVN)...
Цитата(vgovseychuk @ Mar 17 2016, 16:09)

Например, нет команды mtd read в OpenWrt, и не проверить, правильно ли все записалось.
Хм... Да,
mdt read нет. Но чем Вас не устраивает
mtd verify?
Цитата(vgovseychuk @ Mar 17 2016, 16:09)

Или как узнать, все ли бутлоадер правильно прочтет, если в разделе есть так любимые NAND-ом бэдблоки.
Смотрите документацию/код вашего бутлоадера. Вы, кстати, не сказали, каким бутлоадером пользуетесь. Например u-boot может читать как с учетом, так и без учета бэдблоков. В вашем случае, очевидно, бэдблоки надо учитывать, поэтому вместо
nand read следует использовать
nand read.jffs2 (если у Вас u-boot). То же самое касается
nand write.
Цитата(vgovseychuk @ Mar 17 2016, 16:09)

Нормально ли то, что я копирую весь раздел операцией read/write а не размер файла(понятно, что это медленнее, но что будет происходить при наличии бэдблоков)?
В общем случае - не нормально. Это может быть нормально, если целевой раздел (куда мы копируем) больше размера копируемых данных, и даже при наличии бэдблоков данные в него заведомо влезут. Иначе, если в процессе записи будет пропуск бэдблока, запись "вылезет" за пределы раздела. У Вас здесь, кстати, вообще какая-то путаница с размерами: в первом сообщении Вы пишете, что размер раздела fdt 128k. А теперь Вы пишете в него данные размером 0x40000, то есть 256k!

Надеюсь, это не ошибка, а Вы просто поменяли разбивку...
Цитата(vgovseychuk @ Mar 17 2016, 16:09)

P.S. В Openwrt есть еще команда nandwrite. Может, ее применять вместо mtd write?
Это - на Ваш вкус. Лично я именно nandwrite использую для обновления ядра.
И еще вопрос - зачем Вы fdt и ядро переписываете дважды (через промежуточные разделы)? С файловой системой понятно - Вы не можете переписать ее пока она смонтирована. Но с fdt и kernel-то какая проблема? Вы не перемудрили ли здесь?