文章目录

  • squashfs介绍
  • squashfs版本
  • squashfs源码下载
  • squashfs编译安装
  • 支持XZ_SUPPORT
    • xz安装
  • 实例
  • 参考资料

squashfs介绍

SquashFS 是一套基于Linux内核使用的压缩只读文件系统。该文件系统能够压缩系统内的文档,inode以及目录,文件最大支持2^64字节。

SquashFS是基于GPL协议的开源软件。初始的版本使用gzip压缩,2.6.34版本Linux内核增加了支持LZMA和LZO压缩,并且在2.6.38内核版本上增加支持XZ压缩。

squashfs版本

SquashFS有几个不同的版本,这里给出一些主要的信息
Squashfs 4.2 : 最新的版本,并适用于2.6.29版本以后的Linux内核。
Squashfs 4.1 : 支持XZ压缩,并适用于2.6.29版本以后的Linux内核。
Squashfs 3.4 : 该版本是3.X的最后一个版本,并适用于2.6.29版本之前的内核。

squashfs源码下载

下载地址:
https://sourceforge.net/projects/squashfs/
https://www.squashfs-lzma.org

我下载的版本squashfs4.2.tar.gz
https://www.squashfs-lzma.org/downloads/squashfs4.2.tar.gz

squashfs编译安装

tar -xvzf squashfs4.2.tar.gz
cd squashfs4.2/
cd squashfs-tools/
vim Makefile #没有root权限要修改安装路径,修改INSTALL_DIR为你有安装权限的目录,例如我修改的路径是/home/mayue/usr
make
make install

编译和安装成功后会在安装路径下生成mksquashfsunsquashfs两个命令工具。mksquashfs负责压缩只读文件系统,unsquashfs负责解压文件系统。

注:Squashfs编译安装默认不支持xz。

支持XZ_SUPPORT

打开squashfs-tools目录下的Makefile文件,将XZ_SUPPORT = 1前面的注释去掉。
操作如下:

vi Makefile  #修改XZ_SUPPORT = 1
make clean
make

结果报错,错误如下:

$ make
cc -O2  -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -DCOMP_DEFAULT=\"gzip\" -Wall -DGZIP_SUPPORT -DXZ_SUPPORT -DXATTR_SUPPORT -DXATTR_DEFAULT   -c -o xz_wrapper.o xz_wrapper.c
xz_wrapper.c:28:18: 致命错误: lzma.h:没有那个文件或目录
编译中断。
make: *** [xz_wrapper.o] 错误 1

根据下面链接提示是需要下载和安装xz源码包 https://blog.csdn.net/snowpiaop/article/details/52982997

xz下载地址:https://tukaani.org/xz/
我这里下载的是 xz-5.2.5.tar.gz

xz安装

tar xzvf xz-5.2.5.tar.gz
cd xz-5.2.5
./configure --prefix=/home/mayue/usr
make
make install

编译安装成功就会在/home/mayue/usr目录下生产bin、include、lib、local、share目录和子文件。bin目录下有xz等命令、include目录下有lzma相关的头文件、lib目录下有liblzma.a等库。

将include下的头文件lzma.h和子目录lzma目录拷贝到squashfs-tools目录下。
将lib下的liblzma.a库拷贝到squashfs-tools目录下,这里准备使用静态库。

直接make编译提示找不到liblzma.a库。

再次修改squashfs-tools目录下Makefile文件,添加如下内容

LIBS += -L./   #添加当前目录到lib库文件搜索路径,为了找到liblzma.a库

再次进行make编译,编译成功。

执行make install将mksquashfsunsquashfs安装到指定路径下。

注:使用支持xz的mksquashfs压缩得到的文件系统,用不支持xz的unsquashfs不能解压。

注:若需要一直使用mksquashfsunsquashfs,需要将对应路径添加到环境变量。

实例

有app目录,目录下有myapp、initrun.sh、cmdtool三个文件,操作如下图

默认解压到squashfs-root目录,可指定目录,命令如下:

./unsquashfs -d mydir app.squash     #解压到mydir目录,mydir目录不允许存在

查看帮助手册:

mksquashfs -h
unsquashfs -h

参考资料

https://baike.baidu.com/item/squashfs/6036237?fr=aladdin
https://blog.csdn.net/lurayvis/article/details/10242441#_Toc240991115
https://blog.csdn.net/qq_27901091/article/details/97617505
https://blog.csdn.net/wuqingwei/article/details/79235210

squashfs介绍和安装相关推荐

  1. Scrapy-Splash的介绍、安装以及实例

    scrapy-splash的介绍   在前面的博客中,我们已经见识到了Scrapy的强大之处.但是,Scrapy也有其不足之处,即Scrapy没有JS engine, 因此它无法爬取JavaScrip ...

  2. Springlake-01 介绍功能安装

    Springlake-01 介绍&功能&安装 1. 简介与功能 1)Springlake 是一个企业内容平台SECP 2)是一个可配置的系统,80%内容可以配置 3)允许建立和配置垂直 ...

  3. Kafka系列一之架构介绍和安装

    Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...

  4. SharpWebMail介绍和安装(转)

    SharpWebMail介绍和安装 什么是:SharpWebMail SharpWebMail是一款C#开发的基于WEB应用程序的多语言的WEB邮件服务.它允许我们使用SMTP或IMAP服务来完成发送 ...

  5. Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令

    Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...

  6. Storm介绍及安装部署

    本节内容: Apache Storm是什么 Apache Storm核心概念 Storm原理架构 Storm集群安装部署 启动storm ui.Nimbus和Supervisor 一.Apache S ...

  7. LNMP基础架构介绍与安装

    1.LNMP架构介绍 LNMP==Linux+Nginx+Mysql+PHP  nginx:省资源,省cpu,所以在高并发时能够处理更多的请求,高端能达到3万到5万的并发量.  nginx和LAMP不 ...

  8. 2.1 DNS服务介绍和安装

    DNS服务介绍和安装 一 DNS概述 通过为每台主机建立IP地址与域名之间的映射关系,用户可以避开难记的IP地址,而是用域名就可以访问网络中的站点:即平常我们上网输入的都是域名,www.baidu.c ...

  9. openresty开发系列10--openresty的简单介绍及安装

    openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...

最新文章

  1. emc存储设备型号_图解EMC CLARiiON CX4系列主要型号
  2. Android 通过反射让SQlite建表
  3. Redis学习笔记--Redis数据过期策略详解
  4. 回流,重绘的概念,以及他们的区别?
  5. ubuntu下apache rewrite的设置
  6. 网页“console”输出图文信息
  7. storm和vgj vgj_VGJ改名J.Storm专注北美赛区 收编新队
  8. C++--第20课 - 函数模板
  9. 用EasyPoi导入Excel
  10. java stream list转map
  11. 淘宝/天猫获得淘口令真实url API
  12. LC振荡器的工作原理
  13. Win10(Windows)系统中窗口切换 最大最小化窗口等快捷键
  14. efl是什么意思_efl是什么意思
  15. hyperv创建ubuntu20.10 ubuntu18.04虚拟机
  16. Windows实现微信双开
  17. C语言实现扫雷小游戏 纯小白 非黑窗口
  18. 计算机系古生物学,超级计算机模拟生命起源
  19. 2021-2027全球及中国BIM对象软件行业研究及十四五规划分析报告
  20. Visual Studio Code(VSCODE)语言设置为中文

热门文章

  1. Coursera机器学习吴恩达-Week1
  2. Qt/C++编写安防视频监控系统20-录像机管理
  3. rs232 python_RS232串口通讯协议解析
  4. webpack与glup的理解和区别
  5. SecureCRT设置字条编码
  6. Spring之Joinpoint类详解
  7. 如何使用报表工具FastReport VCL 设计器中的 PDF/A?
  8. 智能家居--传统风扇改语音控制
  9. i3 1315U 和i3 1215U差距 酷睿i31315U和1215U对比
  10. 基于matlab已知地球两点坐标求取距离和方位角函数distance