前段时间遇到一个海思Hi3519开发板,文件系统较特殊,是squashfs,文件系统的特点是只读,使用mount -o remout,rw 无法更改为rw,以为之前没有遇到过,就研究了一下:
使用squashfs-tools分析文件系统镜像,并制作自己的文件系统
使用squashfs文件系统,bootargs需要修改
bootargs=mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=squashfs rwmtdparts=hi_sfc:1M(boot),3M(kernel),8M(rootfs),3M(program),1M(param)
内核可能需要选项支持,待确认。
需要用到的工具:squashfs目前最新版本4.3
https://sourceforge.net/projects/squashfs/
tar
cd squashfs-tools
vi Makefile 修改XZ_SUPPORT = 1
注1
Squashfs默认不支持xz,需要如上修改Makefile,修改之后,编译有个错,缺少liblzma-dev,安装liblzma-dev_5.1.1alpha+20120614-2ubuntu2_i386.deb解决。
分析文件系统镜像
root@vmw:/opt/Hisi/Hi3519/squashfs4.3# unsquashfs -srootfs_glibc_master_squashfs.img
Found a valid SQUASHFS 4:0 superblock onrootfs_glibc_master_squashfs.img.
Creation or last append time Sun Nov 5 11:17:38 2017
Filesystem size 9294.89 Kbytes (9.08 Mbytes)
Compression xz // 制作镜像时需要用到的参数,注1
Block size 65536 // 制作镜像时需要用到的参数
Filesystem is exportable via NFS
Inodes are compressed
Data is compressed
Fragments are compressed
Always-use-fragments option is not specified
Xattrs are compressed
Duplicates are removed
Number of fragments 87
Number of inodes 1271
Number of ids 2
制作文件系统镜像
mksquashfs/opt/Hisi/Hi3519/Hi3519V101_SDK_V1.0.2.0/osdrv/pub/rootfs_uclibc_big-little3519_wqw.sqhfs -b 65536 -comp xz
烧写
与其他文件系统烧写方法一样。
--------temp test
mw.b 82000000 ff 800000
tftp 0x82000000 3519_wqw.sqhfs
sf probe 0
sf erase 400000 800000
sf write 82000000 400000 800000