diff --git a/target/linux/x86/base-files/lib/preinit/79_move_config b/target/linux/x86/base-files/lib/preinit/79_move_config
index 143ca5147b5693a5b8068dc10eb71b5066777160..7b34d9e5dac7f73800aa76a1470abbe570350c79 100644
--- a/target/linux/x86/base-files/lib/preinit/79_move_config
+++ b/target/linux/x86/base-files/lib/preinit/79_move_config
@@ -7,11 +7,14 @@ move_config() {
 	. /lib/upgrade/common.sh
 
 	if export_bootdevice && export_partdevice partdev 1; then
-		if mount -t ext4 -o rw,noatime "/dev/$partdev" /mnt; then
-			if [ -f /mnt/sysupgrade.tgz ]; then
-				mv -f /mnt/sysupgrade.tgz /
+		mkdir -p /boot
+		if mount -t ext4 -o ro,noatime "/dev/$partdev" /boot; then
+			if [ -f /boot/sysupgrade.tgz ]; then
+				mount /boot -o remount,rw,noatime
+				mv -f /boot/sysupgrade.tgz /
+				mount /boot -o remount,ro,noatime
 			fi
-			umount /mnt
+			mount --bind /boot/boot /boot
 		fi
 	fi
 }