我正在尝试将 jffs2 文件挂载到 /mnt/mtdblock0,但由于 mtd 太小,我不断收到错误。
我运行的挂载它的命令是:
modprobe mtdblock
modprobe mtdram total_size=49152 erase_size=128
dd if=rootfs.jffs2 of=/dev/mtdblock0
mount -t jffs2 /dev/mtdblock0 /mnt/mtd
dd 命令的输出是:
dd: writing to ‘/dev/mtdblock0’: No space left on device
98305+0 records in
98304+0 records out
50331648 bytes (50 MB) copied, 0.295263 s, 170 MB/s
安装后我执行“df -h”并得到:
/dev/mtdblock0 48M 48M 0 100% /mnt/mtd
来自“mtdinfo /dev/mtd0”:
mtd0
Name: mtdram test device
Type: ram
Eraseblock size: 262144 bytes, 256.0 KiB
Amount of eraseblocks: 192 (50331648 bytes, 48.0 MiB)
Minimum input/output unit size: 1 byte
Sub-page size: 1 byte
Character device major/minor: 90:0
Bad blocks are allowed: false
Device is writable: true
rootfs.jffs2 的大小为 51280296,而上述命令显示只有 50331648 可用,因此空间不足的原因就不难理解了。我一直没能弄清楚如何增加 mtd0 的大小。
我一直在阅读这样的文章这讨论如何设置 mtdparts,但我不太明白他们讨论的过程。我尝试过使用 flash_eraseall、增加 total_size 和 eras_size 参数、从命令行设置 mtdparts 以及从 /usr/src/linux-headers-4.2.0-35/drivers/mtd/Kconfig 设置 mtdparts。
有人知道我可以做些什么来增加 mtd 的大小吗?任何建议或资源都将不胜感激。我正在使用 Ubuntu 14.04 桌面。
答案1
我设法找到了解决方法。我会在这里发布它以防其他人遇到此问题。
我开始运行命令本文我注意到,当我执行“df -h”时,“modprobe nandsim”导致 /mnt/mtd 显示更大的大小。当我再次尝试挂载时,它似乎工作正常。“df -h”仍然显示 /mnt/mtd 已 100% 满,但它有 50M,大约是 rootfs.jffs2 的大小。当我查看挂载的文件系统时,一切都在我预期的位置,并且没有像以前那样缺少/不完整的目录。
我不能说我完全理解为什么这可以解决这个问题,但确实如此。如果其他人对此工作原理有更多见解,请发表评论或将其作为新答案,我会将其标记为已接受。