RW update: Systemd offline update 19/138819/6 accepted/tizen/unified/20170719.131747 submit/tizen/20170718.084230
authorSunmin Lee <sunm.lee@samsung.com>
Wed, 12 Jul 2017 07:16:52 +0000 (16:16 +0900)
committerSunmin Lee <sunm.lee@samsung.com>
Mon, 17 Jul 2017 11:05:15 +0000 (20:05 +0900)
This patch implements systemd based RW update
redirection.

Change-Id: I1123c46710eb75aa0841c1f7fa242c17ffa1d6b5
Signed-off-by: Sunmin Lee <sunm.lee@samsung.com>
packaging/initrd-fota.spec
scripts/40-fota.list
scripts/fota-init.sh
scripts/fus_rw-init.sh

index c2772111decb8701b60ec5337ecac3cf1240d502..54e1710a57bdd92abb3623f8b2f9883e6ade22aa 100755 (executable)
@@ -1,7 +1,7 @@
 Name:       initrd-fota
 Summary:    package for building ramdisk-recovery.img
-Version:    0.1.0
-Release:    1
+Version:    0.1.1
+Release:    2
 Group:      System/Utilities
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
index 3f2dbc64430baf575fd05c99f635032db0ba6a92..6f15fbbfeaa319169645b9c9e6eda7f0a13c6315 100755 (executable)
@@ -15,7 +15,7 @@ WITHLIBS="
 /bin/ls
 /bin/gawk
 /bin/tar
-/sbin/switch_root
+/bin/chroot
 /usr/lib/initrd-recovery/minireboot
 /bin/cat
 /bin/chmod
index db9597ae439a641c1b29c28cd622f2cdbc2e10d8..cdf9ebcf56accba0d03f56b1732dfefe762a6661 100755 (executable)
@@ -7,7 +7,6 @@ FAKE_ROOT=/system
 
 UPI_NO_DELTA_ERROR=fdfa
 UPI_NO_UA_ERROR=fdfb
-PRE_UPDATE_ERROR=fdfc
 
 STATUS_DIR=${FAKE_ROOT}/opt/data/recovery
 STATUS_FILE=${STATUS_DIR}/RW.STATUS
index 9f88c3004b190274fc015a4fc9c17433daeb6c80..02b8e6e13a2536d7b6d3b3f7f39590a8eed51cbb 100755 (executable)
@@ -14,6 +14,9 @@ GREP="/bin/grep"
 AWK="/usr/bin/awk"
 PARTX="/usr/sbin/partx"
 
+SYSTEM_DATA_MNT=opt
+USER_MNT=opt/usr
+
 #------------------------------------------------
 #       get partition id
 #------------------------------------------------
@@ -33,8 +36,8 @@ mount_partitions() {
     get_partition_id
 
     "$MOUNT" -t ext4 -o ro ${PART_ROOTFS} ${FAKE_ROOT}
-    "$MOUNT" -t ext4 ${PART_SYSTEM_DATA} ${FAKE_ROOT}/opt
-    "$MOUNT" -t ext4 ${PART_USER} ${FAKE_ROOT}/opt/usr
+    "$MOUNT" -t ext4 ${PART_SYSTEM_DATA} ${FAKE_ROOT}/${SYSTEM_DATA_MNT}
+    "$MOUNT" -t ext4 ${PART_USER} ${FAKE_ROOT}/${USER_MNT}
 
     "$MOUNT" -t proc none ${FAKE_ROOT}/proc
     "$MOUNT" -t sysfs none ${FAKE_ROOT}/sys
@@ -60,16 +63,13 @@ do_reboot() {
 #      do_rw_update
 #------------------------------------------------
 do_rw_update() {
-       echo "Change into rw update mode"
-       NEW_ROOT=${FAKE_ROOT}
-       NEW_INIT=/etc/rc.d/init.d/rw-update-init.sh
+       echo "Change into rw update mode" >> ${INT_LOG_FILE}
 
-       if [ ! -e ${NEW_ROOT}${NEW_INIT} ]; then
-               do_reboot
+       # Go to system-update.target
+       if [ $$ = 1 ]; then
+               cd ${FAKE_ROOT}
+               exec /bin/chroot . /sbin/init --unit=system-update.target $@
        fi
-
-       exec /sbin/switch_root ${NEW_ROOT} ${NEW_INIT}
-
        do_reboot
 }