Тема: Редактирование корневой ФС
Только под линуксом.
Загрузка образа в оперативную память
Подгружаем необходимые модули:
modprobe mtdblock
modprobe ubi
modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa third_id_byte=0x00 fourth_id_byte=0x15Если кому интересно, что за чёрная магия в параметрах последнего можуля, об этом можно почитать здесь, например. У нас на N900 256MiB, 2048 bytes page, его и эмулируем.
Проверяем, что всё работает:
cat /proc/mtd
dev: size erasesize name
mtd0: 10000000 00020000 "NAND simulator partition 0"
ls -la /dev/mtd*
crw------- 1 root root 90, 0 2011-09-23 22:05 /dev/mtd0
crw------- 1 root root 90, 1 2011-09-23 22:05 /dev/mtd0ro
brw-rw---- 1 root disk 31, 0 2011-09-23 22:05 /dev/mtdblock0Заливаем образ ФС в симулятор:
dd if=rootfs.jffs2 of=/dev/mtdblock0 bs=2048Добавляем MTD к UBI:
ubiattach /dev/ubi_ctrl -m 0Всё, можно монтировать!
mkdir /mnt/n900
mount -t ubifs ubi0_0 /mnt/n900/Теперь можем делать в /mnt/n900, что хотим.
Упаковка обратно в образ
Упаковываем в ubifs:
mkfs.ubifs -m 2048 -e 129024 -c 2047 -r /mnt/n900/ rootfs_ubifs.jffs2Упаковать можно всё, что угодно, не только загруженный ранее образ ubi.
Например, упаковка ранее созданного backupmenu бэкапа:
mkdir rootfs
tar xf *date*-rootfs.tar -C ./rootfs/
mkfs.ubifs -m 2048 -e 129024 -c 2047 -r ./rootfs/ rootfs_ubifs.jffs2Создаём конфиг для UBI:
cat > cfg.ini << EOF
[rootfs]
mode=ubi
image=rootfs_ubifs.jffs2
vol_id=0
vol_size=160MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
vol_alignment=1
EOFПомещаем ubifs в UBI:
ubinize -o rootfs_new.jffs2 -p 128KiB -m 2048 -s 512 cfg.iniВсё, образ можно прошить:
flasher-3.5 -f -r rootfs_new.jffs2Размонтируем фс:
umount /mnt/n900Отключаем симулятор от UBI:
ubidetach -m 0Выгружаем ненужные модули:
rmmod nandsim ubi mtdblock ubifs nand nand_ids nand_ecc mtdchar mtd_blkdevs mtdУдаляем ненужный образ ubifs:
rm rootfs_ubifs.jffs2