firmware – ¿Cómo puedo modificar archivos en una imagen jffs2?

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

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım