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.
62 lines
1.3 KiB
62 lines
1.3 KiB
![]()
7 years ago
|
#!/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
|