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
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
|
|
|