简介

squashfs程序能够创建出一种具有超高压缩率的只读型文件系统。它能够将2GB~3GB的数据压缩成一个700MB的文件。Linux LiveCD(或是LiveUSB)就是使用squashfs创建的

前情提要

所有的现代Linux发行版都支持挂载squashfs文件系统。但是创建squashfs文件的话,则需要使用包管理器安装squashfs-tools:

可以使用apt或者yum安装

实战演练

(1)使用mksquashfs命令添加源目录和文件,创建一个squashfs文件:
在这里插入图片描述
SOURCES可以是通配符、文件或目录路径。

例如:

root@fff-PC:~# sudo mksquashfs /var/log test.squashfs 
Parallel mksquashfs: Using 2 processors
Creating 4.0 filesystem on test.squashfs, block size 131072.
[====/                                                                              ]  150/2984   5%
Unrecognised xattr prefix system.posix_acl_access
[========|                                                                          ]  315/2984  10%
Unrecognised xattr prefix system.posix_acl_access
[==============/                                                                    ]  534/2984  17%
Unrecognised xattr prefix system.posix_acl_access
[====================|                                                              ]  729/2984  24%
Unrecognised xattr prefix system.posix_acl_access
[=====================/                                                             ]  773/2984  25%
Unrecognised xattr prefix system.posix_acl_access
[=======================-                                                           ]  846/2984  28%
Unrecognised xattr prefix system.posix_acl_access
[=========================/                                                         ]  943/2984  31%
Unrecognised xattr prefix system.posix_acl_access
[=============================/                                                     ] 1073/2984  35%
Unrecognised xattr prefix system.posix_acl_access
[========================================/                                          ] 1466/2984  49%
Unrecognised xattr prefix system.posix_acl_access
[==================================================\                                ] 1827/2984  61%
Unrecognised xattr prefix system.posix_acl_access
[====================================================|                              ] 1926/2984  64%
Unrecognised xattr prefix system.posix_acl_access
[======================================================/                            ] 1994/2984  66%
Unrecognised xattr prefix system.posix_acl_access
[========================================================-                          ] 2069/2984  69%
Unrecognised xattr prefix system.posix_acl_access
[==========================================================\                        ] 2140/2984  71%
Unrecognised xattr prefix system.posix_acl_access

Unrecognised xattr prefix system.posix_acl_access

Unrecognised xattr prefix system.posix_acl_access
[===============================================================|                   ] 2314/2984  77%
Unrecognised xattr prefix system.posix_acl_access
[=================================================================/                 ] 2384/2984  79%
Unrecognised xattr prefix system.posix_acl_access

Unrecognised xattr prefix system.posix_acl_access
[=====================================================================-             ] 2520/2984  84%
Unrecognised xattr prefix system.posix_acl_access

Unrecognised xattr prefix system.posix_acl_access
[=========================================================================|         ] 2658/2984  89%
Unrecognised xattr prefix system.posix_acl_access

Unrecognised xattr prefix system.posix_acl_default

Unrecognised xattr prefix system.posix_acl_access

Unrecognised xattr prefix system.posix_acl_default

Unrecognised xattr prefix system.posix_acl_access

File /var/log/messages changed size while reading filesystem, attempting to re-read
[===========================================================================/       ] 2761/2984  92%
File /var/log/syslog changed size while reading filesystem, attempting to re-read

File /var/log/user.log changed size while reading filesystem, attempting to re-read
[==================================================================================-] 2984/2984 100%

Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
	compressed data, compressed metadata, compressed fragments, compressed xattrs
	duplicates are removed
Filesystem size 31756.07 Kbytes (31.01 Mbytes)
	8.58% of uncompressed filesystem size (370210.63 Kbytes)
Inode table size 7576 bytes (7.40 Kbytes)
	43.45% of uncompressed inode table size (17438 bytes)
Directory table size 2034 bytes (1.99 Kbytes)
	41.86% of uncompressed directory table size (4859 bytes)
Xattr table size 182 bytes (0.18 Kbytes)
	33.09% of uncompressed xattr table size (550 bytes)
Number of duplicate files found 10
Number of inodes 165
Number of files 147
Number of fragments 12
Number of symbolic links  0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 18
Number of ids (unique uids + gids) 5
Number of uids 2
	root (0)
	www-data (33)
Number of gids 4
	root (0)
	adm (4)
	utmp (43)
	systemd-journal (101)
root@fff-PC:~# 

(2)利用环回形式挂载squashfs文件:

root@fff-PC:~# mkdir /mnt/squash
root@fff-PC:~# sudo mount -o loop test.squashfs /mnt/squash/
root@fff-PC:~# df -Th
文件系统       类型      容量  已用  可用 已用% 挂载点
udev           devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs          tmpfs     391M  3.1M  388M    1% /run
/dev/sda3      ext4      121G  7.2G  107G    7% /
tmpfs          tmpfs     2.0G   14M  1.9G    1% /dev/shm
tmpfs          tmpfs     5.0M  4.0K  5.0M    1% /run/lock
tmpfs          tmpfs     2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/sda1      ext4      1.5G  107M  1.3G    8% /boot
tmpfs          tmpfs     391M   40K  391M    1% /run/user/1000
tmpfs          tmpfs     391M     0  391M    0% /run/user/0
/dev/loop0     squashfs   32M   32M     0  100% /mnt/squash

补充内容

可以指定其他选项来定制squashfs文件系统。在创建squashfs文件时排除部分文件选项-e可以排除部分文件和目录:
在这里插入图片描述
其中,选项-e用于将文件/etc/passwd和/etc/shadow排除在外。也可以将需要排除的文件名列表写入文件,然后用选项-ef指定该文件:
在这里插入图片描述
如果希望在排除文件列表中使用通配符,需要使用-wildcard选项。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐