Skip to content

Commit

Permalink
core: update core file on gui upgrade
Browse files Browse the repository at this point in the history
Signed-off-by: Ansuel Smith <[email protected]>
  • Loading branch information
Ansuel committed Dec 8, 2020
1 parent 80094ba commit e8091fb
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 20 deletions.
48 changes: 28 additions & 20 deletions decompressed/base/etc/init.d/do_migrate_overlay
Original file line number Diff line number Diff line change
@@ -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() { # <file> <source> <dest>
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
Expand Down Expand Up @@ -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() { # <file> <source> <dest>
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down

0 comments on commit e8091fb

Please sign in to comment.