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