1. Squashfs文件系统概述
Squashfs是一种专为Linux设计的压缩只读文件系统,最早由Phillip Lougher在2002年开发。它最大的特点是能够将文件系统高度压缩后仍保持只读访问能力,压缩率通常能达到50%-70%,特别适合嵌入式系统和Live CD等存储空间受限的场景。
我在处理嵌入式设备固件时第一次接触Squashfs,当时需要将一个完整的根文件系统压缩到32MB的存储空间中。经过对比测试,Squashfs相比其他方案节省了近60%的空间,这让它在资源受限的设备中成为首选方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心特性解析
2.1 压缩算法选择
Squashfs支持多种压缩算法,不同版本有所差异:
| 算法类型 | 压缩率 | 解压速度 | 适用场景 |
|---|---|---|---|
| gzip | 中等 | 较快 | 通用场景 |
| LZMA | 最高 | 较慢 | 存储优先 |
| LZO | 较低 | 最快 | 性能优先 |
| XZ | 高 | 慢 | 高压缩比需求 |
在实际项目中,我通常根据设备性能选择:
- 对树莓派类设备用gzip平衡性能
- 对存储空间极其有限的设备用LZMA
- 实时性要求高的工业设备用LZO
2.2 块大小优化
Squashfs将文件分割成固定大小的块进行独立压缩,块大小直接影响性能:
bash复制# 创建时指定块大小(默认128K)
mksquashfs source target.img -b 256K
经过实测发现:
- 较大块(256K-1M)能提高压缩率但增加内存占用
- 较小块(64K-128K)适合内存有限的设备
- 超过1M的块可能导致解压延迟明显
3. 实际应用案例
3.1 嵌入式系统构建
典型嵌入式Linux系统的rootfs构建流程:
- 准备基础文件系统
bash复制mkdir rootfs && debootstrap buster rootfs
- 定制化配置
bash复制chroot rootfs apt install <packages>
