diff --git a/decompressed/base/etc/init.d/do_migrate_overlay b/decompressed/base/etc/init.d/do_migrate_overlay index f7c06f160..51961477e 100755 --- a/decompressed/base/etc/init.d/do_migrate_overlay +++ b/decompressed/base/etc/init.d/do_migrate_overlay @@ -1,15 +1,41 @@ #!/bin/ash /etc/rc.common START=00 +EXTRA_COMMANDS="preserve_files" +EXTRA_HELP=" preserve_files Transfer files from modoverlay to bank" + +upperdir=/modoverlay/bank_mod +overlay_bank=/overlay/bank_2 kecho() { echo "$1" echo "$1" > /dev/kmsg } +preserve_files() { + #these files should be moved back to bank_2 overlay to allow our mount hook to take place (and preserve root after boot) + local preserve_list="/etc/init.d/rootdevice /etc/rc.d/S94rootdevice /usr/sbin/random_seed /sbin/insmod \ + /lib/mount_modroot/05_transfer_basefiles /etc/init.d/do_migrate_overlay /usr/sbin/mount_modoverlay /sbin/mount_root-mod" + + if ! mount | grep /modoverlay/bank_mod > /dev/null ; then + kecho "Modroot not found. Can't preserve files." + exit 1 + fi + + update_file_if_needed() { # + cmp -s "$2$1" "$3$1" || cp -a "$2$1" "$3$1" + } + + for f in $preserve_list; do + mkdir -p $overlay_bank$(dirname "$f") + # kecho "mount_root-mod: update_file_if_needed $f" + update_file_if_needed "$f" "$upperdir" $overlay_bank + done + + sync +} + boot() { - local upperdir=/modoverlay/bank_mod - local overlay_bank=/overlay/bank_2 local ram_dir=/tmp/migrate_overlay local upperdir_backup=/tmp/upperdir_backup local files_to_del=/files_to_del @@ -111,24 +137,6 @@ boot() { fi } - preserve_files(){ - #these files should be moved back to bank_2 overlay to allow our mount hook to take place (and preserve root after boot) - preserve_list="/etc/init.d/rootdevice /etc/rc.d/S94rootdevice /usr/sbin/random_seed /sbin/insmod \ - /lib/mount_modroot/05_transfer_basefiles /etc/init.d/do_migrate_overlay /usr/sbin/mount_modoverlay /sbin/mount_root-mod" - - update_file_if_needed() { # - cmp -s "$2$1" "$3$1" || cp -a "$2$1" "$3$1" - } - - for f in $preserve_list; do - mkdir -p $overlay_bank$(dirname "$f") - # kecho "mount_root-mod: update_file_if_needed $f" - update_file_if_needed "$f" "$upperdir" $overlay_bank - done - - sync - } - reboot_if_needed(){ if [ "$need_reboot" = "1" ]; then # Simulate the bank_1 failed 3 times diff --git a/decompressed/gui_file/usr/share/transformer/scripts/upgradegui b/decompressed/gui_file/usr/share/transformer/scripts/upgradegui index 49a09a4ff..a7591f566 100755 --- a/decompressed/gui_file/usr/share/transformer/scripts/upgradegui +++ b/decompressed/gui_file/usr/share/transformer/scripts/upgradegui @@ -327,6 +327,7 @@ logger_command "Running rootdevice script" # Run init.d script set_transformer "rpc.system.modgui.executeCommand.state" "In Progress" /etc/init.d/rootdevice "$rootdevice_call" +/etc/init.d/do_migrate_overlay preserve_files if [ -f "$WORKING_DIR/$FILE_NAME" ]; then rm "$WORKING_DIR/$FILE_NAME"