在构建Linux系统时,有时会有一个文件rootfs.squashfs,这个是linux的文件系统文件。另外还可能会有一个xImage的kernel文件和u-boot.bin的uboot文件。
===== =====
什么是SquashFS?
https://docs.kernel.org/filesystems/squashfs.html
Squashfs是一个用于Linux的压缩的只读文件系统。
它使用zlib、lz4、lzo或xz压缩算法来压缩文件、inodes和目录。文件系统中的节点占用空间非常小,所有的块都被打包,以尽量减少数据的开销。支持大于4K的块大小,最大支持1MB的块(默认块大小为128K)。
Squashfs旨在用于一般的只读文件系统,用于存档(即在可能使用.tar.gz文件的情况下),以及在需要降低存储开销的存储空间受限的块设备或存储系统(如嵌入式系统)。
squashfs是一个只读的文件系统,必须使用mksquashfs程序来创建被填充的squashfs文件系统。
当前最新版本是4.5.1,发布时间17th March 2022。
此文件系统的官网是:
http://www.squashfs.org/ (SQUASHFS - A squashed read-only filesystem for Linux)
squashfs-tools的开发分支在kernel.org上:
git://git.kernel.org/pub/scm/fs/squashfs/squashfs-tools.git
功能介绍:
支持的最大文件系统大小为2^64 Byte, 最大文件大小为2TiB,最大的块大小为1 MiB,支持软链接、硬链接等。
===== =====
什么是SquashFS?
https://zh.wikipedia.org/zh-cn/SquashFS
Squashfs(.sfs)是一套供Linux核心使用的GPL开源只读压缩文件系统。Squashfs能够为文件系统内的文件、inode及目录结构进行压缩,并支持最大1024KB的区段,以提供更大的压缩比。
Squashfs的设计是专门为一般的只读文件系统的使用而设计,它可应用于数据备份,或是系统资源紧张的电脑上使用。最初版本的Squashfs采用 gzip 的数据压缩。版本 2.6.34 之后的Linux内核增加了对 LZMA和 LZO 压缩算法的支持,版本 2.6.38 的内核增加了对LZMA2的支持,该算法同时也是xz使用的压缩算法。
版本 2.6.35 之后的内核包含的Squashfs增加了扩展文件属性支持。
Squashfs常被用于各Linux发行版的LiveCD中,也用于OpenWrt 和DD-WRT 的路由器固件。Chromecast也是该文件系统的用户。
发布时间:2009 (Linux 2.6.29),开发者:Phillip Lougher, Robert Lougher,最大文件尺寸16 EiB(Exbibyte, 1 PiB的1024倍),最大卷容量16 EiB,除了Linux系统支持也可跨平台使用。
===== =====
什么是SquashFS?
What is SquashFS
1.1. 简介
当创建微型和嵌入式Linux系统时,存储设备(软盘、闪存盘等)的每一个字节都是非常重要的,所以压缩被尽可能的使用。另外,压缩文件系统经常需要用于存档。对于巨大的公共存档,以及个人媒体存档,这是必不可少的。
SquashFS将这一切带到了一个新的高度。它是一个只读文件系统,可以让你压缩整个文件系统或单个目录,把它们写入其他设备/分区或普通文件,然后直接挂载(如果是设备)或使用回环设备(loopback device)(如果是文件)。SquashFS的模块化、紧凑型系统设计用起来很便利。用于文件存档时,SquashFS给你带来了比tarball归档更多的灵活性和速度性能。
SquashFS以Linux内核源码补丁(使SquashFS在你的内核中支持读取)、mksquashfs工具和unsquashfs工具的形式发布,前者用于创建压缩文件系统(在文件或块设备上),后者用于从现有的压缩文件系统中提取多个文件。
最新的SquashFS发布树是3.x,以前的是2.x。
1.2. SquashFS的概述
- 数据、节点和目录都可被压缩
- SquashFS存储完整的uid/gids(32位),以及文件创建时间
- 支持最大2^64字节的文件;文件系统可以达到2^64字节
- 节点和目录数据被高度压缩,打包单位为字节;每个压缩的节点平均长度为8字节(确切的长度因文件类型而异,即普通文件、目录、符号链接和块/字符设备的节点有不同的尺寸)。
- SquashFS可以使用高达64KB(2.x)和1MB(3.x)的块大小。默认的大小是128KB(3.x),这比正常的4K块大小实现了更大的压缩率。
- 在2.x版本中,引入了片段区块(fragment blocks)的概念:能够将小于区块大小的多个文件连接成一个区块,实现更大的压缩率。
- 检测并删除文件的重复部分
- 支持big和little endian架构;SquashFS可以挂载在不同字节序的机器上创建的文件系统。
1.3. Making it clear, 其他说明
为了理解的更加清楚,现在让我们加入一些进一步的讨论。让SquashFS工作的过程基本上包括以下几个步骤:
1,对目标Linux内核增加此SquashFS的patch并重新编译,以使SquashFS得到支持
2,编译mksquashfs和unsquashfs工具
3,用mksquashfs创建一个压缩的文件系统
4,测试:挂载一个压缩文件系统到一个临时位置
5,修改目标Linux系统的/etc/fstab或启动脚本,以便在需要时加载新的压缩文件系统
===== =====
如何查看SquashFS文件系统文件?
能够识别其压缩方式的软件都可以打开此类型文件,比如我用beyondCompare软件比较时,就能看到压缩内容。使用7zip等工具,也可以打开。