jffs2 Image ohne MTD Device mounten

(getestet mit Ubuntu 14.04 x86 64-Bit, Linux 3.13)

Dieses File ist im Big-Endian Format, weil der file Befehl es nur als Daten-Datei erkennt.

$ file rootfs.jffs2
rootfs.jffs2: data

Um es zu konvertieren müssen die MTD Utilities installiert werden:

$ sudo apt-get update
$ sudo apt-get install mtd-utils

Das File rootfs.jffs2 (Big-Endian) ins Little-Endian Format konvertieren (rootfs.little.jffs2):

$ jffs2dump -bcr -e rootfs.little.jffs2 rootfs.jffs2

Nun wird das Filesystem richtig erkannt:

$ file rootfs.little.jffs2 
rootfs.little.jffs2: Linux jffs2 filesystem data little endian

Image mounten:

$ sudo modprobe jffs2
$ sudo modprobe mtdram total_size=28672 # kB
$ sudo modprobe mtdblock
$ ls /dev/mtd*
/dev/mtd0  /dev/mtd0ro  /dev/mtdblock0
$ sudo dd if=rootfs.little.jffs2 of=/dev/mtdblock0
$ mkdir rootfs
$ sudo mount -t jffs2 /dev/mtdblock0 ./rootfs

Nun können die Dateien bearbeiten werden. Bevor das Image geflashed wird, muss es wieder ins Big-Endian Format zurückkonvertiert werden:

$ sync
$ sudo umount ./rootfs
$ sudo dd if=/dev/mtdblock0 of=rootfs2.little.jffs2
$ jffs2dump -lcr -e rootfs.big.jffs2 rootfs2.little.jffs2