天天看點

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

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解決。

分析檔案系統鏡像

[email protected]:/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