You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

61 lines
1.3 KiB

#!/bin/sh
PATH=/bin:/sbin
SQUASH_IMG=/squash/root.img
SQUASH_MNT=/squash/root
SQUASH_MNT_REC=/squash/mounts
SQUASHED_MNT="usr etc"
echo $SQUASH_MNT > $SQUASH_MNT_REC
# Following mount points are neccessary for mounting a squash image
[ ! -d /proc/self ] && \
mount -t proc -o nosuid,noexec,nodev proc /proc
[ ! -d /sys/kernel ] && \
mount -t sysfs -o nosuid,noexec,nodev sysfs /sys
[ ! -e /dev/loop-control ] && \
mount -t devtmpfs -o mode=0755,noexec,nosuid,strictatime devtmpfs /dev
# Need a loop device backend, overlayfs, and squashfs module
modprobe loop
if [ $? != 0 ]; then
echo "Unable to setup loop module"
fi
modprobe squashfs
if [ $? != 0 ]; then
echo "Unable to setup squashfs module"
fi
modprobe overlay
if [ $? != 0 ]; then
echo "Unable to setup overlay module"
fi
[ ! -d "$SQUASH_MNT" ] && \
mkdir -m 0755 -p $SQUASH_MNT
# Mount the squashfs image
mount -t squashfs -o ro,loop $SQUASH_IMG $SQUASH_MNT
if [ $? != 0 ]; then
echo "Unable to mount squashed initramfs image"
fi
for file in $SQUASHED_MNT; do
lowerdir=$SQUASH_MNT/$file
workdir=/squash/overlay-work/$file
upperdir=/$file
mntdir=/$file
mkdir -m 0755 -p $workdir
mkdir -m 0755 -p $mntdir
mount -t overlay overlay -o\
lowerdir=$lowerdir,upperdir=$upperdir,workdir=$workdir $mntdir
echo $mntdir >> $SQUASH_MNT_REC
done