关于squashfs一些收集和用法

博客分类: squashfs 阅读次数: comments

关于squashfs一些收集和用法

纯属好奇能力有限,大神请无视,个人愚见,不喜一起共同学习思考啊 由于能力和时间关系没有搞定解包之后封包还原错误问题,只是简单写下过程。期待大神出现解决心理纠结.

squashfs文件介绍

当创建微小尺寸和嵌入式[Linux]系统中,存储设备(如u盘,闪存盘,路由器固件等)的每个字节是非常重要的,因此,使用压缩到处可能的。 此外,经常需要存档的目的压缩文件系统。 对于庞大的公共档案馆,以及用于个人媒体档案,这是必不可少的工具目前压缩能力最强大的工具(不知是否有之一,能力有限)

squashfs是一个只读文件系统(压缩内部文件目录结构权限可以自定义),可以压缩整个文件系统或单个目录,并将其写入到其他设备/分区或普通文件,然后直接安装squashfs文件(如果​​设备)或使用回送设备(如果是一份文件)。 的squashfs的模块化,紧凑的系统设计是福。 为了存档,squashfs的为您提供了更多的灵活性和性能的速度比压缩包存档。

Squashfs的分布作为Linux内核源代码的补丁(使Squashfs的阅读你的内核支持).

下载squashfs

squashfs官网http://squashfs.sourceforge.net/ 它包含了最新版本的消息,它的更新日志,以及有关的squashfs的一些常用信息。 Squashfs的最新版本的项目主页在SourceForge。

安装Squashfs文件

下载squashfs-tools命令:

wget下载

wget http://sourceforge.net/projects/squashfs/files/squashfs/squashfs4.2/squashfs4.2.tar.gz/download

apt-get安装

apt-get install squashfs-modules-4.2 squashfs-tools 

解压刚下载的squashfs

(刚才下载的文件名是download直接修改为):

tar -zxvf squashfs4.2.tar.gz

进入squashfs-tools

cd squashfs4.2/squashfs-tools

安装命令

make &&make install

mksquashfs的一些注意事项:

当新的文件添加到新的文件系统或添加到现有的,mksquashfs将自动重复名称重命名文件:如果两个或多个文件命名文本将出现在同一个生成的目录,第二个文件将被重新命名为文本1 ,第三个到文本_2等。 重复的文件将被删除,这样就会有只有一个物理实例(通过的squashfs 4.x中,您可以禁用与-no-重复选项检测/去除重复的)。

如果目标上有一个预先存在的squashfs文件系统,默认情况下,新中源项目将被附加到现有的根目录。 检查下面的选项表强制mksquashfs覆盖整个目标及/或更改添加了新的源项目的方式。

如果一个源文件或目录,就变成了在一个新创建的文件系统的根。 如果两个或多个源文件和/或目录中给出,它们都将成为新的文件系统的根目录的子项。

由此产生的文件系统将被填充到4 KB的倍数:这是必需的块设备上所使用的文件系统。 如果你非常肯定你没有这个定义,使用-nopad选项来禁用此操作。


mksquashfs工具的命令行选项

创建打包squashfs文件:

mksquashfs工具,它创建压扁的文件系统(在文件或块设备) 命令如下:

mksquashfs src/ src.013

/*mksquashfs 文件目录/文件目录 文件名.任意后缀*/(反正是二进制文件)

解压squashfs文件

unsquashfs工具,从提取的多个文件现有压扁的文件系统。



-v[ersion]           打印版,许可证和版权信息

-i[nfo]              打印的文件都是从文件系统中提取

-l[ist]              列出文件系统没有被解压文件

-li                  他们的属性,他们是unsquashed文件列表(3.3)

-ll                  没有任何提取属性的压扁的文件系统中的文件列表(3.3)

-d[estination] path  指定unsquashed项目的目标路径

-f[orce]             显示文件系统的超级块信息(它可以发现用于压缩文件系统版本和选项)(3.3)

-s[tat]              提取的目录或文件的列表(条目每行一个)(3.3)

-e[f] [extract file] 对提取物的名称作为POSIX正则表达式(3.3)

-r[egex]

unsquashfs src.013
/home/ro.fs  /mnt squashfs loop 0 0
unionfs /home/user1 unionfs dirs=/home/rw.fs=rw:/mnt=ro 0 0

这个未知不知道什么原因 直接输入文件夹目录下面的文件一直保存 目录不存在 能力有限 原因未知 我只好把文件拖到home下面用unsquashfs src.013来解压(尴尬)

最新的squashfs版本树是3.x中,前者是2.x版本 本文档介绍给予适当的笔记都这些版本。 例如,如果某些功能或参数,在这些发行的树木不同,它会被写入如下: 新值(3.X)或旧值(2.X)目前最新版本是4.3但是官网好像不是原因未知。

Squashfs的概述

数据显示,i节点和目录被压缩

Squashfs的文件充满UID /导报(32位),以及文件的创建时间

文件达到2 ^ 64字节的支持; 文件系统可以达到2 ^ 64字节

索引节点和目录数据是高度压缩,并在包装​​字节边界; 每个压缩索引节点是平均长度为8个字节(确切长度文件类型,即普通文件,目录,符号链接,和块/字符设备的inode大小不同而异)

Squashfs的可使用的块大小最多可达64 KB(2.X)以及1MB(3.X)。 默认大小为128KB(3.X),达到更高的压缩率比正常4K块大小

按在4.x版本据介绍片段块的概念:加入多个文件小于块大小小到一个单一的块的能力,实现更大的压缩比

被检测到并删除重复文件

既大和little endian架构的支持; Squashfs的可以安装在不同的字节顺序的机器创建的文件系统