move firstboot to preinit for now (until a better solution is implemented), required...
[openwrt.git] / openwrt / package / base-files / default / etc / preinit
index 0c59893f75fe0065448088bdd8fc8299bfcbea22..ac9039ca7175f5d7681b3704a118877827e57764 100755 (executable)
@@ -1,17 +1,24 @@
 #!/bin/sh
+. /etc/nvram.sh
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin
 mount none /proc -t proc
 insmod diag
-echo 0x01 > /proc/sys/diag
+[ -f /proc/sys/diag ] && echo 0x01 > /proc/sys/diag
 sleep 1
-if [ $(cat /proc/sys/reset) = 1 ] || [ "$(/usr/sbin/nvram get failsafe)" = 1 ]; then
+if [ -f /proc/sys/reset ] && [ $(cat /proc/sys/reset) = 1 -o "$(nvram get failsafe)" = 1 ]; then
        export FAILSAFE=true
-       [ "$(/usr/sbin/nvram get boot_wait)" != "on" ] && {
-               /usr/sbin/nvram set boot_wait=on
-               /usr/sbin/nvram commit
+       [ -x /usr/sbin/nvram -a "$(nvram get boot_wait)" != "on" ] && {
+               nvram set boot_wait=on
+               nvram commit
        }
        while :; do { echo $(((X=(X+1)%8)%2)) > /proc/sys/diag; sleep $((X==0)); } done &
 fi
 
-/sbin/mount_root ${FAILSAFE:+failsafe}
+mount_root ${FAILSAFE:+failsafe}
+
+# automagically run firstboot
+[ -z "$FAILSAFE" -a -z "$(nvram get no_root_swap)" ] && {
+       { mount|grep "on / type jffs2" 1>&-; } || firstboot
+}
 
 exec /sbin/init