关于squashfs一些收集和用法 - LiberXue|FullStack|独立开发者|jekyll blog|GitHub blog

# 关于squashfs一些收集和用法

发布时间：2016-03-10 00:00:00 博客分类: squashfs 阅读次数: comments
little (1) endian (1) unsquashfs (1) squashfs (1) bin (1) 路由固件 (1)

# 关于squashfs一些收集和用法

2016-03-10 00:00:00

little (1) endian (1) unsquashfs (1) squashfs (1) bin (1) 路由固件 (1)

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

## 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的可以安装在不同的字节顺序的机器创建的文件系统

本文由 liberxue 创作，采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外，均为本站原创或翻译，转载前请务必署名
最后编辑时间为:2016-03-10 00:00:00