x86: fix sysupgrade
authorFelix Fietkau <nbd@openwrt.org>
Fri, 21 Mar 2014 15:55:07 +0000 (15:55 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 21 Mar 2014 15:55:07 +0000 (15:55 +0000)
Function move_config should be called after or during preinit_mount_root
hook in do_mount_root function. At this state sysupgrade.tgz is not in its
place during that time when do_mount_root is called. Function move_config
is called later so the sysupgrade.tgz stays in root directory to the second
restart when it is unpacked properly.

This patch adds move_config function to preinit_mount_root hook instead
of preinit_main and changes the filename of script to be called before
80_mount_root is called. It will prepare the sysupgrade archive for do_mount_root
within preinit_mount_root hook.

This patch solves ticket #15042 and #14088.

Signed-off-by: Jiri Slachta <slachta@cesnet.cz>
SVN-Revision: 39996

target/linux/x86/base-files/lib/preinit/79_move_config [new file with mode: 0644]
target/linux/x86/base-files/lib/preinit/89_move_config [deleted file]

diff --git a/target/linux/x86/base-files/lib/preinit/79_move_config b/target/linux/x86/base-files/lib/preinit/79_move_config
new file mode 100644 (file)
index 0000000..0bffbab
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+# Copyright (C) 2012 OpenWrt.org
+
+move_config() {
+       local rootfsdev
+       local rootfstype
+       
+       rootfstype="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "rootfstype") { print $2 }' < /proc/cmdline)"
+       case "$rootfstype" in
+               squashfs|jffs2)
+                       rootfsdev="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "block2mtd.block2mtd") { print substr($2,1,index($2, ",")-1) }' < /proc/cmdline)";;
+               ext4)
+                       rootfsdev="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "root") { print $2 }' < /proc/cmdline)";;
+       esac
+
+       mount -t ext4 -o rw,noatime "${rootfsdev%[0-9]}1" /mnt
+       mv -f /mnt/sysupgrade.tgz /
+       umount /mnt
+}
+
+boot_hook_add preinit_mount_root move_config
+
diff --git a/target/linux/x86/base-files/lib/preinit/89_move_config b/target/linux/x86/base-files/lib/preinit/89_move_config
deleted file mode 100644 (file)
index ba337e1..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2012 OpenWrt.org
-
-move_config() {
-       local rootfsdev
-       local rootfstype
-       
-       rootfstype="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "rootfstype") { print $2 }' < /proc/cmdline)"
-       case "$rootfstype" in
-               squashfs|jffs2)
-                       rootfsdev="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "block2mtd.block2mtd") { print substr($2,1,index($2, ",")-1) }' < /proc/cmdline)";;
-               ext4)
-                       rootfsdev="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "root") { print $2 }' < /proc/cmdline)";;
-       esac
-
-       mount -t ext4 -o rw,noatime "${rootfsdev%[0-9]}1" /mnt
-       mv -f /mnt/sysupgrade.tgz /
-       umount /mnt
-}
-
-boot_hook_add preinit_main move_config
-