squashfs檔案系統分析與製作
前段時間遇到一個海思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
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