可以直接挂载jffs2文件系统
用于在 linux 上挂载 jffs2 文件系统
安装 JFFS2 映像的一种方法是使用 mtdram 模块来模拟使用系统 RAM 的 MTD 设备。这适用于小于大约 32 MB 的 JFFS2 图像,但不适用于较大的图像,因为它需要分配大量系统 RAM。这个过程的基本步骤如下:
加载 mtdram 和 mtdblock 模块。使用 dd 命令将 JFFS2 映像复制到 /dev/mtdblock0。挂载 /dev/mtdblock0 作为 JFFS2 文件系统。
为了简化这个过程,EMAC 创建了一个脚本,它以 JFFS2 镜像、挂载点和镜像的擦除块大小为参数。此脚本的默认擦除块大小为 128 KiB,这是 EMAC 产品上使用的大多数 NOR 闪存和一些 NAND 闪存的正确值。可以从复制或创建映像的系统的 /proc/mtd 的内容中确定擦除块大小。例如,如果“erasesize”参数的值为 00040000,则设备的擦除块大小为 256 KiB(0x40000 = 262144 字节,262144 / 1024 = 256 KiB)。jffs2_mount_mtdram.sh 脚本如下所示。
#!/bin/bash
## Script to mount jffs2 filesystem using mtd kernel modules.
## EMAC, Inc. 2009
if [[ $# -lt 2 ]]
then
echo "Usage: $0 FSNAME.JFFS2 MOUNTPOINT [ERASEBLOCK_SIZE]"
exit 1
fi
if [ "$(whoami)" != "root" ]
then
echo "$0 must be run as root!"
exit 1
fi
if [[ ! -e $1 ]]
then
echo "$1 does not exist"
exit 1
fi
if [[ ! -d $2 ]]
then
echo "$2 is not a valid mount point"
exit 1
fi
if [[ "$3" == "" ]]
then
esize="128"
else
esize="$3"
fi
# cleanup if necessary
umount /dev/mtdblock0 &>/dev/null
modprobe -r mtdram &>/dev/null
modprobe -r mtdblock &>/dev/null
modprobe mtdram total_size=32768 erase_size=$esize || exit 1
modprobe mtdblock || exit 1
dd if="$1" of=/dev/mtdblock0 || exit 1
mount -t jffs2 /dev/mtdblock0 $2 || exit 1
echo "Successfully mounted $1 on $2"
exit 0
——
**developer@ldc:~$ sudo ./jffs2_mount_mtdram.sh rootfs.jffs2 /mnt/jffs2 256**
使用 jffs2_mount_mtdram.sh 在 /mnt/jffs2 上挂载名为 rootfs.jffs2 的 256 KiB 擦除块大小的映像