add sysupgrade script for config preserving system upgrades. only implemented for...
[openwrt.git] / package / base-files / files / etc / preinit
index e5fdd43..452209f 100755 (executable)
@@ -3,7 +3,16 @@
 export PATH=/bin:/sbin:/usr/bin:/usr/sbin
 . /etc/diag.sh
 
+failsafe_ip() {
+       ifconfig $ifname 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up
+}
+
 failsafe() {
+       [ -n "$ifname" ] && grep "$ifname" /proc/net/dev >/dev/null && {
+               failsafe_ip
+               netmsg 192.168.1.255 "Entering Failsafe!"
+               telnetd -l /bin/login <> /dev/null 2>&1
+       }
        lock /tmp/.failsafe
        ash --login
 }
@@ -44,13 +53,21 @@ dd if=/dev/console of=/dev/null bs=1 count=0 >/dev/null 2>/dev/null && {
 exec <$M0 >$M1 2>&0
 
 echo "- preinit -"
-
+trap 'FAILSAFE=true' USR1
 [ -e /etc/preinit.arch ] && . /etc/preinit.arch
 set_state preinit
 echo "$HOTPLUG" > /proc/sys/kernel/hotplug
 eval ${FAILSAFE:+failsafe}
 lock -w /tmp/.failsafe
 mount_root
+[ -f /sysupgrade.tgz ] && {
+       echo "- config restore -"
+       cd /
+       mv sysupgrade.tgz /tmp
+       tar xzf /tmp/sysupgrade.tgz
+       rm -f /tmp/sysupgrade.tgz
+       sync
+}
 
 echo "- init -"
        
This page took 0.023743 seconds and 4 git commands to generate.