diff --git a/openwrt/target/default/target_skeleton/etc/preinit b/openwrt/target/default/target_skeleton/etc/preinit index c6ad0d7065..9a80a7e079 100755 --- a/openwrt/target/default/target_skeleton/etc/preinit +++ b/openwrt/target/default/target_skeleton/etc/preinit @@ -6,27 +6,7 @@ sleep 1 if [ $(cat /proc/sys/reset) = 1 ] ; then export FAILSAFE=true while :; do { echo $(((X=(X+1)%8)%2)) > /proc/sys/diag; sleep $((X==0)); } done & -else - mount | grep jffs2 >&- - if [ $? = 0 ] ; then - mtd unlock rootfs - [ $(cat /proc/mtd | wc -l) = 6 ] && { - echo 5 > /proc/sys/diag - mtd unlock OpenWrt - mtd erase OpenWrt - jffs2root --move - } - mount -o remount,rw /dev/root / - else - mtd unlock mtd4 - mount -t jffs2 /dev/mtdblock/4 /jffs - pivot_root /jffs /jffs/rom - mount none /dev -t devfs - mount none /proc -t proc - umount rom/proc rom/dev - fi fi -mount none /tmp -t ramfs -mkdir -p /dev/pts -mount none /dev/pts -t devpts +/sbin/mount_root ${FAILSAFE:+failsafe} + exec /sbin/init diff --git a/openwrt/target/default/target_skeleton/sbin/mount_root b/openwrt/target/default/target_skeleton/sbin/mount_root new file mode 100755 index 0000000000..db73eaed50 --- /dev/null +++ b/openwrt/target/default/target_skeleton/sbin/mount_root @@ -0,0 +1,24 @@ +#!/bin/sh +if [ "$1" != "failsafe" ]; then + mount | grep jffs2 >&- + if [ $? = 0 ] ; then + mtd unlock rootfs + [ $(cat /proc/mtd | wc -l) = 6 ] && { + echo 5 > /proc/sys/diag + mtd unlock OpenWrt + mtd erase OpenWrt + jffs2root --move + } + mount -o remount,rw /dev/root / + else + mtd unlock mtd4 + mount -t jffs2 /dev/mtdblock/4 /jffs + pivot_root /jffs /jffs/rom + mount none /proc -t proc + mount none /dev -t devfs + umount rom/proc rom/dev + fi +fi +mount none /tmp -t ramfs +mkdir -p /dev/pts +mount none /dev/pts -t devpts