base-files: change logging for upgrade on stage2
[openwrt/staging/mkresin.git] / package / base-files / files / lib / upgrade / stage2
index e2259e347238b23dc1d6000390bab63f17f2e134..f2f3cd439a747e80da9f7c22d75325983eb9868b 100755 (executable)
@@ -39,13 +39,13 @@ switch_to_ramfs() {
        for binary in \
                /bin/busybox /bin/ash /bin/sh /bin/mount /bin/umount    \
                pivot_root mount_root reboot sync kill sleep            \
-               md5sum hexdump cat zcat bzcat dd tar                    \
+               md5sum hexdump cat zcat dd tar                          \
                ls basename find cp mv rm mkdir rmdir mknod touch chmod \
                '[' printf wc grep awk sed cut                          \
                mtd partx losetup mkfs.ext4 nandwrite flash_erase       \
                ubiupdatevol ubiattach ubiblock ubiformat               \
                ubidetach ubirsvol ubirmvol ubimkvol                    \
-               snapshot snapshot_tool date                             \
+               snapshot snapshot_tool date logger                      \
                $RAMFS_COPY_LOSETUP $RAMFS_COPY_LVM                     \
                $RAMFS_COPY_BIN
        do
@@ -85,7 +85,7 @@ kill_remaining() { # [ <signal> [ <loop> ] ]
        local stat
        local proc_ppid=$(cut -d' ' -f4  /proc/$$/stat)
 
-       vn "Sending $sig to remaining processes ..."
+       v "Sending $sig to remaining processes ..."
 
        while $run; do
                run=false
@@ -105,7 +105,7 @@ kill_remaining() { # [ <signal> [ <loop> ] ]
                        # Skip kernel threads
                        [ -n "$cmdline" ] || continue
 
-                       _vn " $name"
+                       v "Sending signal $sig to $name ($pid)"
                        kill -$sig $pid 2>/dev/null
 
                        [ $loop -eq 1 ] && run=true
@@ -113,25 +113,39 @@ kill_remaining() { # [ <signal> [ <loop> ] ]
 
                let loop_limit--
                [ $loop_limit -eq 0 ] && {
-                       _v
                        v "Failed to kill all processes."
                        exit 1
                }
        done
-       _v
 }
 
 indicate_upgrade
 
+while read -r a b c; do
+       case "$a" in
+               MemT*) mem="$b" ;; esac
+done < /proc/meminfo
+
+[ "$mem" -gt 32768 ] && \
+       skip_services="dnsmasq log network"
+for service in /etc/init.d/*; do
+       service=${service##*/}
+
+       case " $skip_services " in
+               *" $service "*) continue ;; esac
+
+       ubus call service delete '{ "name": "'"$service"'" }' 2>/dev/null
+done
+
 killall -9 telnetd
 killall -9 dropbear
 killall -9 ash
 
 kill_remaining TERM
-sleep 3
+sleep 4
 kill_remaining KILL 1
 
-sleep 1
+sleep 6
 
 echo 3 > /proc/sys/vm/drop_caches