2023年8月3日发(作者:)

Squashfs⽂件系统简介Squashfs⽂件系统简介⼀、squashfs简介Squashfs是⼀套基于Linux内核使⽤的压缩只读⽂件系统。该⽂件系统能够压缩系统内的⽂档,以及⽬录,⽂件最⼤⽀持2^64字节特点:数据(data),节点(inode)和⽬录(directories)都被压缩保存了全部的32位uid/gids和⽂件的创建时间⽀持多达4G的⽂件系统节点和⽬录都是⾼度压缩, 所有压缩的节点长度平均在8个字节左右squashfs可以有更⼤的块⼤⼩, 这样可以达到⽐4K块⼤⼩更⼤的压缩率squashfs引进了碎⽚块(fragment blocks)的概念: ⼀种将许多⽐块⼩的⽂件存储在⼀个块中, 以达到更⼤的压缩率重复的⽂件会被检测并删除掉同时⽀持big和little endian架构编译使⽤SQ的基本步骤:重新打包和编译linux内核, 使之⽀持SQ编译mksquashfs⼯具使⽤mksquashf创建压缩⽂件系统挂载: mount suqash⽂件系统到⼀个临时⽬录如果需要⾃动挂载,更改/etc/fstab 或者起始脚本, 以使linux操作系统⾃动加载新的 squashfs ⽂件系统⼆、flash分区fdisk是⽤来查看硬盘分区的,不能查看flash分区,因为flash是没有所谓的分区表查看flash分区使⽤命令cat /proc/partitions不像硬盘通过命令分区,flash分区是Linux内核中实现的Uboot没有对Nandflash进⾏分区,通过bootargs参数将分区信息传递给内核setenv bootargs ‘mem=64M console=ttyAMA0,115200 rw root=/dev/mtdblock2 rootfstype=squanshfsmtdparts=hi_sfc:1M(boot),4M(kernel),12M(rootfs)’三、⽂件系统镜像制作mksquashfs source dest [options] [-e list of exclude dirs/files]eg:mksquashfs ** **.squashfs -b 64K -comp xz**-b :**设置块⼤⼩,单位 Bytes,默认 131072 bytes (1MB)-comp:指定压缩算法:gzip (default)/lzo/xz四、镜像使⽤提取镜像中的⽂件:unsquashfs **.squashfs将镜像⽂件转换为⼀个块设备:sudo losetup /dev/myloop **.squashfs将块设备挂载到主⽂件系统的⽬录:sudo mount /dev/myloop dirname就可以进⼊dirname⽬录,对该虚拟磁盘进⾏操作了,就像使⽤真实磁盘⼀样卸载该镜像:sudo umount /dev/myloopsudo losetup -d /dev/myloop

2023年8月3日发(作者:)

Squashfs⽂件系统简介Squashfs⽂件系统简介⼀、squashfs简介Squashfs是⼀套基于Linux内核使⽤的压缩只读⽂件系统。该⽂件系统能够压缩系统内的⽂档,以及⽬录,⽂件最⼤⽀持2^64字节特点:数据(data),节点(inode)和⽬录(directories)都被压缩保存了全部的32位uid/gids和⽂件的创建时间⽀持多达4G的⽂件系统节点和⽬录都是⾼度压缩, 所有压缩的节点长度平均在8个字节左右squashfs可以有更⼤的块⼤⼩, 这样可以达到⽐4K块⼤⼩更⼤的压缩率squashfs引进了碎⽚块(fragment blocks)的概念: ⼀种将许多⽐块⼩的⽂件存储在⼀个块中, 以达到更⼤的压缩率重复的⽂件会被检测并删除掉同时⽀持big和little endian架构编译使⽤SQ的基本步骤:重新打包和编译linux内核, 使之⽀持SQ编译mksquashfs⼯具使⽤mksquashf创建压缩⽂件系统挂载: mount suqash⽂件系统到⼀个临时⽬录如果需要⾃动挂载,更改/etc/fstab 或者起始脚本, 以使linux操作系统⾃动加载新的 squashfs ⽂件系统⼆、flash分区fdisk是⽤来查看硬盘分区的,不能查看flash分区,因为flash是没有所谓的分区表查看flash分区使⽤命令cat /proc/partitions不像硬盘通过命令分区,flash分区是Linux内核中实现的Uboot没有对Nandflash进⾏分区,通过bootargs参数将分区信息传递给内核setenv bootargs ‘mem=64M console=ttyAMA0,115200 rw root=/dev/mtdblock2 rootfstype=squanshfsmtdparts=hi_sfc:1M(boot),4M(kernel),12M(rootfs)’三、⽂件系统镜像制作mksquashfs source dest [options] [-e list of exclude dirs/files]eg:mksquashfs ** **.squashfs -b 64K -comp xz**-b :**设置块⼤⼩,单位 Bytes,默认 131072 bytes (1MB)-comp:指定压缩算法:gzip (default)/lzo/xz四、镜像使⽤提取镜像中的⽂件:unsquashfs **.squashfs将镜像⽂件转换为⼀个块设备:sudo losetup /dev/myloop **.squashfs将块设备挂载到主⽂件系统的⽬录:sudo mount /dev/myloop dirname就可以进⼊dirname⽬录,对该虚拟磁盘进⾏操作了,就像使⽤真实磁盘⼀样卸载该镜像:sudo umount /dev/myloopsudo losetup -d /dev/myloop