系统篇: squashfs 文件系统
Posted 旧年不在cd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统篇: squashfs 文件系统相关的知识,希望对你有一定的参考价值。
一、squashfs简介
Squashfs是一套基于Linux内核使用的压缩只读文件系统。该文件系统能够压缩系统内的文档,inode以及目录,文件最大支持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=squanshfs mtdparts=hi_sfc:1M(boot),4M(kernel),12M(rootfs)'
参考链接:https://blog.csdn.net/wesleyluo/article/details/8102361
三、文件系统镜像制作
mksquashfs source dest [options] [-e list of exclude dirs/files]:
- eg:mksquashfs xxx.squashfs -b 64K -comp xz
- -b <block_size>:设置块大小,单位 Bytes,默认 131072 bytes (1MB)
- -comp:指定压缩算法:gzip (default)/lzo/xz
参考链接:https://blog.csdn.net/qq_40083589/article/details/82948536
四、镜像使用
提取镜像中的文件:
unsquashfs xxx.squashfs
将镜像文件转换为一个块设备:
sudo losetup /dev/myloop xxx.squashfs
将块设备挂载到主文件系统的目录:
sudo mount /dev/myloop dirname
就可以进入dirname目录,对该虚拟磁盘进行操作了,就像使用真实磁盘一样
卸载该镜像:
sudo umount /dev/myloop
sudo losetup -d /dev/myloop
参考链接:https://blog.csdn.net/qq_40083589/article/details/82948536
以上是关于系统篇: squashfs 文件系统的主要内容,如果未能解决你的问题,请参考以下文章
linux中常用文件系统介绍——cramfs JFFS2 NFS initrd yaffs2 Ext4 squashfs