http://www.selinuxplus.com/?tag=squashfs
1 概述
1.1 功能介绍
Squashfs(.sfs)是一套供Linux核心使用的GPL开源只读压缩文件系统。Squashfs能够为文件系统内的文件、inode及目录结构进行压缩,并支持最大1024千字节的区段,以提供更大的压缩比。
Squashfs的设计是专门为一般的只读文件系统的使用而设计,它可应用于数据备份,或是系统资源紧张的电脑上使用。最初版本的Squashfs采用 gzip 的数据压缩。版本 2.6.34 之后的Linux内核增加了对 LZMA和 LZO 压缩算法的支持,版本 2.6.38的内核增加了对LZMA2的支持,该算法同时也是xz使用的压缩算法。
本文用到使用Squashfs制作的LiveCD技术,该技术将root文件系统保存在一个压缩过的文件系统文件中。这个文件可以使用环回的形式来挂载并对其中的文件进行访问。因为当进程需要某些文件,可以将它们解压,然后载入内存中使用。
本文暂时不介绍怎么制作LiveCD技术,而是介绍对LiveOS文件的操作。
官网地址:http://sourceforge.net/p/squashfs/wiki/Home/Wiki: http://zh.wikipedia.org/zh-cn/SquashFS
1 2 | 官网地址:http://sourceforge.net/p/squashfs/wiki/Home/ Wiki: http://zh.wikipedia.org/zh-cn/SquashFS |
1.2 工程依赖
Grub2-theme 依赖grub2的使用。
2 环境搭建
2.1 环境要求
基础系统 EL7,or SELINUXPLUS.COM Cloud 7。软件包 squashfs-tools
1 2 | 基础系统 EL7,or SELINUXPLUS.COM Cloud 7。 软件包 squashfs-tools |
2.2 环境搭建
1 安装软件包
Yum install squashfs-tools -y
1 | Yum install squashfs-tools -y |
2 解压LiveOS
[root@ucsm02 LiveOS]# file squashfs.imgsquashfs.img: Squashfs filesystem, little endian, version 4.0, 292275192 bytes, 3 inodes, blocksize: 131072 bytes, created: Fri Jul 4 23:55:59 2014[[email protected] opt]# unsquashfs squashfs.imgParallel unsquashfs: Using 2 processors1 inodes (16384 blocks) to write[===========================================================|] 16384/16384 100%created 1 filescreated 2 directoriescreated 0 symlinkscreated 0 devicescreated 0 fifoscusmtom anaconda
1 2 3 4 5 6 7 8 9 10 11 12 | [root@ucsm02 LiveOS]# file squashfs.img squashfs.img: Squashfs filesystem, little endian, version 4.0, 292275192 bytes, 3 inodes, blocksize: 131072 bytes, created: Fri Jul 4 23:55:59 2014 [root@SELinuxplus.com197 opt]# unsquashfs squashfs.img Parallel unsquashfs: Using 2 processors 1 inodes (16384 blocks) to write [===========================================================|] 16384/16384 100% created 1 files created 2 directories created 0 symlinks created 0 devices created 0 fifos cusmtom anaconda |
2.3使用文件
1 文件在里面rootfs.img的存储方式和结构 : [root@localhost LiveOS]# file rootfs.imgrootfs.img: Linux rev 1.0 ext4 filesystem data, UUID=a6108b67-239e-42bf-9229-85d163e216a3, volume name "Anaconda" (needs journal recovery) (extents) (64bit) (huge files)2、 mount rootfs.img test -o loop3、[root@localhost test]# lltotal 26lrwxrwxrwx. 1 root root 7 Jul 4 23:43 bin -> usr/bindrwxr-xr-x. 2 root root 1024 Jul 4 23:48 devdrwxr-xr-x. 93 root root 5120 Aug 14 17:20 etclrwxrwxrwx. 1 root root 12 Jul 4 23:50 firmware -> lib/firmwarelrwxrwxrwx. 1 root root 7 Jul 4 23:43 lib -> usr/liblrwxrwxrwx. 1 root root 9 Jul 4 23:43 lib64 -> usr/lib64drwx------. 2 root root 12288 Jul 4 23:51 lost+founddrwxr-xr-x. 2 root root 1024 Jul 4 23:50 mntlrwxrwxrwx. 1 root root 11 Jul 4 23:50 modules -> lib/modulesdr-xr-xr-x. 2 root root 1024 Jun 10 08:11 procdr-xr-x---. 2 root root 1024 Jul 4 23:50 rootdrwxr-xr-x. 19 root root 1024 Jul 4 23:46 runlrwxrwxrwx. 1 root root 8 Jul 4 23:43 sbin -> usr/sbindr-xr-xr-x. 2 root root 1024 Jun 10 08:11 sysdrwxrwxrwt. 7 root root 1024 Jul 4 23:51 tmpdrwxr-xr-x. 10 root root 1024 Jul 4 23:51 usrdrwxr-xr-x. 10 root root 1024 Jul 4 23:51 var
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 1 文件在里面rootfs.img的存储方式和结构 : [root@localhost LiveOS]# file rootfs.img rootfs.img: Linux rev 1.0 ext4 filesystem data, UUID=a6108b67-239e-42bf-9229-85d163e216a3, volume name "Anaconda" (needs journal recovery) (extents) (64bit) (huge files) 2、 mount rootfs.img test -o loop 3、[root@localhost test]# ll total 26 lrwxrwxrwx. 1 root root 7 Jul 4 23:43 bin -> usr/bin drwxr-xr-x. 2 root root 1024 Jul 4 23:48 dev drwxr-xr-x. 93 root root 5120 Aug 14 17:20 etc lrwxrwxrwx. 1 root root 12 Jul 4 23:50 firmware -> lib/firmware lrwxrwxrwx. 1 root root 7 Jul 4 23:43 lib -> usr/lib lrwxrwxrwx. 1 root root 9 Jul 4 23:43 lib64 -> usr/lib64 drwx------. 2 root root 12288 Jul 4 23:51 lost+found drwxr-xr-x. 2 root root 1024 Jul 4 23:50 mnt lrwxrwxrwx. 1 root root 11 Jul 4 23:50 modules -> lib/modules dr-xr-xr-x. 2 root root 1024 Jun 10 08:11 proc dr-xr-x---. 2 root root 1024 Jul 4 23:50 root drwxr-xr-x. 19 root root 1024 Jul 4 23:46 run lrwxrwxrwx. 1 root root 8 Jul 4 23:43 sbin -> usr/sbin dr-xr-xr-x. 2 root root 1024 Jun 10 08:11 sys drwxrwxrwt. 7 root root 1024 Jul 4 23:51 tmp drwxr-xr-x. 10 root root 1024 Jul 4 23:51 usr drwxr-xr-x. 10 root root 1024 Jul 4 23:51 var</td> |
压缩文件:
mksquashfs rootfs.img suqashfs.img
1 | mksquashfs rootfs.img suqashfs.img |