blob: 85a0076d8e60d5743c54c410a8ac239b936b883d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
#!/bin/sh
# Copyright (C) 2014 OpenWrt.org
do_snapshot_unpack() {
echo "- snapshot -"
mkdir /tmp/snapshot
cd /tmp/snapshot
fs-state snapshot 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 -"
fs-state snapshot 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
tar czf /tmp/snapshot.tar.gz *
fs-state snapshot write
reboot
}
do_config_push() {
cd /volatile
tar czf /tmp/config.tar.gz *
fs-state snapshot config_write
}
do_snapshot_upgrade() {
opkg update
[ $? == 0 ] || exit 1
opkg list-upgradable
[ $? == 0 ] || exit 2
UPDATES=`opkg list-upgradable | cut -d" " -f1`
[ -z "${UPDATES}" ] && exit 0
opkg upgrade ${UPDATES}
[ $? == 0 ] || exit 3
do_snapshot_push
sleep 5
reboot
sleep 10
}
do_convert_jffs2() {
fs-state snapshot write
sleep 2
reboot -f
}
do_convert() {
. /lib/functions.sh
. /lib/upgrade/common.sh
ubus call system upgrade
touch /tmp/sysupgrade
cd /overlay
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 ] && {
case $1 in
push)
do_snapshot_push
;;
config)
do_config_push
;;
upgrade)
do_snapshot_upgrade
;;
info)
fs-state info
;;
esac
}
[ "$SNAPSHOT" = "magic" ] && {
case $1 in
unpack)
do_snapshot_unpack
;;
config_unpack)
do_config_unpack
;;
esac
}
|