Do RW Update if the .do_rw_update flag is set 95/265795/2 accepted/tizen/unified/20211123.143824 submit/tizen/20211116.140204 submit/tizen/20211119.125959
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Thu, 28 Oct 2021 10:06:50 +0000 (12:06 +0200)
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>
Thu, 4 Nov 2021 12:00:04 +0000 (13:00 +0100)
Change-Id: Ice67a56bba985f3e4ca38f42d19836ed88d9dcef

scripts/init.sh

index c64619de54646eef1740115ca6e04fe8a9ce61be..74eaad3460ebc6ba252d924d4e9aff63c3748bfa 100755 (executable)
@@ -15,6 +15,7 @@ MODULES_MNT=
 IN_INITRD=0
 NEED_RESIZEFS=1
 USERFS_ENCRYPTED=0
+DO_RW_UPDATE=0
 
 function find_partitions()
 {
@@ -99,6 +100,17 @@ function check_flags()
             NEED_RESIZEFS=0
         fi
 
+        BOOTMODE=$([[ $(</proc/cmdline) =~ bootmode=([a-z]+) ]]; echo ${BASH_REMATCH[1]})
+        if [ "${BOOTMODE}" == "fota" ]
+        then
+            if [ -e /opt/.do_rw_update ]
+            then
+                DO_RW_UPDATE=1
+            else
+                echo "WARNING : No .do_rw_update file. A normal boot will be performed."
+            fi
+        fi
+
         /bin/umount /opt
     fi
 }
@@ -204,7 +216,7 @@ function process_datafs()
         /sbin/resize2fs -f $DATAFS
     fi
     /sbin/fsck -y $DATAFS
-    /bin/mount $DATAFS $DATAFS_MNT
+    #/bin/mount $DATAFS $DATAFS_MNT
 }
 
 
@@ -319,11 +331,16 @@ function change_root()
 {
     if [ $$ = 1 ]
     then
-        if [ "$IN_INITRD" = "1" ]
+        if [ "$DO_RW_UPDATE" = "1" ]
         then
-            exec chroot . /sbin/init $@
+            exec chroot . /usr/lib/systemd/systemd "--unit=system-update.target" "$@"
         else
-            exec /usr/lib/systemd/systemd $@
+            if [ "$IN_INITRD" = "1" ]
+            then
+                exec chroot . /sbin/init $@
+            else
+                exec /usr/lib/systemd/systemd $@
+            fi
         fi
     fi
 }
@@ -347,7 +364,6 @@ process_userfs
 write_resized_flag
 
 load_kernel_modules
-
 pivot_root
 change_root $@