diff --git a/package/gluon-core/files/etc/init.d/gluon-core-reconfigure b/package/gluon-core/files/etc/init.d/gluon-core-reconfigure
new file mode 100755
index 0000000000000000000000000000000000000000..0a56357182b77045123cd38f7c05d4ebe037710d
--- /dev/null
+++ b/package/gluon-core/files/etc/init.d/gluon-core-reconfigure
@@ -0,0 +1,12 @@
+#!/bin/sh /etc/rc.common
+
+# Start right after S10boot
+START=10
+
+start() {
+	config_load gluon
+	config_get_bool reconfigure core reconfigure 0
+	if [ "$reconfigure" = 1 ]; then
+		gluon-reconfigure
+	fi
+}
diff --git a/package/gluon-core/files/lib/gluon/reload.d/710-gluon-core-reconfigure-start b/package/gluon-core/files/lib/gluon/reload.d/710-gluon-core-reconfigure-start
new file mode 100755
index 0000000000000000000000000000000000000000..758bb913437ab2eb2633613a9efea63445ba2d96
--- /dev/null
+++ b/package/gluon-core/files/lib/gluon/reload.d/710-gluon-core-reconfigure-start
@@ -0,0 +1,2 @@
+#!/bin/sh
+/etc/init.d/gluon-core-reconfigure start
diff --git a/package/gluon-core/files/lib/gluon/upgrade/998-commit b/package/gluon-core/files/lib/gluon/upgrade/998-commit
index db578a78ec6af4e11963a62152a241979d6d0a9c..8b4be6a9d4dfafe7831d309a8d40fdd211696311 100755
--- a/package/gluon-core/files/lib/gluon/upgrade/998-commit
+++ b/package/gluon-core/files/lib/gluon/upgrade/998-commit
@@ -1,3 +1,6 @@
 #!/bin/sh
 
-exec uci commit
+uci -q batch <<-EOF
+	delete gluon.core.reconfigure
+	commit
+EOF
diff --git a/package/gluon-setup-mode/Makefile b/package/gluon-setup-mode/Makefile
index 67747957de1b67383afcd0979c76eeddecc47b75..dfc1717a65ebe6b96c40927252d11b921d23de0f 100644
--- a/package/gluon-setup-mode/Makefile
+++ b/package/gluon-setup-mode/Makefile
@@ -23,6 +23,7 @@ init_links := \
 	K99umount \
 	S00sysfixtime \
 	S10boot \
+	S10gluon-core-reconfigure \
 	S10system \
 	S11sysctl \
 	S12log \