diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot
index 45cb4a2596812adf81173ecea9a0d70e79148cae..b44c1a69fe15fee71e3cdb2871e9efa4dab53241 100755
--- a/package/base-files/files/etc/init.d/boot
+++ b/package/base-files/files/etc/init.d/boot
@@ -4,6 +4,17 @@
 START=10
 STOP=98
 
+uci_apply_defaults() {
+	cd /etc/uci-defaults || return 0
+	files="$(ls)"
+	[ -z "$files" ] && return 0
+	mkdir -p /tmp/.uci
+	for file in $files; do
+		( . "./$(basename $file)" ) && rm -f "$file"
+	done
+	uci commit
+}
+
 boot() {
 	[ -f /proc/mounts ] || /sbin/mount_root
 	[ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
@@ -33,7 +44,7 @@ boot() {
 	}
 	rm -f /tmp/wireless.tmp
 
-	sh -c '. /lib/functions.sh; include /lib/config; uci_apply_defaults'
+	uci_apply_defaults
 	
 	# temporary hack until configd exists
 	/sbin/reload_config
diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh
index fa4c2d670c333102df41268605abc194344433bc..cec78c506229ea11bcab37c5b0fd81c02bcb83e5 100755
--- a/package/base-files/files/lib/functions.sh
+++ b/package/base-files/files/lib/functions.sh
@@ -368,17 +368,6 @@ jffs2_mark_erase() {
 	echo -e "\xde\xad\xc0\xde" | mtd -qq write - "$1"
 }
 
-uci_apply_defaults() {
-	cd /etc/uci-defaults || return 0
-	files="$(ls)"
-	[ -z "$files" ] && return 0
-	mkdir -p /tmp/.uci
-	for file in $files; do
-		( . "./$(basename $file)" ) && rm -f "$file"
-	done
-	uci commit
-}
-
 group_add() {
 	local name="$1"
 	local gid="$2"