Pregunta:
Estoy trabajando con el firmware del teléfono SIP. Extraje la imagen del sistema de archivos JFFS2 del firmware y la monté usando modprobe como esto:
sudo modprobe mtdram total_size=36360
sudo modprobe mtdblock
sudo modprobe jffs2
sudo modprobe block2mtd
sudo dd if=~/1C6A83.jffs2 of=/dev/mtdblock0
sudo mount -t jffs2 /dev/mtdblock0 ~/mnt
Sin embargo, cuando trato de cambiar archivos en el dispositivo montado, aparece el error "No queda espacio en el dispositivo". ¿Qué estoy haciendo mal? ¿Puede ser que mi dispositivo mtdblock0 esté protegido contra escritura?
Respuesta:
Quería hacer lo mismo y no obtuve el espacio vacío en el dispositivo (leí en alguna parte que ese error puede deberse a una imagen incompleta …), pero no pude averiguar cómo actualizar la imagen. md5sum
del archivo original no cambió, y ejecutar la sync
como se sugirió después de buscar en Google tampoco tuvo éxito …
Seguí el camino de extraer la imagen jffs2 y luego volver a empaquetar el sistema de archivos jffs2.
Puse todo en github , pero aquí está la esencia:
Esto descomprimirá un sistema de archivos .jffs2
en /my/target/dir
y lo mtd_root.sum.bin
a empaquetar en mtd_root.sum.bin
Desembalaje
mount -t jffs2 -o ro /tmp/mtdblock0 /tmp/e2jffs2
(cd /tmp/e2jffs2; tar cf - .) | (cd "/my/target/dir" ; tar xpf -)
umount /tmp/e2jffs2
Reembalaje
mount -t jffs2 -o ro /tmp/mtdblock0 /tmp/e2jffs2
mkfs.jffs2 --root=/tmp/e2jffs2/ --output=/tmp/mtd_root.bin --eraseblock=128KiB --pad --no-cleanmarkers
sumtool --pad --eraseblock=128KiB --input=/tmp/mtd_root.bin --output=$(dirname "/my/target/dir")/mtd_root.sum.bin