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