commit profile support for base-files... patches still need to be done
authorTim Yardley <lst@openwrt.org>
Fri, 2 Mar 2007 18:17:40 +0000 (18:17 +0000)
committerTim Yardley <lst@openwrt.org>
Fri, 2 Mar 2007 18:17:40 +0000 (18:17 +0000)
SVN-Revision: 6465

42 files changed:
include/target.mk
package/base-files/Makefile
target/linux/ar7-2.4/base-files/bin/firstboot [deleted file]
target/linux/ar7-2.4/base-files/default/bin/firstboot [new file with mode: 0755]
target/linux/ar7-2.4/base-files/default/etc/config/network [new file with mode: 0644]
target/linux/ar7-2.4/base-files/default/etc/init.d/adam2 [new file with mode: 0755]
target/linux/ar7-2.4/base-files/default/etc/preinit [new file with mode: 0755]
target/linux/ar7-2.4/base-files/default/sbin/mount_root [new file with mode: 0755]
target/linux/ar7-2.4/base-files/etc/config/network [deleted file]
target/linux/ar7-2.4/base-files/etc/init.d/adam2 [deleted file]
target/linux/ar7-2.4/base-files/etc/preinit [deleted file]
target/linux/ar7-2.4/base-files/sbin/mount_root [deleted file]
target/linux/aruba-2.6/base-files/default/etc/config/network [new file with mode: 0644]
target/linux/aruba-2.6/base-files/etc/config/network [deleted file]
target/linux/brcm-2.4/base-files/bin/firstboot [deleted file]
target/linux/brcm-2.4/base-files/default/bin/firstboot [new file with mode: 0755]
target/linux/brcm-2.4/base-files/default/etc/diag.sh [new file with mode: 0644]
target/linux/brcm-2.4/base-files/default/etc/init.d/done [new file with mode: 0755]
target/linux/brcm-2.4/base-files/default/etc/init.d/netconfig [new file with mode: 0755]
target/linux/brcm-2.4/base-files/default/etc/preinit [new file with mode: 0755]
target/linux/brcm-2.4/base-files/default/sbin/hotplug.failsafe [new file with mode: 0755]
target/linux/brcm-2.4/base-files/default/sbin/mount_root [new file with mode: 0755]
target/linux/brcm-2.4/base-files/etc/diag.sh [deleted file]
target/linux/brcm-2.4/base-files/etc/init.d/done [deleted file]
target/linux/brcm-2.4/base-files/etc/init.d/netconfig [deleted file]
target/linux/brcm-2.4/base-files/etc/preinit [deleted file]
target/linux/brcm-2.4/base-files/sbin/hotplug.failsafe [deleted file]
target/linux/brcm-2.4/base-files/sbin/mount_root [deleted file]
target/linux/ixp4xx-2.6/base-files/default/etc/config/network [new file with mode: 0644]
target/linux/ixp4xx-2.6/base-files/default/etc/init.d/netconfig [new file with mode: 0755]
target/linux/ixp4xx-2.6/base-files/etc/config/network [deleted file]
target/linux/ixp4xx-2.6/base-files/etc/init.d/netconfig [deleted file]
target/linux/rb532-2.6/base-files/default/etc/config/network [new file with mode: 0644]
target/linux/rb532-2.6/base-files/default/sbin/cf2nand [new file with mode: 0755]
target/linux/rb532-2.6/base-files/etc/config/network [deleted file]
target/linux/rb532-2.6/base-files/sbin/cf2nand [deleted file]
target/linux/sibyte-2.6/base-files/default/etc/config/network [new file with mode: 0644]
target/linux/sibyte-2.6/base-files/default/etc/inittab [new file with mode: 0644]
target/linux/sibyte-2.6/base-files/etc/config/network [deleted file]
target/linux/sibyte-2.6/base-files/etc/inittab [deleted file]
target/linux/x86-2.6/base-files/default/etc/config/network [new file with mode: 0644]
target/linux/x86-2.6/base-files/etc/config/network [deleted file]

index bd3ceb955b7f00d0f76eb6d6305a2d9be5bd5e68..6a136a1bee4dbd16d7eee3a4b84f45b7c6075dd2 100644 (file)
@@ -5,6 +5,21 @@
 # See /LICENSE for more information.
 #
 
+define AddProfile
+  $(eval $(call Profile/Default))
+  $(eval $(call Profile/$(1)))
+  ifneq ($(ID),)
+    PROFILE:=$(ID)
+       $(ID)_NAME:=$(NAME)
+       $(ID)_PACKAGES:=$(PACKAGES)
+    ifneq ($(KCONFIG),)
+      PROFILE_LIST += \
+               echo '$(ID):'; [ -z '$(NAME)' ] || echo '       $(NAME)'; echo '        Packages: $(PACKAGES)';
+    endif
+  endif
+endef
+
+
 include $(TMP_DIR)/.target.mk
 
 ifeq ($(IB),1)
index 5cbef91e3c97909e04cf331795f6238c64d4cc27..f02f1c9aa3fbf904615bad06f135262f3e42e315 100644 (file)
@@ -101,8 +101,13 @@ endef
 
 define Package/base-files$(TARGET)/install
        $(CP) ./files/* $(1)/
-       if [ -d $(PLATFORM_DIR)/base-files/. ]; then \
-               $(CP) $(PLATFORM_DIR)/base-files/* $(1)/; \
+       if [ -d $(PLATFORM_DIR)/base-files/default/. ]; then \
+               $(CP) $(PLATFORM_DIR)/base-files/default/* $(1)/; \
+       fi
+       if [ "$(PROFILE)" != "Default" ]; then \
+               if [ -d $(PLATFORM_DIR)/base-files/profile-$(PROFILE)/. ]; then \
+                       $(CP) $(PLATFORM_DIR)/base-files/profile-$(PROFILE)/* $(1)/; \
+               fi; \
        fi
        $(SED) 's,$$$$R,r$(REV),g' $(1)/etc/banner
        $(SED) 's,$$$$S,$(BOARD)-$(KERNEL),g' $(1)/etc/ipkg.conf
diff --git a/target/linux/ar7-2.4/base-files/bin/firstboot b/target/linux/ar7-2.4/base-files/bin/firstboot
deleted file mode 100755 (executable)
index 774bbc7..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2006 OpenWrt.org
-
-rom=$(awk '/squashfs/ {print $2}' /proc/mounts)
-jffs=$(awk '/jffs2/ {print $2}' /proc/mounts)
-
-dupe() { # <new_root> <old_root>
-       cd $1
-       echo -n "creating directories... "
-       {
-               cd $2 
-               find . -xdev -type d
-               echo "./dev ./jffs ./mnt ./proc ./tmp ./sys"
-               # xdev skips mounted directories
-               cd $1 
-       } | xargs mkdir -p
-       echo "done"
-
-       echo -n "setting up symlinks... "
-       for file in $(cd $2; find . -xdev -type f;); do
-               case "$file" in
-               ./rom/note) ;; #nothing
-               ./etc/config*|\
-               ./etc/resolv.conf|\
-               ./usr/lib/ipkg/info) cp -af $2/$file $file;;
-               *) ln -sf /rom/${file#./*} $file;;
-               esac
-       done
-       for file in $(cd $2; find . -xdev -type l;); do
-               cp -af $2/${file#./*} $file
-       done
-       echo "done"
-}
-
-pivot() { # <new_root> <old_root>
-       mount -o move /proc $1/proc && \
-       pivot_root $1 $1$2 && {
-               mount -o move $2/dev /dev
-               mount -o move $2/tmp /tmp
-               mount -o move $2/sys /sys
-               return 0
-       }
-}
-
-mountdp() { # <device> <mount_point> <ignored> <fs>
-        dev=$1; mnt=$2; shift 2; opt=$*
-       mount $dev $mnt $opt
-       dupe $mnt $rom
-       pivot $mnt /rom
-}
-
-ramoverlay() {
-       mkdir -p /tmp/root
-       mountdp /tmp/root /mnt -o bind
-}
-
-[ "${0##*/}" = "firstboot" ] && {
-       [ -z "$rom" ] && {
-               echo "You do not have a squashfs partition; aborting"
-               echo "(firstboot cannot be run on jffs2 based firmwares)"
-               exit 1
-       }
-
-       [ "$1" = "switch2jffs" ] && {
-               mtd erase OpenWrt
-               mount -o remount,ro none / # try to avoid fs changing while copying
-               mount -o bind / /mnt
-               mount /dev/mtdblock/4 /rom/jffs -t jffs2
-               echo -n "copying files ... "
-               cp -a /mnt/* /rom/jffs
-               umount /mnt
-               echo "done"
-               pivot /rom /mnt
-               mount -o move /mnt /tmp/root
-               pivot /jffs /rom
-               exit 0
-       }
-
-       # script run manually
-       [ \! -z "$jffs" ] && {
-               echo "firstboot has already been run"
-               echo "jffs2 partition is mounted, only resetting files"
-               dupe $jffs $rom
-               exit 0
-       }
-
-       mtd erase OpenWrt
-       mountdp /dev/mtdblock/4 /jffs -t jffs2
-}
diff --git a/target/linux/ar7-2.4/base-files/default/bin/firstboot b/target/linux/ar7-2.4/base-files/default/bin/firstboot
new file mode 100755 (executable)
index 0000000..774bbc7
--- /dev/null
@@ -0,0 +1,89 @@
+#!/bin/sh
+# Copyright (C) 2006 OpenWrt.org
+
+rom=$(awk '/squashfs/ {print $2}' /proc/mounts)
+jffs=$(awk '/jffs2/ {print $2}' /proc/mounts)
+
+dupe() { # <new_root> <old_root>
+       cd $1
+       echo -n "creating directories... "
+       {
+               cd $2 
+               find . -xdev -type d
+               echo "./dev ./jffs ./mnt ./proc ./tmp ./sys"
+               # xdev skips mounted directories
+               cd $1 
+       } | xargs mkdir -p
+       echo "done"
+
+       echo -n "setting up symlinks... "
+       for file in $(cd $2; find . -xdev -type f;); do
+               case "$file" in
+               ./rom/note) ;; #nothing
+               ./etc/config*|\
+               ./etc/resolv.conf|\
+               ./usr/lib/ipkg/info) cp -af $2/$file $file;;
+               *) ln -sf /rom/${file#./*} $file;;
+               esac
+       done
+       for file in $(cd $2; find . -xdev -type l;); do
+               cp -af $2/${file#./*} $file
+       done
+       echo "done"
+}
+
+pivot() { # <new_root> <old_root>
+       mount -o move /proc $1/proc && \
+       pivot_root $1 $1$2 && {
+               mount -o move $2/dev /dev
+               mount -o move $2/tmp /tmp
+               mount -o move $2/sys /sys
+               return 0
+       }
+}
+
+mountdp() { # <device> <mount_point> <ignored> <fs>
+        dev=$1; mnt=$2; shift 2; opt=$*
+       mount $dev $mnt $opt
+       dupe $mnt $rom
+       pivot $mnt /rom
+}
+
+ramoverlay() {
+       mkdir -p /tmp/root
+       mountdp /tmp/root /mnt -o bind
+}
+
+[ "${0##*/}" = "firstboot" ] && {
+       [ -z "$rom" ] && {
+               echo "You do not have a squashfs partition; aborting"
+               echo "(firstboot cannot be run on jffs2 based firmwares)"
+               exit 1
+       }
+
+       [ "$1" = "switch2jffs" ] && {
+               mtd erase OpenWrt
+               mount -o remount,ro none / # try to avoid fs changing while copying
+               mount -o bind / /mnt
+               mount /dev/mtdblock/4 /rom/jffs -t jffs2
+               echo -n "copying files ... "
+               cp -a /mnt/* /rom/jffs
+               umount /mnt
+               echo "done"
+               pivot /rom /mnt
+               mount -o move /mnt /tmp/root
+               pivot /jffs /rom
+               exit 0
+       }
+
+       # script run manually
+       [ \! -z "$jffs" ] && {
+               echo "firstboot has already been run"
+               echo "jffs2 partition is mounted, only resetting files"
+               dupe $jffs $rom
+               exit 0
+       }
+
+       mtd erase OpenWrt
+       mountdp /dev/mtdblock/4 /jffs -t jffs2
+}
diff --git a/target/linux/ar7-2.4/base-files/default/etc/config/network b/target/linux/ar7-2.4/base-files/default/etc/config/network
new file mode 100644 (file)
index 0000000..911134b
--- /dev/null
@@ -0,0 +1,14 @@
+# Network configuration file
+
+config interface loopback
+       option ifname   lo
+       option proto    static
+       option ipaddr   127.0.0.1
+       option netmask  255.0.0.0
+
+config interface lan
+       option ifname   eth0
+       option proto    static
+       option ipaddr   192.168.1.1
+       option netmask  255.255.255.0
+
diff --git a/target/linux/ar7-2.4/base-files/default/etc/init.d/adam2 b/target/linux/ar7-2.4/base-files/default/etc/init.d/adam2
new file mode 100755 (executable)
index 0000000..425bc15
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh /etc/rc.common
+# ADAM2 patcher for Netgear DG834 and compatible
+# Copyright (C) 2006 OpenWrt.org
+
+START=00
+start() {
+       MD5="$(md5sum /dev/mtdblock/0  | awk '{print $1}')"
+       [ "$MD5" = "0530bfdf00ec155f4182afd70da028c1" ] && {
+               mtd unlock adam2
+               /sbin/adam2patcher /dev/mtdblock/0
+       }
+       rm -f /etc/init.d/S00adam2 /sbin/adam2patcher >&- 2>&-
+}
diff --git a/target/linux/ar7-2.4/base-files/default/etc/preinit b/target/linux/ar7-2.4/base-files/default/etc/preinit
new file mode 100755 (executable)
index 0000000..5b676ca
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin
+mount none /proc -t proc
+
+[ -f /etc/preinit.arch ] && . /etc/preinit.arch
+[ -z "$FAILSAFE" ] || {
+       echo /bin/true > /proc/sys/kernel/hotplug
+       telnetd -l /bin/login <> /dev/null 2>&1
+}
+mount_root ${FAILSAFE:+failsafe}
+exec /sbin/init
diff --git a/target/linux/ar7-2.4/base-files/default/sbin/mount_root b/target/linux/ar7-2.4/base-files/default/sbin/mount_root
new file mode 100755 (executable)
index 0000000..6b90bdc
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo)
+mount none /tmp -t tmpfs -o size=$size
+
+if [ "$1" != "failsafe" ]; then 
+       mtd unlock linux
+       mount | grep jffs2 >&-
+       if [ $? = 0 ] ; then
+               if [ $(cat /proc/mtd | wc -l) = 6 ]; then
+                       mtd erase OpenWrt
+               else
+                       mount -o remount,rw /dev/root /
+               fi
+       else
+               . /bin/firstboot
+               echo "switching to jffs2"
+               mount /dev/mtdblock/4 /jffs -t jffs2
+               pivot /jffs /rom || {
+                       echo "jffs2 unusable; using ramdisk"
+                       ramoverlay
+               }
+       fi
+fi
+
+mount none /tmp -t tmpfs -o remount,nosuid,nodev,mode=1777
+mkdir -p /dev/pts
+mount none /dev/pts -t devpts
+mount -t sysfs none /sys 2>&-
diff --git a/target/linux/ar7-2.4/base-files/etc/config/network b/target/linux/ar7-2.4/base-files/etc/config/network
deleted file mode 100644 (file)
index 911134b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Network configuration file
-
-config interface loopback
-       option ifname   lo
-       option proto    static
-       option ipaddr   127.0.0.1
-       option netmask  255.0.0.0
-
-config interface lan
-       option ifname   eth0
-       option proto    static
-       option ipaddr   192.168.1.1
-       option netmask  255.255.255.0
-
diff --git a/target/linux/ar7-2.4/base-files/etc/init.d/adam2 b/target/linux/ar7-2.4/base-files/etc/init.d/adam2
deleted file mode 100755 (executable)
index 425bc15..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh /etc/rc.common
-# ADAM2 patcher for Netgear DG834 and compatible
-# Copyright (C) 2006 OpenWrt.org
-
-START=00
-start() {
-       MD5="$(md5sum /dev/mtdblock/0  | awk '{print $1}')"
-       [ "$MD5" = "0530bfdf00ec155f4182afd70da028c1" ] && {
-               mtd unlock adam2
-               /sbin/adam2patcher /dev/mtdblock/0
-       }
-       rm -f /etc/init.d/S00adam2 /sbin/adam2patcher >&- 2>&-
-}
diff --git a/target/linux/ar7-2.4/base-files/etc/preinit b/target/linux/ar7-2.4/base-files/etc/preinit
deleted file mode 100755 (executable)
index 5b676ca..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-export PATH=/bin:/sbin:/usr/bin:/usr/sbin
-mount none /proc -t proc
-
-[ -f /etc/preinit.arch ] && . /etc/preinit.arch
-[ -z "$FAILSAFE" ] || {
-       echo /bin/true > /proc/sys/kernel/hotplug
-       telnetd -l /bin/login <> /dev/null 2>&1
-}
-mount_root ${FAILSAFE:+failsafe}
-exec /sbin/init
diff --git a/target/linux/ar7-2.4/base-files/sbin/mount_root b/target/linux/ar7-2.4/base-files/sbin/mount_root
deleted file mode 100755 (executable)
index 6b90bdc..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo)
-mount none /tmp -t tmpfs -o size=$size
-
-if [ "$1" != "failsafe" ]; then 
-       mtd unlock linux
-       mount | grep jffs2 >&-
-       if [ $? = 0 ] ; then
-               if [ $(cat /proc/mtd | wc -l) = 6 ]; then
-                       mtd erase OpenWrt
-               else
-                       mount -o remount,rw /dev/root /
-               fi
-       else
-               . /bin/firstboot
-               echo "switching to jffs2"
-               mount /dev/mtdblock/4 /jffs -t jffs2
-               pivot /jffs /rom || {
-                       echo "jffs2 unusable; using ramdisk"
-                       ramoverlay
-               }
-       fi
-fi
-
-mount none /tmp -t tmpfs -o remount,nosuid,nodev,mode=1777
-mkdir -p /dev/pts
-mount none /dev/pts -t devpts
-mount -t sysfs none /sys 2>&-
diff --git a/target/linux/aruba-2.6/base-files/default/etc/config/network b/target/linux/aruba-2.6/base-files/default/etc/config/network
new file mode 100644 (file)
index 0000000..1d9b55b
--- /dev/null
@@ -0,0 +1,11 @@
+# Network configuration file
+
+config interface loopback
+       option ifname   lo
+       option proto    static
+       option ipaddr   127.0.0.1
+       option netmask  255.0.0.0
+
+config interface lan
+       option ifname   eth0
+       option proto    dhcp
diff --git a/target/linux/aruba-2.6/base-files/etc/config/network b/target/linux/aruba-2.6/base-files/etc/config/network
deleted file mode 100644 (file)
index 1d9b55b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# Network configuration file
-
-config interface loopback
-       option ifname   lo
-       option proto    static
-       option ipaddr   127.0.0.1
-       option netmask  255.0.0.0
-
-config interface lan
-       option ifname   eth0
-       option proto    dhcp
diff --git a/target/linux/brcm-2.4/base-files/bin/firstboot b/target/linux/brcm-2.4/base-files/bin/firstboot
deleted file mode 100755 (executable)
index c3d9a64..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/bin/sh
-# $Id$
-. /etc/functions.sh
-
-partname="OpenWrt"
-mtdpart="$(find_mtd_part $partname)"
-
-rom=$(awk '/squashfs/ {print $2}' /proc/mounts)
-jffs=$(awk '/jffs2/ {print $2}' /proc/mounts)
-
-dupe() { # <new_root> <old_root>
-       cd $1
-       echo -n "creating directories... "
-       {
-               cd $2 
-               find . -xdev -type d
-               echo "./dev ./jffs ./mnt ./proc ./tmp"
-               # xdev skips mounted directories
-               cd $1 
-       } | xargs mkdir -p
-       echo "done"
-
-       echo -n "setting up symlinks... "
-       for file in $(cd $2; find . -xdev -type f;); do
-               case "$file" in
-               ./rom/note) ;; #nothing
-               ./etc/config*|\
-               ./usr/lib/ipkg/info/*) cp -af $2/$file $file;;
-               *) ln -sf /rom/${file#./*} $file;;
-               esac
-       done
-       for file in $(cd $2; find . -xdev -type l;); do
-               cp -af $2/${file#./*} $file
-       done
-       echo "done"
-}
-
-pivot() { # <new_root> <old_root>
-       mount -o move /proc $1/proc && \
-       pivot_root $1 $1$2 && {
-               mount -o move $2/dev /dev
-               mount -o move $2/tmp /tmp
-               mount -o move $2/jffs /jffs 2>&-
-               return 0
-       }
-}
-
-fopivot() { # <rw_root> <ro_root> <dupe?>
-       root=$1
-       {
-               mount -t mini_fo -o base=/,sto=$1 $1 /mnt 2>&- && root=/mnt
-       } || {
-               [ "$3" = "1" ] && {
-               mount | grep "on $1 type" 2>&- 1>&- || mount -o bind $1 $1
-               dupe $1 $rom
-               }
-       }
-       pivot $root $2
-}
-
-ramoverlay() {
-       mkdir -p /tmp/root
-       fopivot /tmp/root /rom 1
-}
-
-# invoked as an executable
-[ "${0##*/}" = "firstboot" ] && {
-
-       [ -z "$mtdpart" ] && {
-               echo "MTD partition not found."
-               exit 1
-       }
-
-       [ -z "$rom" ] && {
-               echo "You do not have a squashfs partition; aborting"
-               echo "(firstboot cannot be run on jffs2 based firmwares)"
-               exit 1
-       }
-
-       [ "$1" = "switch2jffs" ] && {
-               mtd erase "$partname"
-
-               # try to avoid fs changing while copying
-               mount -o remount,ro none / 2>&-
-
-               # copy ramoverlay to jffs2
-               mount "$mtdpart" /rom/jffs -t jffs2
-               echo -n "copying files ... "
-               cp -a /tmp/root/* /rom/jffs 2>&-
-               echo "done"
-
-               # switch back to squashfs (temporarily)
-               # and park the ramdisk ontop of /tmp/root
-               pivot /rom /mnt
-               mount -o move /mnt /tmp/root
-
-               # /jffs is the overlay
-               # /rom is the readonly
-               fopivot /jffs /rom
-
-               # try to get rid of /tmp/root
-               # this will almost always fail
-               umount /tmp/root 2>&-
-
-               # fs is clean
-               jffs2root --clean
-               exit 0
-       }
-
-       # script run manually
-       [ \! -z "$jffs" ] && {
-               echo "firstboot has already been run"
-               echo "jffs2 partition is mounted, only resetting files"
-               grep mini_fo /proc/filesystems >&-
-               [ $? != 0 ] && {
-                       dupe $jffs $rom
-                       exit 0
-               } || { 
-                       rm -rf $jffs/* 2>&-
-                       mount -o remount $jffs / 2>&-
-                       exit 0
-               }
-       }
-
-       mtd erase "$partname"
-       mount "$mtdpart" /jffs -t jffs2
-       fopivot /jffs /rom 1
-}
diff --git a/target/linux/brcm-2.4/base-files/default/bin/firstboot b/target/linux/brcm-2.4/base-files/default/bin/firstboot
new file mode 100755 (executable)
index 0000000..c3d9a64
--- /dev/null
@@ -0,0 +1,128 @@
+#!/bin/sh
+# $Id$
+. /etc/functions.sh
+
+partname="OpenWrt"
+mtdpart="$(find_mtd_part $partname)"
+
+rom=$(awk '/squashfs/ {print $2}' /proc/mounts)
+jffs=$(awk '/jffs2/ {print $2}' /proc/mounts)
+
+dupe() { # <new_root> <old_root>
+       cd $1
+       echo -n "creating directories... "
+       {
+               cd $2 
+               find . -xdev -type d
+               echo "./dev ./jffs ./mnt ./proc ./tmp"
+               # xdev skips mounted directories
+               cd $1 
+       } | xargs mkdir -p
+       echo "done"
+
+       echo -n "setting up symlinks... "
+       for file in $(cd $2; find . -xdev -type f;); do
+               case "$file" in
+               ./rom/note) ;; #nothing
+               ./etc/config*|\
+               ./usr/lib/ipkg/info/*) cp -af $2/$file $file;;
+               *) ln -sf /rom/${file#./*} $file;;
+               esac
+       done
+       for file in $(cd $2; find . -xdev -type l;); do
+               cp -af $2/${file#./*} $file
+       done
+       echo "done"
+}
+
+pivot() { # <new_root> <old_root>
+       mount -o move /proc $1/proc && \
+       pivot_root $1 $1$2 && {
+               mount -o move $2/dev /dev
+               mount -o move $2/tmp /tmp
+               mount -o move $2/jffs /jffs 2>&-
+               return 0
+       }
+}
+
+fopivot() { # <rw_root> <ro_root> <dupe?>
+       root=$1
+       {
+               mount -t mini_fo -o base=/,sto=$1 $1 /mnt 2>&- && root=/mnt
+       } || {
+               [ "$3" = "1" ] && {
+               mount | grep "on $1 type" 2>&- 1>&- || mount -o bind $1 $1
+               dupe $1 $rom
+               }
+       }
+       pivot $root $2
+}
+
+ramoverlay() {
+       mkdir -p /tmp/root
+       fopivot /tmp/root /rom 1
+}
+
+# invoked as an executable
+[ "${0##*/}" = "firstboot" ] && {
+
+       [ -z "$mtdpart" ] && {
+               echo "MTD partition not found."
+               exit 1
+       }
+
+       [ -z "$rom" ] && {
+               echo "You do not have a squashfs partition; aborting"
+               echo "(firstboot cannot be run on jffs2 based firmwares)"
+               exit 1
+       }
+
+       [ "$1" = "switch2jffs" ] && {
+               mtd erase "$partname"
+
+               # try to avoid fs changing while copying
+               mount -o remount,ro none / 2>&-
+
+               # copy ramoverlay to jffs2
+               mount "$mtdpart" /rom/jffs -t jffs2
+               echo -n "copying files ... "
+               cp -a /tmp/root/* /rom/jffs 2>&-
+               echo "done"
+
+               # switch back to squashfs (temporarily)
+               # and park the ramdisk ontop of /tmp/root
+               pivot /rom /mnt
+               mount -o move /mnt /tmp/root
+
+               # /jffs is the overlay
+               # /rom is the readonly
+               fopivot /jffs /rom
+
+               # try to get rid of /tmp/root
+               # this will almost always fail
+               umount /tmp/root 2>&-
+
+               # fs is clean
+               jffs2root --clean
+               exit 0
+       }
+
+       # script run manually
+       [ \! -z "$jffs" ] && {
+               echo "firstboot has already been run"
+               echo "jffs2 partition is mounted, only resetting files"
+               grep mini_fo /proc/filesystems >&-
+               [ $? != 0 ] && {
+                       dupe $jffs $rom
+                       exit 0
+               } || { 
+                       rm -rf $jffs/* 2>&-
+                       mount -o remount $jffs / 2>&-
+                       exit 0
+               }
+       }
+
+       mtd erase "$partname"
+       mount "$mtdpart" /jffs -t jffs2
+       fopivot /jffs /rom 1
+}
diff --git a/target/linux/brcm-2.4/base-files/default/etc/diag.sh b/target/linux/brcm-2.4/base-files/default/etc/diag.sh
new file mode 100644 (file)
index 0000000..3b08554
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+# Copyright (C) 2006 OpenWrt.org
+
+set_led() {
+       local led="$1"
+       local state="$2"
+       [ -f "/proc/diag/led/$1" ] && echo "$state" > "/proc/diag/led/$1"
+}
+
+set_state() {
+       case "$1" in
+               preinit)
+                       set_led dmz 1
+                       set_led diag 1
+                       set_led power 0
+               ;;
+               failsafe)
+                       set_led diag f
+                       set_led power f
+                       set_led dmz f
+               ;;
+               done)
+                       set_led dmz 0
+                       set_led diag 0
+                       set_led power 1
+               ;;
+       esac
+}
diff --git a/target/linux/brcm-2.4/base-files/default/etc/init.d/done b/target/linux/brcm-2.4/base-files/default/etc/init.d/done
new file mode 100755 (executable)
index 0000000..0640b61
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
+
+START=95
+boot() {
+       [ -d /tmp/root ] && {
+               lock /tmp/.switch2jffs
+               firstboot switch2jffs
+               lock -u /tmp/.switch2jffs
+       }
+
+       # set leds to normal state
+       . /etc/diag.sh
+       set_state done
+}
diff --git a/target/linux/brcm-2.4/base-files/default/etc/init.d/netconfig b/target/linux/brcm-2.4/base-files/default/etc/init.d/netconfig
new file mode 100755 (executable)
index 0000000..4cc23d2
--- /dev/null
@@ -0,0 +1,145 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
+
+START=05
+
+start() {
+       [ -e /etc/config/network ] && exit 0
+
+       mkdir -p /etc/config
+
+       (
+               if grep -E 'mtd0: 000(6|a)0000' /proc/mtd 2>&- >&-; then
+                       # WGT634u
+                       echo boardtype=wgt634u
+               else
+                       strings /dev/mtdblock/3
+               fi
+       ) | awk '
+       function p(cfgname, name) {
+               if (c[name] != "") print "      option " cfgname "      \"" c[name] "\""
+       }
+
+       function macinc(mac, maca, i, result) {
+               split(mac, maca, ":")
+               for (i = 1; i <= 6; i++) maca[i] = "0x" maca[i]
+               if (++maca[6] > 0xff) {
+                       maca[5]++
+                       maca[6] = 0
+               }
+               for (i = 1; i <= 6; i++) {
+                       if (i != 1) result = result ":"
+                       result = result sprintf("%02x", maca[i])
+               }
+               return result
+       }
+
+       BEGIN {
+               FS="="
+               c["lan_ifname"]="eth0.0"
+               c["wan_ifname"]="eth0.1"
+               c["vlan0ports"]="1 2 3 4 5*"
+               c["vlan1ports"]="0 5"
+               getline < "/proc/diag/model"
+               model=$0
+               for (i = 0; i < 6; i++) {
+                       if (mac_check != "") mac_check = mac_check ":"
+                       mac_check = mac_check "[0-9a-fA-F][0-9a-fA-F]"
+               }
+       }
+       
+       ($1 == "boardnum") || ($1 == "boardtype") || ($1 == "boardflags") || ($1 ~ /macaddr/) {
+               nvram[$1] = $2
+       }
+       
+       END {
+               if ((model == "ASUS WL-HDD") || (model == "ASUS WL-300g") || (model == "Linksys WAP54G V1")) {
+                       c["wan_ifname"] = ""
+                       c["lan_ifname"] = "eth1"
+               }
+               if (model == "ASUS WL-500g") {
+                       c["wan_ifname"] = "eth1"
+                       c["lan_ifname"] = "eth0"
+               }
+               if (nvram["boardtype"] == "bcm94710r4") {
+                       # Toshiba WRC-1000
+                       c["lan_ifname"] = "eth0"
+                       c["wan_ifname"] = "eth1"
+               }
+               if (nvram["boardtype"] == "wgt634u") {
+                       c["vlan0ports"] = "0 1 2 3 5*"
+                       c["vlan1ports"] = "4 5"
+               }
+               if (nvram["boardtype"] == "0x0467") {
+                       c["vlan0ports"] = "0 1 2 3 5*"
+                       c["vlan1ports"] = "4 5"
+               }
+               if ((nvram["boardtype"] == "0x042f") || (nvram["boardtype"] == "0x0472")) {
+                       if (nvram["boardnum"] == "45") {
+                               # WL-500gP
+                               c["vlan0ports"] = "1 2 3 4 5*"
+                               c["vlan1ports"] = "0 5"
+                       } else {
+                               # Generic BCM94704
+                               c["vlan0ports"] = "0 1 2 3 4 5u"
+                               c["vlan1ports"] = ""
+                               c["lan_ifname"] = "eth0"
+                               c["wan_ifname"] = "eth1"
+
+                               # MAC addresses on 4704 tend to be screwed up. Add a workaround here
+                               if (nvram["et0macaddr"] ~ mac_check) {
+                                       c["lan_macaddr"] = nvram["et0macaddr"]
+                                       c["wan_macaddr"] = macinc(c["lan_macaddr"])
+                               }
+                       }
+               }
+
+               # WAP54G
+               if ((nvram["boardnum"] == "2") || \
+                       (nvram["boardnum"] == "1024")) {
+                       c["lan_ifname"]="eth0"
+                       c["wan_ifname"]=""
+               }
+       
+               # ASUS WL-700gE
+               # These are actually same as defaults above. For some reason this script applies
+               # Generic BCM94704 settings instead so we revert to proper settings here.       
+               # Hopefully someone will fix this properly soon.
+               if (model == "ASUS WL-700gE") {
+                       c["lan_ifname"]="eth0.0"
+                       c["wan_ifname"]="eth0.1"
+                       c["vlan0ports"]="1 2 3 4 5*"
+                       c["vlan1ports"]="0 5"
+               }
+               
+               print "#### VLAN configuration "
+               print "config switch eth0"
+               p("vlan0", "vlan0ports")
+               p("vlan1", "vlan1ports")
+               print ""
+               print ""
+               print "#### Loopback configuration"
+               print "config interface loopback"
+               print " option ifname   \"lo\""
+               print " option proto    static"
+               print " option ipaddr   127.0.0.1"
+               print " option netmask  255.0.0.0"
+               print ""
+               print ""
+               print "#### LAN configuration"
+               print "config interface lan"
+               print " option type     bridge"
+               p("ifname", "lan_ifname")
+               p("macaddr", "lan_macaddr")
+               print " option proto    static"
+               print " option ipaddr   192.168.1.1"
+               print " option netmask  255.255.255.0"
+               print ""
+               print ""
+               print "#### WAN configuration"
+               print "config interface wan"
+               p("ifname", "wan_ifname")
+               p("macaddr", "wan_macaddr")
+               print " option proto    dhcp"
+       }' > /etc/config/network
+}
diff --git a/target/linux/brcm-2.4/base-files/default/etc/preinit b/target/linux/brcm-2.4/base-files/default/etc/preinit
new file mode 100755 (executable)
index 0000000..1c4e59f
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/sh
+# Copyright (C) 2006 OpenWrt.org
+
+. /etc/functions.sh
+. /etc/diag.sh
+
+failsafe() {
+       lock /tmp/.failsafe
+
+       echo "0 1 2 3 4 5u*" > /proc/switch/eth0/vlan/0/ports
+       
+       set_state failsafe
+       [ -x "/usr/sbin/nvram" ] && {
+               [ "$(nvram get boot_wait)" != "on" ] && {
+                       nvram set boot_wait=on
+                       nvram commit
+               }
+       }
+
+       netmsg 192.168.1.255 "Entering Failsafe!"
+       telnetd -l /bin/login <> /dev/null 2>&1
+
+       ash --login
+}
+
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin
+mount none /proc -t proc
+size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo)
+mount none /tmp -t tmpfs -o size=$size
+
+insmod diag
+set_state preinit
+trap 'FAILSAFE=true' USR1
+echo '/sbin/hotplug.failsafe' > /proc/sys/kernel/hotplug
+
+ifname=eth0
+
+# hardware specific overrides
+case "$(cat /proc/diag/model)" in
+       "Linksys WAP54G V1") ifname=eth1;;
+       "ASUS WL-HDD") ifname=eth1;;
+       "ASUS WL-300g") ifname=eth1;;
+       "ASUS (unknown, BCM4702)") ifname=eth1;;
+esac
+
+insmod switch-core
+insmod switch-robo || insmod switch-adm || rmmod switch-core
+
+ifconfig $ifname 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up
+
+[ -d /proc/switch/eth0 ] && {
+       echo 1 > /proc/switch/eth0/reset
+
+       # this would be easier if we blasted the message across all ports
+       # but we don't want packets leaking across interfaces
+       for port in $(seq 0 4); do {
+               echo "$port 5u*" > /proc/switch/eth0/vlan/0/ports
+               netmsg 192.168.1.255 "Press reset now, to enter Failsafe!"
+       }; done
+} || netmsg 192.168.1.255 "Press reset now, to enter Failsafe!"
+
+sleep 2
+
+eval ${FAILSAFE:+failsafe}
+
+lock -w /tmp/.failsafe
+set_state preinit
+echo /sbin/hotplug > /proc/sys/kernel/hotplug
+
+ifconfig $ifname 0.0.0.0 down
+
+mount_root
+exec /sbin/init
diff --git a/target/linux/brcm-2.4/base-files/default/sbin/hotplug.failsafe b/target/linux/brcm-2.4/base-files/default/sbin/hotplug.failsafe
new file mode 100755 (executable)
index 0000000..0544339
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+case "$1" in
+       button) kill -USR1 1;;
+esac
diff --git a/target/linux/brcm-2.4/base-files/default/sbin/mount_root b/target/linux/brcm-2.4/base-files/default/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>&-
diff --git a/target/linux/brcm-2.4/base-files/etc/diag.sh b/target/linux/brcm-2.4/base-files/etc/diag.sh
deleted file mode 100644 (file)
index 3b08554..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2006 OpenWrt.org
-
-set_led() {
-       local led="$1"
-       local state="$2"
-       [ -f "/proc/diag/led/$1" ] && echo "$state" > "/proc/diag/led/$1"
-}
-
-set_state() {
-       case "$1" in
-               preinit)
-                       set_led dmz 1
-                       set_led diag 1
-                       set_led power 0
-               ;;
-               failsafe)
-                       set_led diag f
-                       set_led power f
-                       set_led dmz f
-               ;;
-               done)
-                       set_led dmz 0
-                       set_led diag 0
-                       set_led power 1
-               ;;
-       esac
-}
diff --git a/target/linux/brcm-2.4/base-files/etc/init.d/done b/target/linux/brcm-2.4/base-files/etc/init.d/done
deleted file mode 100755 (executable)
index 0640b61..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2006 OpenWrt.org
-
-START=95
-boot() {
-       [ -d /tmp/root ] && {
-               lock /tmp/.switch2jffs
-               firstboot switch2jffs
-               lock -u /tmp/.switch2jffs
-       }
-
-       # set leds to normal state
-       . /etc/diag.sh
-       set_state done
-}
diff --git a/target/linux/brcm-2.4/base-files/etc/init.d/netconfig b/target/linux/brcm-2.4/base-files/etc/init.d/netconfig
deleted file mode 100755 (executable)
index 4cc23d2..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2006 OpenWrt.org
-
-START=05
-
-start() {
-       [ -e /etc/config/network ] && exit 0
-
-       mkdir -p /etc/config
-
-       (
-               if grep -E 'mtd0: 000(6|a)0000' /proc/mtd 2>&- >&-; then
-                       # WGT634u
-                       echo boardtype=wgt634u
-               else
-                       strings /dev/mtdblock/3
-               fi
-       ) | awk '
-       function p(cfgname, name) {
-               if (c[name] != "") print "      option " cfgname "      \"" c[name] "\""
-       }
-
-       function macinc(mac, maca, i, result) {
-               split(mac, maca, ":")
-               for (i = 1; i <= 6; i++) maca[i] = "0x" maca[i]
-               if (++maca[6] > 0xff) {
-                       maca[5]++
-                       maca[6] = 0
-               }
-               for (i = 1; i <= 6; i++) {
-                       if (i != 1) result = result ":"
-                       result = result sprintf("%02x", maca[i])
-               }
-               return result
-       }
-
-       BEGIN {
-               FS="="
-               c["lan_ifname"]="eth0.0"
-               c["wan_ifname"]="eth0.1"
-               c["vlan0ports"]="1 2 3 4 5*"
-               c["vlan1ports"]="0 5"
-               getline < "/proc/diag/model"
-               model=$0
-               for (i = 0; i < 6; i++) {
-                       if (mac_check != "") mac_check = mac_check ":"
-                       mac_check = mac_check "[0-9a-fA-F][0-9a-fA-F]"
-               }
-       }
-       
-       ($1 == "boardnum") || ($1 == "boardtype") || ($1 == "boardflags") || ($1 ~ /macaddr/) {
-               nvram[$1] = $2
-       }
-       
-       END {
-               if ((model == "ASUS WL-HDD") || (model == "ASUS WL-300g") || (model == "Linksys WAP54G V1")) {
-                       c["wan_ifname"] = ""
-                       c["lan_ifname"] = "eth1"
-               }
-               if (model == "ASUS WL-500g") {
-                       c["wan_ifname"] = "eth1"
-                       c["lan_ifname"] = "eth0"
-               }
-               if (nvram["boardtype"] == "bcm94710r4") {
-                       # Toshiba WRC-1000
-                       c["lan_ifname"] = "eth0"
-                       c["wan_ifname"] = "eth1"
-               }
-               if (nvram["boardtype"] == "wgt634u") {
-                       c["vlan0ports"] = "0 1 2 3 5*"
-                       c["vlan1ports"] = "4 5"
-               }
-               if (nvram["boardtype"] == "0x0467") {
-                       c["vlan0ports"] = "0 1 2 3 5*"
-                       c["vlan1ports"] = "4 5"
-               }
-               if ((nvram["boardtype"] == "0x042f") || (nvram["boardtype"] == "0x0472")) {
-                       if (nvram["boardnum"] == "45") {
-                               # WL-500gP
-                               c["vlan0ports"] = "1 2 3 4 5*"
-                               c["vlan1ports"] = "0 5"
-                       } else {
-                               # Generic BCM94704
-                               c["vlan0ports"] = "0 1 2 3 4 5u"
-                               c["vlan1ports"] = ""
-                               c["lan_ifname"] = "eth0"
-                               c["wan_ifname"] = "eth1"
-
-                               # MAC addresses on 4704 tend to be screwed up. Add a workaround here
-                               if (nvram["et0macaddr"] ~ mac_check) {
-                                       c["lan_macaddr"] = nvram["et0macaddr"]
-                                       c["wan_macaddr"] = macinc(c["lan_macaddr"])
-                               }
-                       }
-               }
-
-               # WAP54G
-               if ((nvram["boardnum"] == "2") || \
-                       (nvram["boardnum"] == "1024")) {
-                       c["lan_ifname"]="eth0"
-                       c["wan_ifname"]=""
-               }
-       
-               # ASUS WL-700gE
-               # These are actually same as defaults above. For some reason this script applies
-               # Generic BCM94704 settings instead so we revert to proper settings here.       
-               # Hopefully someone will fix this properly soon.
-               if (model == "ASUS WL-700gE") {
-                       c["lan_ifname"]="eth0.0"
-                       c["wan_ifname"]="eth0.1"
-                       c["vlan0ports"]="1 2 3 4 5*"
-                       c["vlan1ports"]="0 5"
-               }
-               
-               print "#### VLAN configuration "
-               print "config switch eth0"
-               p("vlan0", "vlan0ports")
-               p("vlan1", "vlan1ports")
-               print ""
-               print ""
-               print "#### Loopback configuration"
-               print "config interface loopback"
-               print " option ifname   \"lo\""
-               print " option proto    static"
-               print " option ipaddr   127.0.0.1"
-               print " option netmask  255.0.0.0"
-               print ""
-               print ""
-               print "#### LAN configuration"
-               print "config interface lan"
-               print " option type     bridge"
-               p("ifname", "lan_ifname")
-               p("macaddr", "lan_macaddr")
-               print " option proto    static"
-               print " option ipaddr   192.168.1.1"
-               print " option netmask  255.255.255.0"
-               print ""
-               print ""
-               print "#### WAN configuration"
-               print "config interface wan"
-               p("ifname", "wan_ifname")
-               p("macaddr", "wan_macaddr")
-               print " option proto    dhcp"
-       }' > /etc/config/network
-}
diff --git a/target/linux/brcm-2.4/base-files/etc/preinit b/target/linux/brcm-2.4/base-files/etc/preinit
deleted file mode 100755 (executable)
index 1c4e59f..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2006 OpenWrt.org
-
-. /etc/functions.sh
-. /etc/diag.sh
-
-failsafe() {
-       lock /tmp/.failsafe
-
-       echo "0 1 2 3 4 5u*" > /proc/switch/eth0/vlan/0/ports
-       
-       set_state failsafe
-       [ -x "/usr/sbin/nvram" ] && {
-               [ "$(nvram get boot_wait)" != "on" ] && {
-                       nvram set boot_wait=on
-                       nvram commit
-               }
-       }
-
-       netmsg 192.168.1.255 "Entering Failsafe!"
-       telnetd -l /bin/login <> /dev/null 2>&1
-
-       ash --login
-}
-
-export PATH=/bin:/sbin:/usr/bin:/usr/sbin
-mount none /proc -t proc
-size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo)
-mount none /tmp -t tmpfs -o size=$size
-
-insmod diag
-set_state preinit
-trap 'FAILSAFE=true' USR1
-echo '/sbin/hotplug.failsafe' > /proc/sys/kernel/hotplug
-
-ifname=eth0
-
-# hardware specific overrides
-case "$(cat /proc/diag/model)" in
-       "Linksys WAP54G V1") ifname=eth1;;
-       "ASUS WL-HDD") ifname=eth1;;
-       "ASUS WL-300g") ifname=eth1;;
-       "ASUS (unknown, BCM4702)") ifname=eth1;;
-esac
-
-insmod switch-core
-insmod switch-robo || insmod switch-adm || rmmod switch-core
-
-ifconfig $ifname 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up
-
-[ -d /proc/switch/eth0 ] && {
-       echo 1 > /proc/switch/eth0/reset
-
-       # this would be easier if we blasted the message across all ports
-       # but we don't want packets leaking across interfaces
-       for port in $(seq 0 4); do {
-               echo "$port 5u*" > /proc/switch/eth0/vlan/0/ports
-               netmsg 192.168.1.255 "Press reset now, to enter Failsafe!"
-       }; done
-} || netmsg 192.168.1.255 "Press reset now, to enter Failsafe!"
-
-sleep 2
-
-eval ${FAILSAFE:+failsafe}
-
-lock -w /tmp/.failsafe
-set_state preinit
-echo /sbin/hotplug > /proc/sys/kernel/hotplug
-
-ifconfig $ifname 0.0.0.0 down
-
-mount_root
-exec /sbin/init
diff --git a/target/linux/brcm-2.4/base-files/sbin/hotplug.failsafe b/target/linux/brcm-2.4/base-files/sbin/hotplug.failsafe
deleted file mode 100755 (executable)
index 0544339..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-case "$1" in
-       button) kill -USR1 1;;
-esac
diff --git a/target/linux/brcm-2.4/base-files/sbin/mount_root b/target/linux/brcm-2.4/base-files/sbin/mount_root
deleted file mode 100755 (executable)
index ffa6072..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/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>&-
diff --git a/target/linux/ixp4xx-2.6/base-files/default/etc/config/network b/target/linux/ixp4xx-2.6/base-files/default/etc/config/network
new file mode 100644 (file)
index 0000000..1d9b55b
--- /dev/null
@@ -0,0 +1,11 @@
+# Network configuration file
+
+config interface loopback
+       option ifname   lo
+       option proto    static
+       option ipaddr   127.0.0.1
+       option netmask  255.0.0.0
+
+config interface lan
+       option ifname   eth0
+       option proto    dhcp
diff --git a/target/linux/ixp4xx-2.6/base-files/default/etc/init.d/netconfig b/target/linux/ixp4xx-2.6/base-files/default/etc/init.d/netconfig
new file mode 100755 (executable)
index 0000000..ded5f4b
--- /dev/null
@@ -0,0 +1,84 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
+
+START=15
+
+# hardware
+#  the 'Hardware' string from cpuinfo
+hardware(){
+       sed -n 's!^Hardware     *: !!p' /proc/cpuinfo
+}
+#
+# machine
+#  outputs an identifier of the current machine - i.e. the board
+#  slugos is running on.
+machine(){
+       case "$(hardware)" in
+       *Avila*)        echo avila;;
+       *Loft*)         echo loft;;
+       *NAS?100d*)     echo nas100d;;
+       *DSM?G600*)     echo dsmg600;;
+       *NSLU2*)        echo nslu2;;
+       *FSG?3*)        echo fsg3;;
+       *Gateway?7001*) echo gateway7001;;
+       *)              echo unknown;;
+       esac
+}
+
+start() {
+       [ -e /etc/config/network ] && exit 0
+
+       mkdir -p /etc/config
+
+       (
+               case "$(machine)" in
+                       nslu2)
+                               sysconf=$(find_mtd_part "SysConf")
+                               echo model=nslu2
+                               strings $sysconf ;;
+                       nas100d)
+                               sysconf=$(find_mtd_part "sysconfig")
+                               echo model=nas100d
+                               strings $sysconf ;;
+                       *)
+                               echo model=$(machine) ;;
+               esac
+       ) | awk '
+       function p(cfgname, name) {
+               if (c[name] != "") print "      option " cfgname "      \"" c[name] "\""
+       }
+
+       BEGIN {
+               FS="="
+       }
+       
+       {       c[$1] = $2      }
+       
+       END {
+               print "#### Loopback configuration"
+               print "config interface loopback"
+               print " option ifname   \"lo\""
+               print " option proto    static"
+               print " option ipaddr   127.0.0.1"
+               print " option netmask  255.0.0.0"
+               print ""
+               print ""
+               print "#### LAN configuration"
+               print "config interface lan"
+               print " option ifname   \"eth0\""
+               if ((c["model"] == "nslu2") || (c["model"] == "nas100d")) {
+                       p("proto", "bootproto")
+                       p("ipaddr", "ip_addr")
+                       p("netmask", "netmask")
+                       p("gateway", "gateway")
+                       p("dns", "dns_server1")
+                       p("hostname", "disk_server_name")
+               }
+               else {
+                       print " option proto    dhcp"
+               }
+       }' > /etc/config/network
+
+       ifup loopback
+       ifup lan
+}
diff --git a/target/linux/ixp4xx-2.6/base-files/etc/config/network b/target/linux/ixp4xx-2.6/base-files/etc/config/network
deleted file mode 100644 (file)
index 1d9b55b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# Network configuration file
-
-config interface loopback
-       option ifname   lo
-       option proto    static
-       option ipaddr   127.0.0.1
-       option netmask  255.0.0.0
-
-config interface lan
-       option ifname   eth0
-       option proto    dhcp
diff --git a/target/linux/ixp4xx-2.6/base-files/etc/init.d/netconfig b/target/linux/ixp4xx-2.6/base-files/etc/init.d/netconfig
deleted file mode 100755 (executable)
index ded5f4b..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2006 OpenWrt.org
-
-START=15
-
-# hardware
-#  the 'Hardware' string from cpuinfo
-hardware(){
-       sed -n 's!^Hardware     *: !!p' /proc/cpuinfo
-}
-#
-# machine
-#  outputs an identifier of the current machine - i.e. the board
-#  slugos is running on.
-machine(){
-       case "$(hardware)" in
-       *Avila*)        echo avila;;
-       *Loft*)         echo loft;;
-       *NAS?100d*)     echo nas100d;;
-       *DSM?G600*)     echo dsmg600;;
-       *NSLU2*)        echo nslu2;;
-       *FSG?3*)        echo fsg3;;
-       *Gateway?7001*) echo gateway7001;;
-       *)              echo unknown;;
-       esac
-}
-
-start() {
-       [ -e /etc/config/network ] && exit 0
-
-       mkdir -p /etc/config
-
-       (
-               case "$(machine)" in
-                       nslu2)
-                               sysconf=$(find_mtd_part "SysConf")
-                               echo model=nslu2
-                               strings $sysconf ;;
-                       nas100d)
-                               sysconf=$(find_mtd_part "sysconfig")
-                               echo model=nas100d
-                               strings $sysconf ;;
-                       *)
-                               echo model=$(machine) ;;
-               esac
-       ) | awk '
-       function p(cfgname, name) {
-               if (c[name] != "") print "      option " cfgname "      \"" c[name] "\""
-       }
-
-       BEGIN {
-               FS="="
-       }
-       
-       {       c[$1] = $2      }
-       
-       END {
-               print "#### Loopback configuration"
-               print "config interface loopback"
-               print " option ifname   \"lo\""
-               print " option proto    static"
-               print " option ipaddr   127.0.0.1"
-               print " option netmask  255.0.0.0"
-               print ""
-               print ""
-               print "#### LAN configuration"
-               print "config interface lan"
-               print " option ifname   \"eth0\""
-               if ((c["model"] == "nslu2") || (c["model"] == "nas100d")) {
-                       p("proto", "bootproto")
-                       p("ipaddr", "ip_addr")
-                       p("netmask", "netmask")
-                       p("gateway", "gateway")
-                       p("dns", "dns_server1")
-                       p("hostname", "disk_server_name")
-               }
-               else {
-                       print " option proto    dhcp"
-               }
-       }' > /etc/config/network
-
-       ifup loopback
-       ifup lan
-}
diff --git a/target/linux/rb532-2.6/base-files/default/etc/config/network b/target/linux/rb532-2.6/base-files/default/etc/config/network
new file mode 100644 (file)
index 0000000..8279690
--- /dev/null
@@ -0,0 +1,12 @@
+# Copyright (C) 2006 OpenWrt.org
+
+config interface loopback
+       option ifname   lo
+       option proto    static
+       option ipaddr   127.0.0.1
+       option netmask  255.0.0.0
+
+config interface lan
+       option ifname   eth0
+       option proto    dhcp
+
diff --git a/target/linux/rb532-2.6/base-files/default/sbin/cf2nand b/target/linux/rb532-2.6/base-files/default/sbin/cf2nand
new file mode 100755 (executable)
index 0000000..9cb216c
--- /dev/null
@@ -0,0 +1,61 @@
+#!/bin/sh
+. /etc/functions.sh
+
+copy_kernel() {
+       local input="$1"
+       local output="$2"
+       local cmdline="$3"
+       size="$(echo -n "$cmdline" | wc -c)"
+       dd if="$input" bs=3M count=1 > "$output"
+       /sbin/patch-cmdline "$output" "$cmdline"
+}
+
+fstype="$(mount | grep ' / ' | awk '$5 != "rootfs" {print $5}')"
+case "$fstype" in
+       ext2|jffs2) echo "Copying from $fstype to yaffs2";;
+       *) echo "Invalid filesystem."; exit 1;;
+esac
+
+[ -d /tmp/cf2nand ] && {
+       echo "/tmp/cf2nand already exists"
+       exit 1
+}
+
+mkdir /tmp/cf2nand
+mkdir /tmp/cf2nand/rootfs
+mount -t "$fstype" /dev/root /tmp/cf2nand/rootfs || {
+       echo "Mounting rootfs failed."
+       exit 1
+}
+
+boot="$(find_mtd_part 'RouterBoard NAND Boot')"
+main="$(find_mtd_part 'RouterBoard NAND Main')"
+[ -z "$boot" -o -z "$main" ] && {
+       echo "Cannot find NAND Flash partitions"
+       exit 1
+}
+
+echo "Erasing filesystem..."
+mtd erase Boot 2>/dev/null >/dev/null
+mtd erase Main 2>/dev/null >/dev/null
+
+mkdir /tmp/cf2nand/p1
+mkdir /tmp/cf2nand/p2
+mount -t yaffs2 "$boot" /tmp/cf2nand/p1
+mount -t yaffs2 "$main" /tmp/cf2nand/p2
+
+echo "Copying kernel..."
+copy_kernel /dev/cf/card0/part1 /tmp/cf2nand/p1/kernel "root=/dev/mtdblock1 rootfstype=yaffs2 " 2>/dev/null >/dev/null
+umount /tmp/cf2nand/p1
+rmdir /tmp/cf2nand/p1
+
+echo "Copying filesystem..."
+( cd /tmp/cf2nand/rootfs; tar c . ) | ( cd /tmp/cf2nand/p2; tar x )
+sync
+umount /tmp/cf2nand/p2
+rmdir /tmp/cf2nand/p2
+
+umount /tmp/cf2nand/rootfs
+rmdir /tmp/cf2nand/rootfs
+rmdir /tmp/cf2nand
+
diff --git a/target/linux/rb532-2.6/base-files/etc/config/network b/target/linux/rb532-2.6/base-files/etc/config/network
deleted file mode 100644 (file)
index 8279690..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (C) 2006 OpenWrt.org
-
-config interface loopback
-       option ifname   lo
-       option proto    static
-       option ipaddr   127.0.0.1
-       option netmask  255.0.0.0
-
-config interface lan
-       option ifname   eth0
-       option proto    dhcp
-
diff --git a/target/linux/rb532-2.6/base-files/sbin/cf2nand b/target/linux/rb532-2.6/base-files/sbin/cf2nand
deleted file mode 100755 (executable)
index 9cb216c..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-. /etc/functions.sh
-
-copy_kernel() {
-       local input="$1"
-       local output="$2"
-       local cmdline="$3"
-       size="$(echo -n "$cmdline" | wc -c)"
-       dd if="$input" bs=3M count=1 > "$output"
-       /sbin/patch-cmdline "$output" "$cmdline"
-}
-
-fstype="$(mount | grep ' / ' | awk '$5 != "rootfs" {print $5}')"
-case "$fstype" in
-       ext2|jffs2) echo "Copying from $fstype to yaffs2";;
-       *) echo "Invalid filesystem."; exit 1;;
-esac
-
-[ -d /tmp/cf2nand ] && {
-       echo "/tmp/cf2nand already exists"
-       exit 1
-}
-
-mkdir /tmp/cf2nand
-mkdir /tmp/cf2nand/rootfs
-mount -t "$fstype" /dev/root /tmp/cf2nand/rootfs || {
-       echo "Mounting rootfs failed."
-       exit 1
-}
-
-boot="$(find_mtd_part 'RouterBoard NAND Boot')"
-main="$(find_mtd_part 'RouterBoard NAND Main')"
-[ -z "$boot" -o -z "$main" ] && {
-       echo "Cannot find NAND Flash partitions"
-       exit 1
-}
-
-echo "Erasing filesystem..."
-mtd erase Boot 2>/dev/null >/dev/null
-mtd erase Main 2>/dev/null >/dev/null
-
-mkdir /tmp/cf2nand/p1
-mkdir /tmp/cf2nand/p2
-mount -t yaffs2 "$boot" /tmp/cf2nand/p1
-mount -t yaffs2 "$main" /tmp/cf2nand/p2
-
-echo "Copying kernel..."
-copy_kernel /dev/cf/card0/part1 /tmp/cf2nand/p1/kernel "root=/dev/mtdblock1 rootfstype=yaffs2 " 2>/dev/null >/dev/null
-umount /tmp/cf2nand/p1
-rmdir /tmp/cf2nand/p1
-
-echo "Copying filesystem..."
-( cd /tmp/cf2nand/rootfs; tar c . ) | ( cd /tmp/cf2nand/p2; tar x )
-sync
-umount /tmp/cf2nand/p2
-rmdir /tmp/cf2nand/p2
-
-umount /tmp/cf2nand/rootfs
-rmdir /tmp/cf2nand/rootfs
-rmdir /tmp/cf2nand
-
diff --git a/target/linux/sibyte-2.6/base-files/default/etc/config/network b/target/linux/sibyte-2.6/base-files/default/etc/config/network
new file mode 100644 (file)
index 0000000..9b65652
--- /dev/null
@@ -0,0 +1,14 @@
+# Copyright (C) 2006 OpenWrt.org
+
+config interface loopback
+       option ifname   lo
+       option proto    static
+       option ipaddr   127.0.0.1
+       option netmask  255.0.0.0
+
+config interface lan
+       option type     bridge
+       option ifname   "eth0 ath0"
+       option proto    static
+       option ipaddr   192.168.1.1
+       option netmask  255.255.255.0
diff --git a/target/linux/sibyte-2.6/base-files/default/etc/inittab b/target/linux/sibyte-2.6/base-files/default/etc/inittab
new file mode 100644 (file)
index 0000000..a6f4e17
--- /dev/null
@@ -0,0 +1,5 @@
+# Copyright (C) 2006 OpenWrt.org
+
+::sysinit:/etc/init.d/rcS
+duart/0::askfirst:/bin/ash --login
+#tts/1::askfirst:/bin/ash --login
diff --git a/target/linux/sibyte-2.6/base-files/etc/config/network b/target/linux/sibyte-2.6/base-files/etc/config/network
deleted file mode 100644 (file)
index 9b65652..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (C) 2006 OpenWrt.org
-
-config interface loopback
-       option ifname   lo
-       option proto    static
-       option ipaddr   127.0.0.1
-       option netmask  255.0.0.0
-
-config interface lan
-       option type     bridge
-       option ifname   "eth0 ath0"
-       option proto    static
-       option ipaddr   192.168.1.1
-       option netmask  255.255.255.0
diff --git a/target/linux/sibyte-2.6/base-files/etc/inittab b/target/linux/sibyte-2.6/base-files/etc/inittab
deleted file mode 100644 (file)
index a6f4e17..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright (C) 2006 OpenWrt.org
-
-::sysinit:/etc/init.d/rcS
-duart/0::askfirst:/bin/ash --login
-#tts/1::askfirst:/bin/ash --login
diff --git a/target/linux/x86-2.6/base-files/default/etc/config/network b/target/linux/x86-2.6/base-files/default/etc/config/network
new file mode 100644 (file)
index 0000000..68d8e42
--- /dev/null
@@ -0,0 +1,19 @@
+# Copyright (C) 2006 OpenWrt.org
+
+config interface loopback
+       option ifname   lo
+       option proto    static
+       option ipaddr   127.0.0.1
+       option netmask  255.0.0.0
+
+config interface lan
+       option type     bridge
+       option ifname   "eth1 eth2"
+       option proto    static
+       option ipaddr   192.168.1.1
+       option netmask  255.255.255.0
+
+config interface wan
+       option ifname   eth0
+       option proto    dhcp
+
diff --git a/target/linux/x86-2.6/base-files/etc/config/network b/target/linux/x86-2.6/base-files/etc/config/network
deleted file mode 100644 (file)
index 68d8e42..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (C) 2006 OpenWrt.org
-
-config interface loopback
-       option ifname   lo
-       option proto    static
-       option ipaddr   127.0.0.1
-       option netmask  255.0.0.0
-
-config interface lan
-       option type     bridge
-       option ifname   "eth1 eth2"
-       option proto    static
-       option ipaddr   192.168.1.1
-       option netmask  255.255.255.0
-
-config interface wan
-       option ifname   eth0
-       option proto    dhcp
-