#!/bin/bash ENABLED=no [[ ${ENABLED} == "yes" ]] || exit 0 #grep -q 1 /run/ublinux_started || exit 0 . /usr/lib/ublinux/functions . /usr/lib/ublinux/default SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/system; [ -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 grep -Eq '/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