xref: /aosp_15_r20/external/squashfs-tools/RELEASE-READMEs/pseudo-file.example (revision 79398b2563bcbbbab54656397863972d8fa68df1)
1*79398b25SAndroid Build Coastguard Worker# Pseudo file example
2*79398b25SAndroid Build Coastguard Worker
3*79398b25SAndroid Build Coastguard Worker# Mksquashfs supports pseudo files, these allow fake files, directories,
4*79398b25SAndroid Build Coastguard Worker# character and block devices to be specified and added to the Squashfs
5*79398b25SAndroid Build Coastguard Worker# filesystem being built, rather than requiring them to be present in the
6*79398b25SAndroid Build Coastguard Worker# source directories.
7*79398b25SAndroid Build Coastguard Worker#
8*79398b25SAndroid Build Coastguard Worker# This, for example, allows device nodes to be added to the filesystem without
9*79398b25SAndroid Build Coastguard Worker# requiring root access.
10*79398b25SAndroid Build Coastguard Worker
11*79398b25SAndroid Build Coastguard Worker# Mksquashfs 4.1 adds support for "dynamic pseudo files" and a modify operation.
12*79398b25SAndroid Build Coastguard Worker# Dynamic pseudo files allow files to be dynamically created when Mksquashfs
13*79398b25SAndroid Build Coastguard Worker# is run, their contents being the result of running a command or piece of
14*79398b25SAndroid Build Coastguard Worker# shell script.  The modifiy operation allows the mode/uid/gid of an existing
15*79398b25SAndroid Build Coastguard Worker# file in the source filesystem to be modified.
16*79398b25SAndroid Build Coastguard Worker
17*79398b25SAndroid Build Coastguard Worker# Two Mksquashfs options are supported, -p allows one pseudo file to be
18*79398b25SAndroid Build Coastguard Worker# specified #on the command line, and -pf allows a pseudo file to be specified
19*79398b25SAndroid Build Coastguard Worker# containing a list of pseduo definitions, one per line.
20*79398b25SAndroid Build Coastguard Worker
21*79398b25SAndroid Build Coastguard Worker# Pseudo file examples
22*79398b25SAndroid Build Coastguard Worker# Run mkquashfs . /tmp/img -pf pseudo-file.examples
23*79398b25SAndroid Build Coastguard Worker# to see their effect
24*79398b25SAndroid Build Coastguard Worker
25*79398b25SAndroid Build Coastguard Worker# Creating dynamic file examples
26*79398b25SAndroid Build Coastguard Worker
27*79398b25SAndroid Build Coastguard Worker# Create a file "dmesg" containing the output from dmesg.
28*79398b25SAndroid Build Coastguard Workerdmesg f 444 root root dmesg
29*79398b25SAndroid Build Coastguard Worker
30*79398b25SAndroid Build Coastguard Worker
31*79398b25SAndroid Build Coastguard Worker# Create a file RELEASE containing the release name, date, build host, and
32*79398b25SAndroid Build Coastguard Worker# an incrementing version number.  The incrementing version is a side-effect
33*79398b25SAndroid Build Coastguard Worker# of executing the shell script, and ensures every time Mksquashfs is run a
34*79398b25SAndroid Build Coastguard Worker# new version number is used without requiring any other shell scripting.
35*79398b25SAndroid Build Coastguard WorkerRELEASE f 444 root root \
36*79398b25SAndroid Build Coastguard Worker		if [ ! -e /tmp/ver ]; then \
37*79398b25SAndroid Build Coastguard Worker			echo 0 > /tmp/ver; \
38*79398b25SAndroid Build Coastguard Worker		fi; \
39*79398b25SAndroid Build Coastguard Worker                ver=`cat /tmp/ver`; \
40*79398b25SAndroid Build Coastguard Worker                ver=$((ver +1)); \
41*79398b25SAndroid Build Coastguard Worker                echo $ver > /tmp/ver; \
42*79398b25SAndroid Build Coastguard Worker                echo -n "release x.x"; \
43*79398b25SAndroid Build Coastguard Worker                echo "-dev #"$ver `date` "Build host" `hostname`
44*79398b25SAndroid Build Coastguard Worker
45*79398b25SAndroid Build Coastguard Worker
46*79398b25SAndroid Build Coastguard Worker# Copy 10K from the device /dev/sda1 into the file input.  Ordinarily
47*79398b25SAndroid Build Coastguard Worker# Mksquashfs given a device, fifo, or named socket will place that special file
48*79398b25SAndroid Build Coastguard Worker# within the Squashfs filesystem, this allows input from these special
49*79398b25SAndroid Build Coastguard Worker# files to be captured and placed in the Squashfs filesystem.
50*79398b25SAndroid Build Coastguard Workerinput f 444 root root dd if=/dev/sda1 bs=1024 count=10
51*79398b25SAndroid Build Coastguard Worker
52*79398b25SAndroid Build Coastguard Worker
53*79398b25SAndroid Build Coastguard Worker# Creating a block or character device examples
54*79398b25SAndroid Build Coastguard Worker
55*79398b25SAndroid Build Coastguard Worker# Create a character device "chr_dev" with major:minor 100:1 and
56*79398b25SAndroid Build Coastguard Worker# a block device "blk_dev" with major:minor 200:200, both with root
57*79398b25SAndroid Build Coastguard Worker# uid/gid and a mode of rw-rw-rw.
58*79398b25SAndroid Build Coastguard Workerchr_dev c 666 root root 100 1
59*79398b25SAndroid Build Coastguard Workerblk_dev b 666 0 0 200 200
60*79398b25SAndroid Build Coastguard Worker
61*79398b25SAndroid Build Coastguard Worker
62*79398b25SAndroid Build Coastguard Worker# Creating a directory example
63*79398b25SAndroid Build Coastguard Worker
64*79398b25SAndroid Build Coastguard Worker# create a directory "pseudo_dir" with root uid/gid and mode of r--r--r--.
65*79398b25SAndroid Build Coastguard Workerpseudo_dir d 444 root root
66*79398b25SAndroid Build Coastguard Worker
67*79398b25SAndroid Build Coastguard Worker
68*79398b25SAndroid Build Coastguard Worker# Modifying attributes of an existing file exmaple
69*79398b25SAndroid Build Coastguard Worker
70*79398b25SAndroid Build Coastguard Worker# Change the attributes of the file "INSTALL" in the filesystem to have
71*79398b25SAndroid Build Coastguard Worker# root uid/gid and a mode of rw-rw-rw, overriding the attributes obtained
72*79398b25SAndroid Build Coastguard Worker# from the source filesystem.
73*79398b25SAndroid Build Coastguard WorkerINSTALL m 666 root root
74*79398b25SAndroid Build Coastguard Worker
75