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.
71 lines
3.2 KiB
71 lines
3.2 KiB
#!/bin/bash
|
|
|
|
ENABLED=no
|
|
[ "$ENABLED" != "yes" ] && exit 0
|
|
#grep -q 1 /run/ublinux_started || exit 0
|
|
|
|
. /usr/lib/ublinux/functions
|
|
. /usr/lib/ublinux/os-config
|
|
|
|
SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
|
|
|
|
SAVETOMODULEOPTIONS="$MKSQFS_FASTALG"
|
|
|
|
PATH=/usr/lib/ublinux/scripts:$PATH
|
|
|
|
# save2module mode parser
|
|
MODULEFORMAT="ubm"
|
|
CHSRC=$(readlink -f /mnt/live/memory/changes)
|
|
IMSRC=$(readlink -f /mnt/live/memory/images)
|
|
[ -z "$SAVETOMODULENAME" -a -w /mnt/livedata/$LIVECDNAME-data/modules ] && SAVETOMODULENAME=/mnt/livedata/$LIVECDNAME-data/modules/zz-save.$MODULEFORMAT
|
|
[ -z "$SAVETOMODULENAME" -a -w /mnt/livemedia/$LIVECDNAME/modules ] && SAVETOMODULENAME=/mnt/livemedia/$LIVECDNAME/modules/zz-save.$MODULEFORMAT
|
|
[ -f /.savetomodule ] && grep -q . /.savetomodule && SAVETOMODULENAME="$(cat /.savetomodule)"
|
|
[ -f /.savetomodule ] && SAVETOMODULE=${SAVETOMODULE-yes}
|
|
grep -q save2module /proc/cmdline && SAVETOMODULE=${SAVETOMODULE-yes}
|
|
# if machine was freezed
|
|
egrep -q '/dynamic/|/static/' /.savetomodule 2>/dev/null && [ -f "$(sed s=dynamic=static= /.savetomodule)" ] && SAVETOMODULE=no
|
|
# if machine was unfreezed
|
|
grep -q /static/ /.savetomodule 2>/dev/null && [ ! -f "$(cat /.savetomodule)" ] && SAVETOMODULENAME=$(sed s=static=dynamic= /.savetomodule)
|
|
SAVETOMODULEDIR="$(dirname $SAVETOMODULENAME)"
|
|
FILELIST=/.savelist
|
|
if [ -w $SAVETOMODULEDIR -a "$SAVETOMODULE" = "yes" ] ;then
|
|
echo "Please wait. Saving changes to module $SAVETOMODULENAME"
|
|
# if old module exists we have to concatenate it
|
|
if [ -d $IMSRC/${SAVETOMODULENAME##*/} ]; then
|
|
echo "Old module exists, we have to concatenate it"
|
|
SRC=/mnt/live/tmp/save2module
|
|
mkdir -p $SRC $SRC-rw
|
|
mount -t aufs -o shwh,br:$SRC-rw=rw:$CHSRC=rr:$IMSRC/${SAVETOMODULENAME##*/}=rr aufs $SRC
|
|
else
|
|
SRC=$CHSRC
|
|
fi
|
|
[ -d /memory/ovl/changes ] && SRC=/memory/ovl/changes
|
|
# preparing excluded files list
|
|
echo -e "/tmp/includedfiles\n/tmp/excludedfiles" > /tmp/excludedfiles
|
|
if [ -f "$FILELIST" ] ;then
|
|
grep ^! "$FILELIST" | cut -c 2- >/tmp/savelist.black
|
|
grep -v '^[!#]' "$FILELIST" | grep . >/tmp/savelist.white
|
|
grep -q . /tmp/savelist.white || echo '.' > /tmp/savelist.white
|
|
find $SRC/ -type l >/tmp/allfiles
|
|
find $SRC/ -type f >>/tmp/allfiles
|
|
sed -i 's|'$SRC'||' /tmp/allfiles
|
|
grep -f /tmp/savelist.white /tmp/allfiles | grep -vf /tmp/savelist.black > /tmp/includedfiles
|
|
grep -q . /tmp/savelist.black && grep -f /tmp/savelist.black /tmp/allfiles >> /tmp/excludedfiles
|
|
grep -vf /tmp/savelist.white /tmp/allfiles >> /tmp/excludedfiles
|
|
find $SRC/ -type d | sed 's|'$SRC'||' | while read a ;do
|
|
grep -q "^$a" /tmp/includedfiles && continue
|
|
echo "$a" | grep -vf /tmp/savelist.black | grep -qf /tmp/savelist.white && continue
|
|
echo "$a" >> /tmp/excludedfiles
|
|
done
|
|
rm -f /tmp/savelist* /tmp/allfiles /tmp/includedfiles
|
|
fi
|
|
sed -i 's|^/||' /tmp/excludedfiles
|
|
# backuping old module
|
|
[ -f "$SAVETOMODULENAME" ] && mv -f "$SAVETOMODULENAME" "${SAVETOMODULENAME}.bak"
|
|
# making module
|
|
[ "$SAVETONOXZM" = "yes" ] && SAVETOMODULEOPTIONS="-noI -noD -noF"
|
|
create_module $SRC "$SAVETOMODULENAME" -ef /tmp/excludedfiles $SAVETOMODULEOPTIONS
|
|
echo
|
|
[ "$SRC" = "$CHSRC" ] || umount "$SRC"
|
|
fi
|