xref: /aosp_15_r20/external/squashfs-tools/RELEASE-READMEs/README-4.1 (revision 79398b2563bcbbbab54656397863972d8fa68df1)
1*79398b25SAndroid Build Coastguard Worker	SQUASHFS 4.1 - A squashed read-only filesystem for Linux
2*79398b25SAndroid Build Coastguard Worker
3*79398b25SAndroid Build Coastguard Worker	Copyright 2002-2010 Phillip Lougher <[email protected]>
4*79398b25SAndroid Build Coastguard Worker
5*79398b25SAndroid Build Coastguard Worker	Released under the GPL licence (version 2 or later).
6*79398b25SAndroid Build Coastguard Worker
7*79398b25SAndroid Build Coastguard WorkerWelcome to Squashfs 4.1.  This is a tools only release, support for Squashfs
8*79398b25SAndroid Build Coastguard Workerfile systems is in mainline (2.6.29 and later).
9*79398b25SAndroid Build Coastguard Worker
10*79398b25SAndroid Build Coastguard WorkerNew features in Squashfs-tools 4.1
11*79398b25SAndroid Build Coastguard Worker----------------------------------
12*79398b25SAndroid Build Coastguard Worker
13*79398b25SAndroid Build Coastguard Worker  1. Support for extended attributes
14*79398b25SAndroid Build Coastguard Worker  2. Support for LZMA and LZO compression
15*79398b25SAndroid Build Coastguard Worker  3. New pseudo file features
16*79398b25SAndroid Build Coastguard Worker
17*79398b25SAndroid Build Coastguard WorkerCompatiblity
18*79398b25SAndroid Build Coastguard Worker------------
19*79398b25SAndroid Build Coastguard Worker
20*79398b25SAndroid Build Coastguard WorkerMksquashfs 4.1 generates 4.0 filesystems.  These filesystems are fully
21*79398b25SAndroid Build Coastguard Workercompatible/interchangable with filesystems generated by Mksquashfs 4.0 and are
22*79398b25SAndroid Build Coastguard Workermountable on 2.6.29 and later kernels.
23*79398b25SAndroid Build Coastguard Worker
24*79398b25SAndroid Build Coastguard WorkerExtended attributes (xattrs)
25*79398b25SAndroid Build Coastguard Worker----------------------------
26*79398b25SAndroid Build Coastguard Worker
27*79398b25SAndroid Build Coastguard WorkerSquashfs file systems now have extended attribute support.  The
28*79398b25SAndroid Build Coastguard Workerextended attribute implementation has the following features:
29*79398b25SAndroid Build Coastguard Worker
30*79398b25SAndroid Build Coastguard Worker1. Layout can store up to 2^48 bytes of compressed xattr data.
31*79398b25SAndroid Build Coastguard Worker2. Number of xattrs per inode unlimited.
32*79398b25SAndroid Build Coastguard Worker3. Total size of xattr data per inode 2^48 bytes of compressed data.
33*79398b25SAndroid Build Coastguard Worker4. Up to 4 Gbytes of data per xattr value.
34*79398b25SAndroid Build Coastguard Worker5. Inline and out-of-line xattr values supported for higher performance
35*79398b25SAndroid Build Coastguard Worker   in xattr scanning (listxattr & getxattr), and to allow xattr value
36*79398b25SAndroid Build Coastguard Worker   de-duplication.
37*79398b25SAndroid Build Coastguard Worker6. Both whole inode xattr duplicate detection and individual xattr value
38*79398b25SAndroid Build Coastguard Worker   duplicate detection supported.  These can obviously nest, file C's
39*79398b25SAndroid Build Coastguard Worker   xattrs can be a complete duplicate of file B, and file B's xattrs
40*79398b25SAndroid Build Coastguard Worker   can be a partial duplicate of file A.
41*79398b25SAndroid Build Coastguard Worker7. Xattr name prefix types stored, allowing the redundant "user.", "trusted."
42*79398b25SAndroid Build Coastguard Worker   etc. characters to be eliminated and more concisely stored.
43*79398b25SAndroid Build Coastguard Worker8. Support for files, directories, symbolic links, device nodes, fifos
44*79398b25SAndroid Build Coastguard Worker   and sockets.
45*79398b25SAndroid Build Coastguard Worker
46*79398b25SAndroid Build Coastguard WorkerExtended attribute support is in 2.6.35 and later kernels.  File systems
47*79398b25SAndroid Build Coastguard Workerwith extended attributes can be mounted on 2.6.29 and later kernels, the
48*79398b25SAndroid Build Coastguard Workerextended attributes will be ignored with a warning.
49*79398b25SAndroid Build Coastguard Worker
50*79398b25SAndroid Build Coastguard WorkerLZMA and LZO compression
51*79398b25SAndroid Build Coastguard Worker------------------------
52*79398b25SAndroid Build Coastguard Worker
53*79398b25SAndroid Build Coastguard WorkerSquashfs now supports LZMA and LZO compression.
54*79398b25SAndroid Build Coastguard Worker
55*79398b25SAndroid Build Coastguard WorkerLZO support is in 2.6.36 and newer kernels.  LZMA is not yet in mainline.
56*79398b25SAndroid Build Coastguard Worker
57*79398b25SAndroid Build Coastguard WorkerNew Mksquashfs options
58*79398b25SAndroid Build Coastguard Worker----------------------
59*79398b25SAndroid Build Coastguard Worker
60*79398b25SAndroid Build Coastguard Worker-comp <comp>
61*79398b25SAndroid Build Coastguard Worker
62*79398b25SAndroid Build Coastguard Worker    Select <comp> compression.
63*79398b25SAndroid Build Coastguard Worker
64*79398b25SAndroid Build Coastguard Worker    The compression algorithms supported by the build of Mksquashfs can be
65*79398b25SAndroid Build Coastguard Worker    found by typing mksquashfs without any arguments.  The compressors available
66*79398b25SAndroid Build Coastguard Worker    are displayed at the end of the help message, e.g.
67*79398b25SAndroid Build Coastguard Worker
68*79398b25SAndroid Build Coastguard Worker    Compressors available:
69*79398b25SAndroid Build Coastguard Worker	gzip (default)
70*79398b25SAndroid Build Coastguard Worker	lzma
71*79398b25SAndroid Build Coastguard Worker	lzo
72*79398b25SAndroid Build Coastguard Worker
73*79398b25SAndroid Build Coastguard Worker    The default compression used when -comp isn't specified on the command line
74*79398b25SAndroid Build Coastguard Worker    is indicated by "(default)".
75*79398b25SAndroid Build Coastguard Worker
76*79398b25SAndroid Build Coastguard Worker-no-xattrs
77*79398b25SAndroid Build Coastguard Worker    Don't store extended attributes
78*79398b25SAndroid Build Coastguard Worker
79*79398b25SAndroid Build Coastguard Worker-xattrs
80*79398b25SAndroid Build Coastguard Worker    Store extended attributes
81*79398b25SAndroid Build Coastguard Worker
82*79398b25SAndroid Build Coastguard Worker    The default behaviour of Mksquashfs with respect to extended attribute
83*79398b25SAndroid Build Coastguard Worker    storage is build time selectable.  The Mksquashfs help message indicates
84*79398b25SAndroid Build Coastguard Worker    whether extended attributes are stored or not, e.g.
85*79398b25SAndroid Build Coastguard Worker
86*79398b25SAndroid Build Coastguard Worker	-no-xattrs		don't store extended attributes
87*79398b25SAndroid Build Coastguard Worker	-xattrs			store extended attributes (default)
88*79398b25SAndroid Build Coastguard Worker
89*79398b25SAndroid Build Coastguard Worker    shows that extended attributes are stored by default, and can be disabled
90*79398b25SAndroid Build Coastguard Worker    by the -no-xattrs option.
91*79398b25SAndroid Build Coastguard Worker
92*79398b25SAndroid Build Coastguard Worker	-no-xattrs		don't store extended attributes (default)
93*79398b25SAndroid Build Coastguard Worker	-xattrs			store extended attributes
94*79398b25SAndroid Build Coastguard Worker
95*79398b25SAndroid Build Coastguard Worker    shows that extended attributes are not stored by default, storage can be
96*79398b25SAndroid Build Coastguard Worker    enabled by the -xattrs option.
97*79398b25SAndroid Build Coastguard Worker
98*79398b25SAndroid Build Coastguard Worker
99*79398b25SAndroid Build Coastguard Worker-noX
100*79398b25SAndroid Build Coastguard Worker-noXattrCompression
101*79398b25SAndroid Build Coastguard Worker    Don't compress extended attributes
102*79398b25SAndroid Build Coastguard Worker
103*79398b25SAndroid Build Coastguard Worker
104*79398b25SAndroid Build Coastguard WorkerNew Unsquashfs options
105*79398b25SAndroid Build Coastguard Worker----------------------
106*79398b25SAndroid Build Coastguard Worker
107*79398b25SAndroid Build Coastguard Worker-n[o-xattrs]
108*79398b25SAndroid Build Coastguard Worker    Don't extract xattrs in filesystem
109*79398b25SAndroid Build Coastguard Worker
110*79398b25SAndroid Build Coastguard Worker-x[attrs]
111*79398b25SAndroid Build Coastguard Worker    Extract xattrs in filesystem
112*79398b25SAndroid Build Coastguard Worker
113*79398b25SAndroid Build Coastguard Worker    The default behaviour of Unsquashfs with respect to extended attributes
114*79398b25SAndroid Build Coastguard Worker    is build time selectable.  The Unsquashfs help message indicates whether
115*79398b25SAndroid Build Coastguard Worker    extended attributes are stored or not, e.g.
116*79398b25SAndroid Build Coastguard Worker
117*79398b25SAndroid Build Coastguard Worker	-no[-xattrs]		don't extract xattrs in file system
118*79398b25SAndroid Build Coastguard Worker	-x[attrs]		extract xattrs in file system (default)
119*79398b25SAndroid Build Coastguard Worker
120*79398b25SAndroid Build Coastguard Worker    shows that xattrs are extracted by default.
121*79398b25SAndroid Build Coastguard Worker
122*79398b25SAndroid Build Coastguard Worker	-no[-xattrs]		don't extract xattrs in file system (default)
123*79398b25SAndroid Build Coastguard Worker	-x[attrs]		extract xattrs in file system
124*79398b25SAndroid Build Coastguard Worker
125*79398b25SAndroid Build Coastguard Worker    shows that xattrs are not extracted by default.
126*79398b25SAndroid Build Coastguard Worker
127*79398b25SAndroid Build Coastguard Worker
128*79398b25SAndroid Build Coastguard WorkerNew pseudo file support
129*79398b25SAndroid Build Coastguard Worker-----------------------
130*79398b25SAndroid Build Coastguard Worker
131*79398b25SAndroid Build Coastguard WorkerMksquashfs supports pseudo files, these allow fake files, directories, character
132*79398b25SAndroid Build Coastguard Workerand block devices to be specified and added to the Squashfs filesystem being
133*79398b25SAndroid Build Coastguard Workerbuilt, rather than requiring them to be present in the source directories.
134*79398b25SAndroid Build Coastguard WorkerThis, for example, allows device nodes to be added to the filesystem without
135*79398b25SAndroid Build Coastguard Workerrequiring root access.
136*79398b25SAndroid Build Coastguard Worker
137*79398b25SAndroid Build Coastguard WorkerMksquashfs 4.1 adds support for "dynamic pseudo files" and a modify operation.
138*79398b25SAndroid Build Coastguard WorkerDynamic pseudo files allow files to be dynamically created when Mksquashfs
139*79398b25SAndroid Build Coastguard Workeris run, their contents being the result of running a command or piece of
140*79398b25SAndroid Build Coastguard Workershell script.  The modifiy operation allows the mode/uid/gid of an existing
141*79398b25SAndroid Build Coastguard Workerfile in the source filesystem to be modified.
142*79398b25SAndroid Build Coastguard Worker
143*79398b25SAndroid Build Coastguard WorkerTwo Mksquashfs options are supported, -p allows one pseudo file to be specified
144*79398b25SAndroid Build Coastguard Workeron the command line, and -pf allows a pseudo file to be specified containing a
145*79398b25SAndroid Build Coastguard Workerlist of pseduo definitions, one per line.
146*79398b25SAndroid Build Coastguard Worker
147*79398b25SAndroid Build Coastguard WorkerPseudo operations
148*79398b25SAndroid Build Coastguard Worker-----------------
149*79398b25SAndroid Build Coastguard Worker
150*79398b25SAndroid Build Coastguard Worker1. Creating a dynamic file
151*79398b25SAndroid Build Coastguard Worker--------------------------
152*79398b25SAndroid Build Coastguard Worker
153*79398b25SAndroid Build Coastguard WorkerPseudo definition
154*79398b25SAndroid Build Coastguard Worker
155*79398b25SAndroid Build Coastguard WorkerFilename f mode uid gid command
156*79398b25SAndroid Build Coastguard Worker
157*79398b25SAndroid Build Coastguard Workermode is the octal mode specifier, similar to that expected by chmod.
158*79398b25SAndroid Build Coastguard Worker
159*79398b25SAndroid Build Coastguard Workeruid and gid can be either specified as a decimal number, or by name.
160*79398b25SAndroid Build Coastguard Worker
161*79398b25SAndroid Build Coastguard Workercommand can be an executable or a piece of shell script, and it is executed
162*79398b25SAndroid Build Coastguard Workerby running "/bin/sh -c command".   The stdout becomes the contents of
163*79398b25SAndroid Build Coastguard Worker"Filename".
164*79398b25SAndroid Build Coastguard Worker
165*79398b25SAndroid Build Coastguard WorkerExamples:
166*79398b25SAndroid Build Coastguard Worker
167*79398b25SAndroid Build Coastguard WorkerRunning a basic command
168*79398b25SAndroid Build Coastguard Worker-----------------------
169*79398b25SAndroid Build Coastguard Worker
170*79398b25SAndroid Build Coastguard Worker/somedir/dmesg f 444 root root dmesg
171*79398b25SAndroid Build Coastguard Worker
172*79398b25SAndroid Build Coastguard Workercreates a file "/somedir/dmesg" containing the output from dmesg.
173*79398b25SAndroid Build Coastguard Worker
174*79398b25SAndroid Build Coastguard WorkerExecuting shell script
175*79398b25SAndroid Build Coastguard Worker----------------------
176*79398b25SAndroid Build Coastguard Worker
177*79398b25SAndroid Build Coastguard WorkerRELEASE f 444 root root \
178*79398b25SAndroid Build Coastguard Worker		if [ ! -e /tmp/ver ]; then \
179*79398b25SAndroid Build Coastguard Worker			echo 0 > /tmp/ver; \
180*79398b25SAndroid Build Coastguard Worker		fi; \
181*79398b25SAndroid Build Coastguard Worker                ver=`cat /tmp/ver`; \
182*79398b25SAndroid Build Coastguard Worker                ver=$((ver +1)); \
183*79398b25SAndroid Build Coastguard Worker                echo $ver > /tmp/ver; \
184*79398b25SAndroid Build Coastguard Worker                echo -n `cat /tmp/release`; \
185*79398b25SAndroid Build Coastguard Worker                echo "-dev #"$ver `date` "Build host" `hostname`
186*79398b25SAndroid Build Coastguard Worker
187*79398b25SAndroid Build Coastguard WorkerCreates a file RELEASE containing the release name, date, build host, and
188*79398b25SAndroid Build Coastguard Workeran incrementing version number.  The incrementing version is a side-effect
189*79398b25SAndroid Build Coastguard Workerof executing the shell script, and ensures every time Mksquashfs is run a
190*79398b25SAndroid Build Coastguard Workernew version number is used without requiring any other shell scripting.
191*79398b25SAndroid Build Coastguard Worker
192*79398b25SAndroid Build Coastguard WorkerThe above example also shows that commands can be split across multiple lines
193*79398b25SAndroid Build Coastguard Workerusing "\".  Obviously as the script will be presented to the shell as a single
194*79398b25SAndroid Build Coastguard Workerline, a semicolon is need to separate individual shell commands within the
195*79398b25SAndroid Build Coastguard Workershell script.
196*79398b25SAndroid Build Coastguard Worker
197*79398b25SAndroid Build Coastguard WorkerReading from a device (or fifo/named socket)
198*79398b25SAndroid Build Coastguard Worker--------------------------------------------
199*79398b25SAndroid Build Coastguard Worker
200*79398b25SAndroid Build Coastguard Workerinput f 444 root root dd if=/dev/sda1 bs=1024 count=10
201*79398b25SAndroid Build Coastguard Worker
202*79398b25SAndroid Build Coastguard WorkerCopies 10K from the device /dev/sda1 into the file input.  Ordinarily Mksquashfs
203*79398b25SAndroid Build Coastguard Workergiven a device, fifo, or named socket will place that special file within the
204*79398b25SAndroid Build Coastguard WorkerSquashfs filesystem, the above allows input from these special files to be
205*79398b25SAndroid Build Coastguard Workercaptured and placed in the Squashfs filesystem.
206*79398b25SAndroid Build Coastguard Worker
207*79398b25SAndroid Build Coastguard Worker2. Creating a block or character device
208*79398b25SAndroid Build Coastguard Worker---------------------------------------
209*79398b25SAndroid Build Coastguard Worker
210*79398b25SAndroid Build Coastguard WorkerPseudo definition
211*79398b25SAndroid Build Coastguard Worker
212*79398b25SAndroid Build Coastguard WorkerFilename type mode uid gid major minor
213*79398b25SAndroid Build Coastguard Worker
214*79398b25SAndroid Build Coastguard WorkerWhere type is either
215*79398b25SAndroid Build Coastguard Worker	b - for block devices, and
216*79398b25SAndroid Build Coastguard Worker	c - for character devices
217*79398b25SAndroid Build Coastguard Worker
218*79398b25SAndroid Build Coastguard Workermode is the octal mode specifier, similar to that expected by chmod.
219*79398b25SAndroid Build Coastguard Worker
220*79398b25SAndroid Build Coastguard Workeruid and gid can be either specified as a decimal number, or by name.
221*79398b25SAndroid Build Coastguard Worker
222*79398b25SAndroid Build Coastguard WorkerFor example:
223*79398b25SAndroid Build Coastguard Worker
224*79398b25SAndroid Build Coastguard Worker/dev/chr_dev c 666 root root 100 1
225*79398b25SAndroid Build Coastguard Worker/dev/blk_dev b 666 0 0 200 200
226*79398b25SAndroid Build Coastguard Worker
227*79398b25SAndroid Build Coastguard Workercreates a character device "/dev/chr_dev" with major:minor 100:1 and
228*79398b25SAndroid Build Coastguard Workera block device "/dev/blk_dev" with major:minor 200:200, both with root
229*79398b25SAndroid Build Coastguard Workeruid/gid and a mode of rw-rw-rw.
230*79398b25SAndroid Build Coastguard Worker
231*79398b25SAndroid Build Coastguard Worker3. Creating a directory
232*79398b25SAndroid Build Coastguard Worker-----------------------
233*79398b25SAndroid Build Coastguard Worker
234*79398b25SAndroid Build Coastguard WorkerPseudo definition
235*79398b25SAndroid Build Coastguard Worker
236*79398b25SAndroid Build Coastguard WorkerFilename d mode uid gid
237*79398b25SAndroid Build Coastguard Worker
238*79398b25SAndroid Build Coastguard Workermode is the octal mode specifier, similar to that expected by chmod.
239*79398b25SAndroid Build Coastguard Worker
240*79398b25SAndroid Build Coastguard Workeruid and gid can be either specified as a decimal number, or by name.
241*79398b25SAndroid Build Coastguard Worker
242*79398b25SAndroid Build Coastguard WorkerFor example:
243*79398b25SAndroid Build Coastguard Worker
244*79398b25SAndroid Build Coastguard Worker/pseudo_dir d 666 root root
245*79398b25SAndroid Build Coastguard Worker
246*79398b25SAndroid Build Coastguard Workercreates a directory "/pseudo_dir" with root uid/gid and mode of rw-rw-rw.
247*79398b25SAndroid Build Coastguard Worker
248*79398b25SAndroid Build Coastguard Worker4. Modifying attributes of an existing file
249*79398b25SAndroid Build Coastguard Worker-------------------------------------------
250*79398b25SAndroid Build Coastguard Worker
251*79398b25SAndroid Build Coastguard WorkerPseudo definition
252*79398b25SAndroid Build Coastguard Worker
253*79398b25SAndroid Build Coastguard WorkerFilename m mode uid gid
254*79398b25SAndroid Build Coastguard Worker
255*79398b25SAndroid Build Coastguard Workermode is the octal mode specifier, similar to that expected by chmod.
256*79398b25SAndroid Build Coastguard Worker
257*79398b25SAndroid Build Coastguard Workeruid and gid can be either specified as a decimal number, or by name.
258*79398b25SAndroid Build Coastguard Worker
259*79398b25SAndroid Build Coastguard WorkerFor example:
260*79398b25SAndroid Build Coastguard Worker
261*79398b25SAndroid Build Coastguard Workerdmesg m 666 root root
262*79398b25SAndroid Build Coastguard Worker
263*79398b25SAndroid Build Coastguard WorkerChanges the attributes of the file "dmesg" in the filesystem to have
264*79398b25SAndroid Build Coastguard Workerroot uid/gid and a mode of rw-rw-rw, overriding the attributes obtained
265*79398b25SAndroid Build Coastguard Workerfrom the source filesystem.
266