Хорошо, после долгих прочтений я наконец-то понял, как это сделать в Ubuntu:
1. )Смоделируйте устройство NAND MT -с помощью nandsim
.
modprobe nandsim first_id_byte=... second_id_byte=.. third_id_byte=.. fourth_id_byte=...
Список идентификаторов микросхем NAND.
2. )Узнать MT -id устройства
cat /proc/mtd | grep -i "NAND Simulator"
3. )Загрузить модуль ядра UBI
modprobe ubi
4. )Стереть МТ -устройство (этот шаг можно пропустить)
flash_erase /dev/mtdX 0 0
5. )Прошить образ UBI с помощьюubiformat
ubiformat /dev/mtdX -y -f /path/to/ubi -O XXXX -s XXXX
6. )Присоедините устройство MT -к UBI с помощью ubiattach
и запишите номер устройства UBI
.
ubiattach -p /dev/mtdX
7. )Установите его с помощьюmount
mount -t ubifs ubiX /path/to/mount-point/
8. )Внесите изменения.
9. )Создайте UBIFS с помощьюmkfs.ubifs
mkfs.ubifs -o ubifs.img -m XXXX -e XXXX -c XXXX -v -r /path/to/mount-point/
10. )Создайте образ UBI с помощьюubinize
ubinize -o final.ubi -p XXXX -m XXXX -s XXXX -v ubinize.cfg
XXXX
= Параметр, относящийся к используемому чипу флэш-памяти NAND.
ubinize.cfg
выглядит примерно так:
[rootfs]
mode=ubi
image=ubifs.img
vol_name=rootfs
vol_flags=autoresize
vol_type=dynamic
vol_id=0
Хитрость заключается в использованииeval
Очень маленький пример:
( echo '000{90,91}' ; echo '002{10,11}' ; echo '110{50,51}' ) | \
while read L ; do eval "echo $L" | tr ' ' '\n' ; done