summaryrefslogtreecommitdiff
path: root/package/base-files/src
diff options
context:
space:
mode:
Diffstat (limited to 'package/base-files/src')
-rw-r--r--package/base-files/src/etc/banner1
-rw-r--r--package/base-files/src/etc/functions.sh79
-rw-r--r--package/base-files/src/etc/group2
-rw-r--r--package/base-files/src/etc/hosts2
-rw-r--r--package/base-files/src/etc/init.d/boot27
-rw-r--r--package/base-files/src/etc/init.d/done4
-rwxr-xr-xpackage/base-files/src/etc/init.d/rcK21
-rwxr-xr-xpackage/base-files/src/etc/init.d/rcS10
-rw-r--r--package/base-files/src/etc/inittab4
-rw-r--r--package/base-files/src/etc/ipkg.conf3
-rw-r--r--package/base-files/src/etc/mdev.conf11
-rw-r--r--package/base-files/src/etc/modules1
-rwxr-xr-xpackage/base-files/src/etc/network/if-post-down.d/01-bridge26
-rwxr-xr-xpackage/base-files/src/etc/network/if-post-down.d/02-vlan10
-rwxr-xr-xpackage/base-files/src/etc/network/if-pre-up.d/01-atm41
-rwxr-xr-xpackage/base-files/src/etc/network/if-pre-up.d/02-vlan36
-rwxr-xr-xpackage/base-files/src/etc/network/if-pre-up.d/03-bridge29
-rwxr-xr-xpackage/base-files/src/etc/network/if-up.d/01-bridge4
-rw-r--r--package/base-files/src/etc/network/interfaces2
-rw-r--r--package/base-files/src/etc/passwd2
-rw-r--r--package/base-files/src/etc/profile12
-rw-r--r--package/base-files/src/etc/protocols45
-rw-r--r--package/base-files/src/etc/rc.conf3
-rw-r--r--package/base-files/src/etc/shadow3
-rw-r--r--package/base-files/src/etc/sysctl.conf17
-rwxr-xr-xpackage/base-files/src/init22
-rw-r--r--package/base-files/src/lib/mdev/init21
-rwxr-xr-xpackage/base-files/src/sbin/update75
-rwxr-xr-xpackage/base-files/src/usr/share/udhcpc/default.script38
29 files changed, 551 insertions, 0 deletions
diff --git a/package/base-files/src/etc/banner b/package/base-files/src/etc/banner
new file mode 100644
index 000000000..49dbb9685
--- /dev/null
+++ b/package/base-files/src/etc/banner
@@ -0,0 +1 @@
+ Linux created with OpenADK
diff --git a/package/base-files/src/etc/functions.sh b/package/base-files/src/etc/functions.sh
new file mode 100644
index 000000000..5d76f4843
--- /dev/null
+++ b/package/base-files/src/etc/functions.sh
@@ -0,0 +1,79 @@
+# newline
+N="
+"
+
+append() {
+ local var="$1"
+ local value="$2"
+ local sep="${3:- }"
+
+ eval "export -- \"$var=\${$var:+\${$var}\${value:+\$sep}}\$value\""
+}
+
+load_modules() {
+ (sed "s,^[^#][^[:space:]]*,insmod /lib/modules/$(uname -r)/&.ko," $* | sh 2>&- || :)
+}
+
+user_exists() {
+ grep -q "^$1:" $IPKG_INSTROOT/etc/passwd 2>&-
+}
+
+group_exists() {
+ grep -q "^$1:" $IPKG_INSTROOT/etc/group 2>&-
+}
+
+service_exists() {
+ grep -q "^$1[[:space:]]*$2" $IPKG_INSTROOT/etc/services 2>&-
+}
+
+rcconf_exists() {
+ grep -q "^#*$1=" $IPKG_INSTROOT/etc/rc.conf 2>&-
+}
+
+add_user() {
+ user_exists $1 || {
+ echo "adding user $1 to /etc/passwd"
+ echo "$1:x:$2:${3:-$2}:$1:${4:-/tmp}:${5:-/bin/false}" \
+ >>$IPKG_INSTROOT/etc/passwd
+ }
+}
+
+add_group() {
+ group_exists $1 || {
+ echo "adding group $1 to /etc/group"
+ echo "$1:x:$2:$3" >>$IPKG_INSTROOT/etc/group
+ }
+}
+
+add_service() {
+ service_exists $1 $2 || {
+ echo "adding service $1 to /etc/services"
+ printf '%s\t%s\n' "$1" "$2" >>$IPKG_INSTROOT/etc/services
+ }
+}
+
+add_rcconf() {
+ rcconf_exists ${2-$1} || {
+ echo "adding service ${2-$1} to /etc/rc.conf"
+ printf '%s="%s"\t\t# %s\n' "${2:-$1}" "${3:-NO}" "$1" \
+ >>$IPKG_INSTROOT/etc/rc.conf
+ }
+}
+
+get_next_uid() {
+ uid=1
+ while grep "^[^:]*:[^:]*:$uid:" $IPKG_INSTROOT/etc/passwd \
+ >/dev/null 2>&1; do
+ uid=$(($uid+1))
+ done
+ echo $uid
+}
+
+get_next_gid() {
+ gid=1
+ while grep "^[^:]*:[^:]*:$gid:" $IPKG_INSTROOT/etc/group \
+ >/dev/null 2>&1; do
+ gid=$(($gid+1))
+ done
+ echo $gid
+}
diff --git a/package/base-files/src/etc/group b/package/base-files/src/etc/group
new file mode 100644
index 000000000..c4e77f316
--- /dev/null
+++ b/package/base-files/src/etc/group
@@ -0,0 +1,2 @@
+root:x:0:
+nogroup:x:65534:
diff --git a/package/base-files/src/etc/hosts b/package/base-files/src/etc/hosts
new file mode 100644
index 000000000..87d837fc7
--- /dev/null
+++ b/package/base-files/src/etc/hosts
@@ -0,0 +1,2 @@
+::1 localhost
+127.0.0.1 localhost
diff --git a/package/base-files/src/etc/init.d/boot b/package/base-files/src/etc/init.d/boot
new file mode 100644
index 000000000..f71e46240
--- /dev/null
+++ b/package/base-files/src/etc/init.d/boot
@@ -0,0 +1,27 @@
+#!/bin/sh
+#INIT 10
+[[ $1 = autostart ]] || exit 0
+
+. /etc/functions.sh
+
+mkdir -p /var/log
+mkdir -p /var/run
+touch /var/log/lastlog
+touch /var/log/wtmp
+ln -s /var/tmp /tmp
+
+echo 0 > /proc/sys/kernel/printk
+
+HOSTNAME=
+[[ -s /etc/hostname ]] && HOSTNAME=$(cat /etc/hostname)
+HOSTNAME=${HOSTNAME%%.*}
+echo ${HOSTNAME:=linux} >/proc/sys/kernel/hostname
+
+chown 0:0 /tmp; chmod 1777 /tmp
+
+load_modules /etc/modules
+for f in /etc/modules.d/*; do
+ [[ -e $f ]] && load_modules /etc/modules.d/*
+ break
+done
+exit 0
diff --git a/package/base-files/src/etc/init.d/done b/package/base-files/src/etc/init.d/done
new file mode 100644
index 000000000..e5b655bb6
--- /dev/null
+++ b/package/base-files/src/etc/init.d/done
@@ -0,0 +1,4 @@
+#!/bin/sh
+#INIT 98
+[[ $1 = autostart ]] && sysctl -p >&-
+exit 0
diff --git a/package/base-files/src/etc/init.d/rcK b/package/base-files/src/etc/init.d/rcK
new file mode 100755
index 000000000..e94d1a296
--- /dev/null
+++ b/package/base-files/src/etc/init.d/rcK
@@ -0,0 +1,21 @@
+#!/bin/sh
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin
+busybox reboot -d 60 -f & # just in caseā€¦
+{
+ [[ -f /proc/diag/led/power ]] && echo f >/proc/diag/led/power
+ test -e /etc/rc.shutdown && (/bin/sh /etc/rc.shutdown) 2>&1
+ grep '^#INIT ' /etc/init.d/* | \
+ sort -rnk2 | \
+ while read line; do
+ shebang=$(sed -n '1s/^#![ ]*//p' ${line%%:*})
+ case $shebang in
+ *[\ \ ]*) shebang=\'$(echo X"$shebang" | sed \
+ -e 's/^X//' -e "s/'/'\\\\''/g" \
+ -e 's/^\([^ ][^ ]*\)[ ]*$/\1/' \
+ -e 's/^\([^ ][^ ]*\)[ ][ ]*\(..*\)$/\1 \2/' \
+ -e 's/^\([^ ][^ ]*\) /\1'\'' '\''/')\' ;;
+ esac
+ ${shebang:-/bin/sh} ${line%%:*} autostop 2>&1
+ done
+ [[ -f /proc/diag/led/power ]] && echo 0 >/proc/diag/led/power
+} | logger -s -p 6 -t ''
diff --git a/package/base-files/src/etc/init.d/rcS b/package/base-files/src/etc/init.d/rcS
new file mode 100755
index 000000000..fd56feebf
--- /dev/null
+++ b/package/base-files/src/etc/init.d/rcS
@@ -0,0 +1,10 @@
+#!/bin/sh
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin
+{
+ grep '^#INIT ' /etc/init.d/* | \
+ sort -nk2 | \
+ while read line; do
+ /bin/sh ${line%%:*} autostart 2>&1
+ done
+ test -e /etc/init.d/boot.local && (/bin/sh /etc/init.d/boot.local) 2>&1
+} | logger -s -p 6 -t '' &
diff --git a/package/base-files/src/etc/inittab b/package/base-files/src/etc/inittab
new file mode 100644
index 000000000..960ea77d8
--- /dev/null
+++ b/package/base-files/src/etc/inittab
@@ -0,0 +1,4 @@
+::sysinit:/etc/init.d/rcS
+::shutdown:/etc/init.d/rcK
+ttyS0::respawn:/sbin/getty -i -L ttyS0 115200 vt100
+
diff --git a/package/base-files/src/etc/ipkg.conf b/package/base-files/src/etc/ipkg.conf
new file mode 100644
index 000000000..6c9242620
--- /dev/null
+++ b/package/base-files/src/etc/ipkg.conf
@@ -0,0 +1,3 @@
+src openadk http://www.openadk.org/packages/@TARGET@
+dest root /
+dest ram /tmp
diff --git a/package/base-files/src/etc/mdev.conf b/package/base-files/src/etc/mdev.conf
new file mode 100644
index 000000000..99c910d0b
--- /dev/null
+++ b/package/base-files/src/etc/mdev.conf
@@ -0,0 +1,11 @@
+tun 0:0 660 >net/tun
+null 0:0 777
+zero 0:0 666
+console 0:0 0600
+kmem 0:0 000
+mem 0:0 0640
+port 0:0 0640
+ptmx 0:0 666
+tty 0:0 0666
+ttyS* 0:0 640
+.* 0:0 644 @/lib/mdev/init
diff --git a/package/base-files/src/etc/modules b/package/base-files/src/etc/modules
new file mode 100644
index 000000000..014f40f2b
--- /dev/null
+++ b/package/base-files/src/etc/modules
@@ -0,0 +1 @@
+# add modules to load on startup here
diff --git a/package/base-files/src/etc/network/if-post-down.d/01-bridge b/package/base-files/src/etc/network/if-post-down.d/01-bridge
new file mode 100755
index 000000000..47f3c976b
--- /dev/null
+++ b/package/base-files/src/etc/network/if-post-down.d/01-bridge
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+if [ ! -x /usr/sbin/brctl ]
+then
+ exit 0
+fi
+
+case "$IF_BRIDGE_PORTS" in
+ "")
+ exit 0
+ ;;
+ none)
+ INTERFACES=""
+ ;;
+ *)
+ INTERFACES="$IF_BRIDGE_PORTS"
+ ;;
+esac
+
+for IF in $INTERFACES; do
+ ip link set down dev $IF && brctl delif $IFACE $IF
+done
+
+ip link set down dev $IFACE || exit 1
+brctl delbr $IFACE
+exit 0
diff --git a/package/base-files/src/etc/network/if-post-down.d/02-vlan b/package/base-files/src/etc/network/if-post-down.d/02-vlan
new file mode 100755
index 000000000..e448a7641
--- /dev/null
+++ b/package/base-files/src/etc/network/if-post-down.d/02-vlan
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+[ -x /sbin/vconfig ] || exit 0
+
+[ -e /proc/net/vlan/$IFACE ] && (
+ ip link set down dev $IFACE
+ vconfig rem $IFACE
+)
+
+exit 0
diff --git a/package/base-files/src/etc/network/if-pre-up.d/01-atm b/package/base-files/src/etc/network/if-pre-up.d/01-atm
new file mode 100755
index 000000000..5c168c001
--- /dev/null
+++ b/package/base-files/src/etc/network/if-pre-up.d/01-atm
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+[ -x /usr/sbin/br2684ctl ] || exit 0
+
+[ "${IFACE%%[0-9]*}" = "nas" ] || exit 0
+
+[ "$IF_ATM_ENCAPS" ] || encap=0
+[ "$IF_ATM_PAYLOAD" ] || payload=1
+[ "$IF_ATM_VPI" ] || IF_ATM_VPI=1
+[ "$IF_ATM_VCI" ] || IF_ATM_VCI=32
+
+[ "$IF_ATM_PAYLOAD" ] && case "$IF_ATM_PAYLOAD" in
+bridged)
+ payload=1
+ ;;
+routed)
+ payload=0
+ ;;
+*)
+ echo "Wrong payload, use either bridged or routed"
+ exit 1
+ ;;
+esac
+
+[ "$IF_ATM_ENCAPS" ] && case "$IF_ATM_ENCAPS" in
+llc)
+ encap=0
+ ;;
+vc)
+ encap=1
+ ;;
+*)
+ echo "Wrong Encapsulation use either llc or vc"
+ exit 1
+ ;;
+esac
+
+br2684ctl -b -c ${IFACE##*[a-z]} -e $encap -p $payload -a $IF_ATM_VPI.$IF_ATM_VCI
+ifconfig nas${IFACE##*[a-z]} up
+
+exit 0
diff --git a/package/base-files/src/etc/network/if-pre-up.d/02-vlan b/package/base-files/src/etc/network/if-pre-up.d/02-vlan
new file mode 100755
index 000000000..35b7fca59
--- /dev/null
+++ b/package/base-files/src/etc/network/if-pre-up.d/02-vlan
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+[ -x /sbin/vconfig ] || exit 0
+[ -d /proc/net/vlan ] || exit 0
+
+case "$IFACE" in
+ vlan*)
+ vconfig set_name_type VLAN_PLUS_VID_NO_PAD
+ VLANID=`echo $IFACE|sed "s/vlan*//"`
+ ;;
+ eth*.*)
+ vconfig set_name_type DEV_PLUS_VID_NO_PAD
+ VLANID=`echo $IFACE|sed "s/eth[0-9][0-9]*\.*//g"`
+ IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(eth[0-9][0-9]*\)\..*/\1/"`
+ ;;
+ *)
+ exit 0
+ ;;
+esac
+
+if [ "$IF_VLAN_RAW_DEVICE" != "" ]; then
+ if ! grep -q "$IF_VLAN_RAW_DEVICE" /proc/net/dev
+ then
+ echo "$IF_VLAN_RAW_DEVICE does not exist, unable to create $IFACE"
+ exit 1
+ fi
+ ip link set up dev $IF_VLAN_RAW_DEVICE
+ vconfig add $IF_VLAN_RAW_DEVICE $VLANID
+ if [ "$IF_MAC_ADDRESS" != "" ]
+ then
+ ip link set $IF_VLAN_RAW_DEVICE.$VLANID address $IF_MAC_ADDRESS
+ fi
+ ip link set up dev $IF_VLAN_RAW_DEVICE.$VLANID
+fi
+
+exit 0
diff --git a/package/base-files/src/etc/network/if-pre-up.d/03-bridge b/package/base-files/src/etc/network/if-pre-up.d/03-bridge
new file mode 100755
index 000000000..41ddb2b58
--- /dev/null
+++ b/package/base-files/src/etc/network/if-pre-up.d/03-bridge
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+[ -x /usr/sbin/brctl ] || exit 0
+
+case "$IF_BRIDGE_PORTS" in
+ "")
+ exit 0
+ ;;
+ none)
+ INTERFACES=""
+ ;;
+ *)
+ INTERFACES="$IF_BRIDGE_PORTS"
+ ;;
+esac
+
+brctl addbr $IFACE || exit 1
+
+for IF in $INTERFACES; do
+ if ! grep -q $IF /proc/net/dev; then
+ echo "Error: interface '$IF' does not exist!"
+ brctl delbr $IFACE
+ exit 1
+ fi
+ brctl addif $IFACE $IF
+ ip link set up dev $IF
+done
+
+exit 0
diff --git a/package/base-files/src/etc/network/if-up.d/01-bridge b/package/base-files/src/etc/network/if-up.d/01-bridge
new file mode 100755
index 000000000..e5962f12f
--- /dev/null
+++ b/package/base-files/src/etc/network/if-up.d/01-bridge
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+[ "${IFACE%%[0-9]*}" = "br" ] && ip link set up dev $IFACE
+exit 0
diff --git a/package/base-files/src/etc/network/interfaces b/package/base-files/src/etc/network/interfaces
new file mode 100644
index 000000000..f1bd92ed2
--- /dev/null
+++ b/package/base-files/src/etc/network/interfaces
@@ -0,0 +1,2 @@
+auto lo
+iface lo inet loopback
diff --git a/package/base-files/src/etc/passwd b/package/base-files/src/etc/passwd
new file mode 100644
index 000000000..32531eb92
--- /dev/null
+++ b/package/base-files/src/etc/passwd
@@ -0,0 +1,2 @@
+root:x:0:0:root:/root:/bin/sh
+nobody:*:65534:65534:nobody:/var:/bin/false
diff --git a/package/base-files/src/etc/profile b/package/base-files/src/etc/profile
new file mode 100644
index 000000000..1b8f4a6a6
--- /dev/null
+++ b/package/base-files/src/etc/profile
@@ -0,0 +1,12 @@
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin
+export TERM=vt220
+if [[ $(id -u) = 0 ]]; then
+ export PS1='# '
+else
+ export PS1='$ '
+ export HOME=/tmp
+fi
+cat /etc/banner 2>&-
+[ -x /usr/bin/vim ] && alias vi=vim || alias vim=vi
+[ -x /usr/bin/arp ] || arp() { cat /proc/net/arp; }
+[ -x /usr/bin/ldd ] || ldd() { LD_TRACE_LOADED_OBJECTS=1 "$@"; }
diff --git a/package/base-files/src/etc/protocols b/package/base-files/src/etc/protocols
new file mode 100644
index 000000000..dfe58ed22
--- /dev/null
+++ b/package/base-files/src/etc/protocols
@@ -0,0 +1,45 @@
+ip 0 IP
+icmp 1 ICMP
+igmp 2 IGMP
+ggp 3 GGP
+ipencap 4 IP-ENCAP
+st 5 ST
+tcp 6 TCP
+egp 8 EGP
+igp 9 IGP
+pup 12 PUP
+udp 17 UDP
+hmp 20 HMP
+xns-idp 22 XNS-IDP
+rdp 27 RDP
+iso-tp4 29 ISO-TP4
+xtp 36 XTP
+ddp 37 DDP
+idpr-cmtp 38 IDPR-CMTP
+ipv6 41 IPv6
+ipv6-route 43 IPv6-Route
+ipv6-frag 44 IPv6-Frag
+idrp 45 IDRP
+rsvp 46 RSVP
+gre 47 GRE
+esp 50 IPSEC-ESP
+ah 51 IPSEC-AH
+skip 57 SKIP
+ipv6-icmp 58 IPv6-ICMP
+ipv6-nonxt 59 IPv6-NoNxt
+ipv6-opts 60 IPv6-Opts
+rspf 73 RSPF CPHB
+vmtp 81 VMTP
+eigrp 88 EIGRP
+ospf 89 OSPFIGP
+ax.25 93 AX.25
+ipip 94 IPIP
+etherip 97 ETHERIP
+encap 98 ENCAP
+pim 103 PIM
+ipcomp 108 IPCOMP
+vrrp 112 VRRP
+l2tp 115 L2TP
+isis 124 ISIS
+sctp 132 SCTP
+fc 133 FC
diff --git a/package/base-files/src/etc/rc.conf b/package/base-files/src/etc/rc.conf
new file mode 100644
index 000000000..024007589
--- /dev/null
+++ b/package/base-files/src/etc/rc.conf
@@ -0,0 +1,3 @@
+# set variables service=YES|NO (YES to enable, NO to disable)
+# set variables service_flags="X" (NO to disable the service)
+# note: for flags, X can be empty
diff --git a/package/base-files/src/etc/shadow b/package/base-files/src/etc/shadow
new file mode 100644
index 000000000..3683d71ea
--- /dev/null
+++ b/package/base-files/src/etc/shadow
@@ -0,0 +1,3 @@
+root:$1$8sJkb6fV$46vEIu5ntmbUuljmr55zY/:14191:0:::::
+admin:$1$8sJkb6fV$46vEIu5ntmbUuljmr55zY/:14191:0:::::
+nobody:*:9797:0:::::
diff --git a/package/base-files/src/etc/sysctl.conf b/package/base-files/src/etc/sysctl.conf
new file mode 100644
index 000000000..73260cf9d
--- /dev/null
+++ b/package/base-files/src/etc/sysctl.conf
@@ -0,0 +1,17 @@
+# Disables the magic-sysrq key
+#kernel.sysrq = 0
+# When the kernel panics, automatically reboot in 3 seconds
+#kernel.panic = 3
+# Enable packet forwarding
+#net.ipv4.ip_forward = 1
+# Disables IP dynaddr
+#net.ipv4.ip_dynaddr = 0
+# Disable ECN
+#net.ipv4.tcp_ecn = 0
+# Enables source route verification
+net.ipv4.conf.default.rp_filter = 1
+# Enable reverse path
+net.ipv4.conf.all.rp_filter = 1
+# Enable SYN cookies
+#net.ipv4.tcp_syncookies = 1
+
diff --git a/package/base-files/src/init b/package/base-files/src/init
new file mode 100755
index 000000000..618547693
--- /dev/null
+++ b/package/base-files/src/init
@@ -0,0 +1,22 @@
+#!/bin/sh
+echo "System initialization ..."
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin
+mount -nt proc proc /proc
+mount -o nosuid,nodev,noexec -t sysfs sysfs /sys
+[ ! -f /etc/notmpfs ] && {
+ size=$(awk '/MemTotal:/ { if ($2 > 16000) { print 4096 } else { print 2048 }}' /proc/meminfo)
+ mount none /tmp -t tmpfs -o size=${size}k
+ mount none /tmp -t tmpfs -o remount,nosuid,nodev,mode=1777
+}
+mount -o nosuid,size=128k,mode=0755 -t tmpfs mdev /dev
+mkdir /dev/pts /dev/shm
+mount -o nosuid,noexec -t devpts devpts /dev/pts
+exec 0<>/dev/console >&0 2>&0
+echo >/dev/mdev.seq
+echo "/sbin/mdev" >/proc/sys/kernel/hotplug
+mdev -s
+mount -o remount,rw /
+cat /etc/.rnd >/dev/urandom 2>&1
+[ -f /etc/fstab ] && mount -a
+[ -x /sbin/cfgfs ] && { cfgfs setup; mount -o remount,ro /;}
+exec /sbin/init
diff --git a/package/base-files/src/lib/mdev/init b/package/base-files/src/lib/mdev/init
new file mode 100644
index 000000000..d2ae13e9c
--- /dev/null
+++ b/package/base-files/src/lib/mdev/init
@@ -0,0 +1,21 @@
+#!/bin/sh
+if [ "$ACTION" == "add" ];then
+ if [ "$DEVPATH" == "/bus/usb" ];then
+ mount -t usbfs usbfs /proc/bus/usb
+ fi
+fi
+if [ "$SUBSYSTEM" == "firmware" ];then
+ logger "Firmware load for $FIRMWARE requested"
+ if [ "$ACTION" == "add" ];then
+ if [ -e "/lib/firmware/$FIRMWARE" ];then
+ logger "Firmware loading ..."
+ echo 1 > /sys$DEVPATH/loading
+ cat "/lib/firmware/$FIRMWARE" > /sys$DEVPATH/data
+ echo 0 > /sys$DEVPATH/loading
+ logger "finished."
+ else
+ logger "Firmware file $FIRMWARE not found"
+ echo -1 > /sys$DEVPATH/loading
+ fi
+ fi
+fi
diff --git a/package/base-files/src/sbin/update b/package/base-files/src/sbin/update
new file mode 100755
index 000000000..d41e23a0f
--- /dev/null
+++ b/package/base-files/src/sbin/update
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+who=$(id -u)
+if [ $who -ne 0 ]; then
+ echo 'Exit. System update must be run as root.'
+ exit 1
+fi
+
+if [ -x /sbin/mtd ];then
+ updatecmd="mtd -r write - linux"
+else
+ updatecmd="gunzip -c | tar -xf -"
+fi
+
+check_exit() {
+ if [ $? -ne 0 ];then
+ echo "Update failed."
+ exit 1
+ fi
+}
+
+prepare() {
+ cd /
+ umount -f /etc
+ mount -o remount,rw /
+}
+
+extract_from_file() {
+ prepare
+ cat $1 | eval $updatecmd
+ check_exit
+}
+
+extract_from_ssh() {
+ prepare
+ ssh $1 "cat $2" | eval $updatecmd
+ check_exit
+}
+
+extract_from_http() {
+ prepare
+ wget -O - $1 | eval $updatecmd
+ check_exit
+}
+
+case $1 in
+ file://*|/*)
+ url=$(echo $1|sed -e "s#file://##")
+ echo "Updating system from $1"
+ extract_from_file $url
+ ;;
+ ssh://*)
+ host=$(echo $1|sed -e "s#ssh://\(.*\):.*#\1#")
+ file=$(echo $1|sed -e "s#ssh://.*:\(.*\)#\1#")
+ echo "Updating system from $1"
+ extract_from_ssh $host $file
+ ;;
+ http://*|ftp://*)
+ echo "Updating system from $1"
+ extract_from_http $1
+ ;;
+ *)
+ echo "No or wrong uri given. exit."
+ echo "Use one of the following uri:"
+ echo "http://myserver/myupdate.tar.gz"
+ echo "ssh://myuser@myserver:/my/path/myupdate.tar.gz"
+ echo "file:///mypath/myupdate.tar.gz"
+ exit 1
+ ;;
+esac
+
+sync
+mount -o bind /etc /tmp/.cfgfs/root
+
+echo "Update sucessful. You should reboot now."
diff --git a/package/base-files/src/usr/share/udhcpc/default.script b/package/base-files/src/usr/share/udhcpc/default.script
new file mode 100755
index 000000000..02e4a7a3c
--- /dev/null
+++ b/package/base-files/src/usr/share/udhcpc/default.script
@@ -0,0 +1,38 @@
+#!/bin/sh
+if [[ -z $1 ]]; then
+ echo "Error: should be run by udhcpc"
+ exit 1
+fi
+
+RESOLV_CONF=/tmp/resolv.conf
+
+case $1 in
+(deconfig)
+ ip addr flush $interface
+ ;;
+(renew|bound)
+ ip addr add $ip/${mask:-24} brd + dev $interface
+
+ if [[ -n $router ]]; then
+ echo "deleting routers"
+ while ip route del default >&- 2>&-; do :; done
+
+ for i in $router; do
+ echo "adding router $i"
+ ip route add to default via $i
+ done
+ fi
+
+ echo -n >$RESOLV_CONF
+ ${domain:+echo search $domain} >>$RESOLV_CONF
+ for i in $dns; do
+ echo "adding dns $i"
+ echo "nameserver $i" >>$RESOLV_CONF
+ done
+
+ # user rules
+ [ -f /etc/udhcpc.user ] && . /etc/udhcpc.user
+;;
+esac
+
+exit $?