move platform specific base-files into target/linux/<targetname>
[openwrt/svn-archive/archive.git] / target / linux / brcm-2.4 / base-files / sbin / mount_root
diff --git a/target/linux/brcm-2.4/base-files/sbin/mount_root b/target/linux/brcm-2.4/base-files/sbin/mount_root
new file mode 100755 (executable)
index 0000000..ffa6072
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+# Copyright (C) 2006 OpenWrt.org
+
+is_dirty() {
+       grep Broadcom /proc/cpuinfo >&- || return 1
+       OFFSET="$(($(hexdump -v /dev/mtdblock/1 -s 20 -n 2 -e '"%d"')-1))"
+       return $(hexdump -v /dev/mtdblock/1 -s $OFFSET -n 1 -e '"%d"')
+}
+
+if [ "$1" != "failsafe" ]; then 
+       mtd unlock linux
+       mount | grep jffs2 >&-
+       if [ $? = 0 ] ; then
+               mount -o remount,rw /dev/root /
+       else
+               . /bin/firstboot
+               is_dirty 
+               [ $? != 0 ] && {
+                       echo "switching to jffs2"
+                       mount /dev/mtdblock/4 /jffs -t jffs2
+                       fopivot /jffs /rom
+               } || {
+                       echo "jffs2 not ready yet; using ramdisk"
+                       ramoverlay
+               }
+       fi
+fi
+
+mkdir -p /dev/pts
+mount none /dev/pts -t devpts 2>&-
+grep sysfs /proc/filesystems >/dev/null && mount -t sysfs none /sys 2>&-