This makes sysupgrade on x86/x86_64 usable again! Thanks!
Till now I always had to do a manual second reboot of the virtual machines
to apply the configuration after an sysupgrade.
I tested it on 5 virtual machines (with slightly patched kernel config)

Tested-By: Stefan Hellermann <ste...@the2masters.de>


2014-03-15 21:19 GMT+01:00 Jiří Šlachta <slac...@cesnet.cz>:

> 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 issue was introduced for target x86. Since the target for x86_64 is
> similar to x86, this issue is present also in this target. It solves the
> ticket #15042 and #14088.
>
> Signed-off-by: Jiri Slachta <slac...@cesnet.cz>
> ---
>  .../x86_64/base-files/lib/preinit/79_move_config   |   22
> ++++++++++++++++++++
>  .../x86_64/base-files/lib/preinit/89_move_config   |   22
> --------------------
>  2 files changed, 22 insertions(+), 22 deletions(-)
>  create mode 100644
> target/linux/x86_64/base-files/lib/preinit/79_move_config
>  delete mode 100644
> target/linux/x86_64/base-files/lib/preinit/89_move_config
>
> diff --git a/target/linux/x86_64/base-files/lib/preinit/79_move_config
> b/target/linux/x86_64/base-files/lib/preinit/79_move_config
> new file mode 100644
> index 0000000..0bffbab
> --- /dev/null
> +++ b/target/linux/x86_64/base-files/lib/preinit/79_move_config
> @@ -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_64/base-files/lib/preinit/89_move_config
> b/target/linux/x86_64/base-files/lib/preinit/89_move_config
> deleted file mode 100644
> index ba337e1..0000000
> --- a/target/linux/x86_64/base-files/lib/preinit/89_move_config
> +++ /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
> -
> --
> 1.7.9.5
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to