squashfs 文件系统的制作与使用_mksquashfs__kerneler的博客-程序员秘密

技术标签: linux内核问题  

简介

quashfs是以linux 内核源码补丁的形式发布,附带mksquashfs工具,用于创建squash文件系统。squashfs可以将整个文件系统或者某个单一的目录压缩在一起, 存放在某个设备, 某个分区或者普通的文件中. 如果你将其压缩到一个设备中, 那么你可以将其直接mount起来使用; 而如果它仅仅是个文件,你可以将其当为一个loopback 设备使用. squashfs文件系统的设计令人欣喜. For archiving purposes, 它可以让你更加灵活的使用, 而且它比.tar.gz文档有更快的响应速度。

以下是squash文件系统的特点
· 数据(data),节点(inode)和目录(directories)都被压缩。
· 保存了全部的32位UID/GIDS和文件的创建时间. (注: cramfs是8位,没有创建时间)。
· 支持多达4G的文件系统. (cramfs是16M)。
· 节点和目录都是高度压缩, 而且都是存储在字节边界(packed on byte boundaries); 所有压缩的节点长度平均在8个字节左右.(具体的长度根据文件的类型是不同的. 比如, 普通文件,目录,符号链接,块设备和字符设备的节点的大小就不一样)。
· squashfs可以允许块大小(block size)达32Kb(1.x)和64kb(2.x), 这样可以达到比4K块大小更大的压缩率。
· squashfs 2引进了碎片块(fragment blocks)的概念: 一种将许多比块size 小的文件存储在一个块中, 以达到更大的压缩率。
· 重复的文件会被检测并删除掉。
· 同时支持big和little endian架构. SQ可以将文件系统MOUNT到不同的字节顺序(byte-order)的机器上面

流程

1.重新打包和编译Linux内核, 使之支持SQ.
2.编译mksquashfs工具.
3.使用mksquashf创建压缩文件系统.
4.试用: mount suqash文件系统到一个临时目录.
5.如果需要的话,更改/etc/fstab 或者起始脚本, 以使linux操作系统自动加载新的 squashfs 文件系统.

例子

mksquashfs rootfs_station ${
    ZRT_ENV_TMP_STATION_ROOTFS_FILE_PATH} -comp xz

rootfs_station这个目录下是我们的文件系统,把他已xz的压缩方式,制作成squashfs,输出到**${ZRT_ENV_TMP_STATION_ROOTFS_FILE_PATH}**
使用:

mount -t squashfs /dev/mtdblock5 /system

制作

首先要保证内核支持squashfs
https://blog.csdn.net/qq_38350702/article/details/106497628

mksquashfs命令

https://manpages.debian.org/testing/squashfs-tools/mksquashfs.1.en.html

mksquashfs SOURCE [SOURCE2 …] DESTINATION [OPTIONS]
OPTIONS
Filesystem build options
-comp COMPRESSION
select COMPRESSION compression. Compressors available: gzip (default), lzo, xz.
-b BLOCK_SIZE
set data block to BLOCK_SIZE. Default 131072 bytes.
-no-exports
don’t make the filesystem exportable via NFS.
-no-sparse
don’t detect sparse files.
-no-xattrs
don’t store extended attributes.
-xattrs
store extended attributes (default).
-noI
do not compress inode table.
-noD
do not compress data blocks.
-noF
do not compress fragment blocks.
-noX
do not compress extended attributes.
-no-fragments
do not use fragments.
-always-use-fragments
use fragment blocks for files larger than block size.
-no-duplicates
do not perform duplicate checking.
-all-root
make all files owned by root.
-force-uid uid
set all file uids to uid.
-force-gid gid
set all file gids to gid.
-nopad
do not pad filesystem to a multiple of 4K.
-keep-as-directory
if one source directory is specified, create a root directory containing that directory, rather than the contents of the directory.
Filesystem filter options
-p PSEUDO_DEFINITION
Add pseudo file definition.
-pf PSEUDO_FILE
Add list of pseudo file definitions.
-sort SORT_FILE
sort files according to priorities in SORT_FILE. One file or dir with priority per line. Priority -32768 to 32767, default priority 0.
-ef EXCLUDE_FILE
list of exclude dirs/files. One per line.
-wildcards
Allow extended shell wildcards (globbing) to be used in exclude dirs/files
-regex
Allow POSIX regular expressions to be used in exclude dirs/files.
Filesystem append options
-noappend
do not append to existing filesystem.
-root-becomes NAME
when appending source files/directories, make the original root become a subdirectory in the new root called NAME, rather than adding the new source items to the original root.
Mksquashfs runtime options:
-version
print version, licence and copyright message.
-recover NAME
recover filesystem data using recovery file NAME.
-no-recovery
don’t generate a recovery file.
-info
print files written to filesystem.
-no-progress
don’t display the progress bar.
-processors NUMBER
Use NUMBER processors. By default will use number of processors available.
-read-queue SIZE
Set input queue to SIZE Mbytes. Default 64 Mbytes.
-write-queue SIZE
Set output queue to SIZE Mbytes. Default 512 Mbytes.
-fragment-queue SIZE
Set fragment queue to SIZE Mbytes. Default 64 Mbytes.
Miscellaneous options
-root-owned
alternative name for -all-root.
-noInodeCompression
alternative name for -noI.
-noDataCompression
alternative name for -noD.
-noFragmentCompression
alternative name for -noF.
-noXattrCompression
alternative name for -noX.
Compressors available and compressor specific options
gzip (no options) (default)
lzo (no options)
xz
-Xbcj filter1,filter2,…,filterN
Compress using filter1,filter2,…,filterN in turn (in addition to no filter), and choose the best compression. Available filters: x86, arm, armthumb, powerpc, sparc, ia64.
-Xdict-size DICT_SIZE
Use DICT_SIZE as the XZ dictionary size. The dictionary size can be specified as a percentage of the block size, or as an absolute value. The dictionary size must be less than or equal to the block size and 8192 bytes or larger. It must also be storable in the xz header as either 2^n or as 2n+2(n+1). Example dict-sizes are 75%, 50%, 37.5%, 25%, or 32K, 16K, 8K etc.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38350702/article/details/106503072

智能推荐

Python numpy输出省略号_2475的博客-程序员秘密

Python打印或者保存一个很大的列表时,只能打印出来部分数据,中间数据以省略号形式输出,以打印出五亿以内的偶数为例:代码如下:a = np.arange(500000000)b = a[::2]print b输出结果如下:解决方法: 加一句:np.set_printoptions(threshold='nan')  # 全部输出  全部代码

(转)Oracle/Mysql/SqlServer函数区别 _yifeixiang的博客-程序员秘密

1.类型转换     --Oracle  select to_number('123') from dual;  --123;   select to_char(33) from dual;       --33;  select to_date('2004-11-27','yyyy/mm/dd') from dual;--2004-11-27    --Mysql  select cast('1...

dbcp数据连接池配置_醇氧的博客-程序员秘密

myBatis连接MySQL报异常:No operations allowed after connection closed.; nested exception is com.mysq 查看了Mysql的文档,以及Connector/J的文档以及在线说明发现,出现这种异常的原因是:  Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,

Ubuntu 配置Android NDK环境_ubuntu 配置ndk环境_氦客的博客-程序员秘密

下载NDK首先,在官网下载相应ndk版本https://developer.android.google.cn/ndk/downloads/older_releases比如 Android NDK, Revision 10e (May 2015)解压缩将下载后的文件放到相关目录下,然后执行./android-ndk-r10e-linux-x86_64.bin 会自动解压缩,生成............

过拟合和欠拟合概念的详细讲解_weixin_43437893的博客-程序员秘密

课前小例子各位同学上一节课我们讲解了一个多分类的问题,让我们从现在开始会讲一些在深度学习中间时候的一些小技巧这些小技巧可是帮助大家理解深度学习一个非常必要的环节,首先我们来看第一个深度学习中存在的一个问题就是过拟合和和欠拟合。在讲解过拟合和和欠拟合之前,我们来讲一个数据的真实的模态,我们把它一个叫做数据的真实分布那么我们来看第一个例子就是房价例子,然后房价的这个x坐标表示它的房子的面积,...

随便推点

分页工具类_sheng_xinjun的博客-程序员秘密

 import java.io.Serializable;import java.util.List;/** * @author sheng */public class Paging<T> implements Serializable { private static final long serialVersionUID = -538351618436...

redis集群配置_无知就要求知的博客-程序员秘密

在两台服务器redis实现集群在两台服务器redis实现集群:描述服务器列表: — A服务器:192.168.4.254 — B服务器:192.168.4.125预期: —-redis进程之间的主从切换,可以实现实例化的主从操作1、cluseter服务需要rub支持。首先安装rub相关服务yum -y install ruby rubygemsrpm -ivh http://yum.p

CVPR 2018迁移学习相关论文_TBYourHero的博客-程序员秘密

元学习论文总结||小样本学习论文总结2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017-2019 NIPS2017-2019https://blog.csdn.net/cp_oldy/article/details/82183813...

UART0串口编程系列 串口编程(UART0)之中断方式(二)_怀想天空2010的博客-程序员秘密

三.        中断方式的串口编程1.用中断方式编写串口程序由那几部分组成2.硬件上的支持1>UART0 发送FIFO缓冲区A.        UART0含有1个16字节的发送FIFO缓冲区B.        U0THR是UART0发送FIFO的最高字节C.        UART的发送FIFO是一直使能的2>UART0接

Java命令简易入门-2:javac与java命令之一(javac)_zhrb的博客-程序员秘密

Java命令简易入门2-Javac与Java命令(未完待续)文章目录Java命令简易入门2-Javac与Java命令(未完待续)基本概念实验环境与实验文件1.javac与java基本用法2. javac的其他常用参数3. 一个文件中包含多个类文件进行编译4. 类路径参数:-cp或-classpath几个结论参考资料基本概念javac与java命令是我们最常用的Java命令。javac:Java编译器。负责编译,将.java这个文本文件编译成.class字节码文件。java:Java程序启动器。负责

vue使用vant组件时无法修改默认样式问题__Hoodie的博客-程序员秘密

由于vue开发时会在style加上scoped避免全局污染,所以正常开发时直接修改外部组件(vant)的样式时会不生效,我们把scoped删除后会发现样式是可以生效的。但是scoped是肯定不能不要的。所以我们可以用 /deep/(深度监听)来修改样式 /deep/.van-dropdown-menu__title{ font-size: 0.26rem;...

推荐文章

热门文章

相关标签