如何来制作一个squashfs件系统的镜像?
一、工具安装
sudo apt-get install squashfs-tools
命令:dpkg -L squashfs-tools|grep bin
mksquashfs
unsquashfs
二、镜像制作
mksquashfs source1 source2 … dest [options] [-e list of exclude dirs/files]
主要选项:
-comp 指定压缩算法:gzip (default)/lzo/xz
-b <block_size> 设置块大小,单位 Bytes,默认 131072 bytes (1MB)
-no-exports 不支持NFS文件系统导出
-no-sparse 不检测稀疏文件
-no-xattrs 不存储扩展文件属性(XATTR)
-xattrs 存储扩展文件属性(default)
-noI 不压缩Inode节点表
-noD 不压缩数据块
-noF 不压缩片段块
-noX 不压缩扩展文件属性
-no-fragments 不使用片段管理
-always-use-fragments 对比块大小大的文件也是用片段块
-no-duplicates 不对文件重复进行检查
-all-root 修改所有的文件拥有者为root
-force-uid uid 设置所有文件的uid为指定的uid
-force-gid gid 设置所有文件的gid为指定的gid
-nopad 不对文件系统进行4K字节对齐
-keep-as-directory 如果指定的源中有目录,在文件系统中创建根目录包含该目录,而不是包含目录内容
文件系统内容:mini_busybox/
mksquashfs mini_busybox rootfs.squashfs -no-exports -no-xattrs -all-root
三、镜像使用
内容提取:
unsquashfs [options] filesystem [directories or files to extract]
主要选项:
-d[est] 解压到指定目录,默认为"squashfs-root"
-n[o-progress] 不显示进度条
-no[-xattrs] 不提取xattr属性,默认提取
-l[s] 列出文件系统内容,不进行解压缩提取
unsquashfs rootfs.squashfs
烧录挂载:
sudo losetup /dev/loop0 rootfs.squashfs
sudo mount /dev/loop0 /mnt
sudo losetup -a
卸载解依附:
sudo umount /dev/loop0
sudo losetup -d /dev/loop0