#!/bin/sh # Copyright (C) 2014 OpenWrt.org do_snapshot_unpack() { echo "- snapshot -" mkdir /tmp/snapshot cd /tmp/snapshot snapshot_tool read block=`ls block*.tar.gz 2> /dev/null` [ -z "$block" ] || for a in $block; do tar xzf $a -C / rm -f $a done } do_config_unpack() { echo "- config -" snapshot_tool config_read [ -f /tmp/config.tar.gz ] && { tar xzf /tmp/config.tar.gz -C / rm -f /tmp/config.tar.gz } } do_snapshot_push() { cd /volatile/upper tar czf /tmp/snapshot.tar.gz * snapshot_tool write reboot } do_config_push() { cd /volatile/upper tar czf /tmp/config.tar.gz * snapshot_tool config_write } do_snapshot_upgrade() { opkg update [ $? -eq 0 ] || exit 1 opkg list-upgradable [ $? -eq 0 ] || exit 2 UPDATES=`opkg list-upgradable | cut -d" " -f1` [ -z "${UPDATES}" ] && exit 0 opkg upgrade ${UPDATES} [ $? -eq 0 ] || exit 3 do_snapshot_push sleep 5 reboot sleep 10 } do_convert_jffs2() { snapshot_tool write sleep 2 reboot -f } do_convert() { . /lib/functions.sh . /lib/upgrade/common.sh ubus call system upgrade touch /tmp/sysupgrade cd /overlay/upper tar czf /tmp/snapshot.tar.gz * kill_remaining TERM sleep 3 kill_remaining KILL run_ramfs '. /sbin/snapshot; do_convert_jffs2' } [ -n "$(cat /proc/mounts|grep /overlay|grep jffs2)" ] && { case $1 in convert) do_convert ;; esac } [ -d /volatile/upper ] && { case $1 in push) do_snapshot_push ;; config) do_config_push ;; upgrade) do_snapshot_upgrade ;; info) snapshot_tool info ;; esac } [ "$SNAPSHOT" = "magic" ] && { case $1 in unpack) do_snapshot_unpack ;; config_unpack) do_config_unpack ;; esac }