u-boot中支持jffs2的分析

u-boot中支持jffs2的分析 途行者阿杜 2017-11-20 11:05:33 697

/增加相应的环境变量值

define CONFIG_EXTRA_ENV_SETTINGS \

"netdev=eth2\0" \ "ethact=FCC2 ETHERNET\0" \ "consoledev=ttyS0\0" \ "ramdiskaddr=d00000\0" \ "ramdiskfile=ramdisk.img\0" \ "updatefile="MK_STR(CONFIG_UPDATEFILE)"\0" \ "mtdids=" MTDIDS_DEFAULT "\0" \ "mtdparts=" MTDPARTS_DEFAULT "\0" \ "partition=nor1,0\0" \ "mtddevnum=0\0" \ "mtddevname=system-1\0" \ "fdtaddr="MK_STR(CONFIG_FDTADDR)"\0" \ "fdtfile=" MK_STR(CONFIG_FDTFILE) "\0"

安装mkfs.jffs2命令工具方法

方法一、http://www.linux-mtd.infradead.org/ 1.获取mtd-utils-1.1.0.tar.bz2压缩包 2.解压后,make (若编译不通过则进行根据错误提示判断是否执行第三步) 3.yum install lzo-devel 4.再make 5.将mkfs.jffs、mkfs.jffs2复制到/usr/sbin/目录下即可

方法二、在宿主机上(fedora系统)运行 yum install mtd-utils

命令使用实例: mkfs.jffs2 -b -n -s 0x1000 -e 0x20000 -p 0x03200000 -d rootfs/ -o jffs2.img 说明: 根据目标板cpu支持的模式选择 -l(小端) -b(大端) ----这个很重要,不然u-boot识别不出来 页大小0x1000 4k 块大小0x20000 128k jffs2分区总空间0x03200000即50M,生成的jffs2.img并没有一下子分配50M

-p, --pad[=SIZE] Pad output to SIZE bytes with 0xFF. If SIZE is not specified, the output is padded to the end of the final erase block -r, -d, --root=DIR Build file system from directory DIR (default: cwd) -s, --pagesize=SIZE Use page size (max data node size) SIZE (default: 4KiB) -e, --eraseblock=SIZE Use erase block size SIZE (default: 64KiB) -c, --cleanmarker=SIZE Size of cleanmarker (default 12) -m, --compr-mode=MODE Select compression mode (default: priortiry) -x, --disable-compressor=COMPRESSOR_NAME Disable a compressor -X, --enable-compressor=COMPRESSOR_NAME Enable a compressor -y, --compressor-priority=PRIORITY:COMPRESSOR_NAME Set the priority of a compressor -L, --list-compressors Show the list of the avaiable compressors -t, --test-compression Call decompress and compare with the original (for test) -n, --no-cleanmarkers Don't add a cleanmarker to every eraseblock -o, --output=FILE Output to FILE (default: stdout) -l, --little-endian Create a little-endian filesystem -b, --big-endian Create a big-endian filesystem -D, --devtable=FILE Use the named FILE as a device table file -f, --faketime Change all file times to '0' for regression testing -q, --squash Squash permissions and owners making all files be owned by root -U, --squash-uids Squash owners making all files be owned by root -P, --squash-perms Squash permissions on all files --with-xattr stuff all xattr entries into image --with-selinux stuff only SELinux Labels into jffs2 image --with-posix-acl stuff only POSIX ACL entries into jffs2 image -h, --help Display this help text -v, --verbose Verbose operation -V, --version Display version information -i, --incremental=FILE Parse FILE and generate appendage output for it

其他jffs2相关信息:

在linux的PC上挂载jffs2根文件系统映像 因为jffs2是构建于MTD设备上的文件系统,所以无法通过loop设备来挂载,但是可以通过mtdram设备来挂载。mtdram是在用RAM实现的MTD设备,可以通过mtdblock设备来访问。使用mtdram设备很简单,只要加载mtdram和mtdblock两个内核模块即可。这两个内核模块一般的linux内核发行版都有编译好的,直接用modprobe命令加载。 下面是具体步骤: (1).加载mtdblock内核模块 modprobe mtdblock (2).加载mtdram内核模块,将该设备的大小指定为jffs2根文件系统映像的大小,块擦除大小(即flash的块大小)指定为制作该jffs2根文件系统时“-e”参数指定的大小,缺省为64KB。下面两个参数的单位都是KB。 modprobe mtdram total_size=5120 erase_size=256

(3).这时将出现MTD设备/dev/mtdblock0,使用dd命令将jffs2根文件系统拷贝到/dev/mtdblock0设备中。 dd if=jffs2.img of=/dev/mtdblock0 (4).将保存了jffs2根文件系统的MTD设备挂载到指定的目录上。 mount -t jffs2 /dev/mtdblock0 /mnt/mtd

这之后就可以到/mnt/mtd目录查看、修改挂载的jffs2根文件系统了,修改后的jffs2根文件系统可以通过dd命令拷贝为一个jffs2的映像文件

u-boot启动信息片段

ZN=> ls Scanning JFFS2 FS: . done. -rwx------ 8094 Sun Oct 16 07:30:56 2011 mpc8541cds.dtb -rwx------ 31457344 Sun Oct 16 07:30:56 2011 ramdisk.img -rwx------ 1658805 Sun Oct 16 07:30:56 2011 uImage ZN=> boot

JFFS2 loading 'uImage' to 0x500000

JFFS2 load complete: 1658805 bytes loaded to 0x500000

JFFS2 loading 'mpc8541cds.dtb' to 0xb00000

JFFS2 load complete: 8094 bytes loaded to 0xb00000

JFFS2 loading 'ramdisk.img' to 0xd00000

JFFS2 load complete: 31457344 bytes loaded to 0xd00000

Booting kernel from Legacy Image at 00500000 ...

Image Name: Linux-2.6.28.10 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1658741 Bytes = 1.6 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK

Loading init Ramdisk from Legacy Image at 00d00000 ...

Image Name: PPC RAMDISK Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 31457280 Bytes = 30 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK

Flattened Device Tree blob at 00b00000

Booting using the fdt blob at 0xb00000 Uncompressing Kernel Image ... OK

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
关于作者
途行者阿杜

途行者阿杜

一个爱徒步的~IT民工

原创106
阅读9w
收藏0
点赞1
评论1
打赏用户 0
我要创作
分享技术经验,可获取创作收益
分类专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
途行者阿杜
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
¥0.1易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区