No longer mount platform partitions 73/244773/3
authorKichan Kwon <k_c.kwon@samsung.com>
Thu, 24 Sep 2020 04:45:02 +0000 (13:45 +0900)
committerKichan Kwon <k_c.kwon@samsung.com>
Fri, 25 Sep 2020 06:26:10 +0000 (15:26 +0900)
- Kernel writes Journal log when system-data is mounted
- Modifying data with flashing can break partition
- Although fsck recovers partition, we have to prevent
  this situation

- In addition, USB mountpoint is changed
  - mkdir in /opt is failed because of SMACK
  - So, move to /tmp which has '*' SMACK label

Change-Id: I683cbc932106c766a38856690f26c9e1472d7edd
Signed-off-by: Kichan Kwon <k_c.kwon@samsung.com>
CMakeLists.txt
packaging/system-recovery.spec
scripts/recovery-init.in

index 90f206890266a95fda9d815a37024f9fde278efb..c2ec6b009850f423184baf4fbb59947cd6a15fd1 100644 (file)
@@ -4,7 +4,7 @@ PROJECT(system-recovery)
 SET(INITRD_RECOVERY_LIBEXEC_DIR ${LIBEXECDIR}/initrd-recovery)
 SET(SYSTEM_RECOVERY_LIBEXEC_DIR ${LIBEXECDIR}/system-recovery)
 
-SET(USB_MOUNTPOINT_ROOT ${TZ_SYS_STORAGE})
+SET(USB_MOUNTPOINT_ROOT /tmp)
 SET(USB_MOUNTPOINT_PREFIX USBDrive)
 
 SET(PKGS
index 9b5beffbad9650b94b02bd41bb92544f6786ecab..0436db56e5c23aba6e9cdae8eff79bc9046c6f79 100644 (file)
@@ -9,7 +9,6 @@ Source0:        %{name}-%{version}.tar.gz
 Source1001:     system-recovery.manifest
 
 BuildRequires:  cmake
-BuildRequires:  pkgconfig(libtzplatform-config)
 
 Requires:       initrd-recovery
 
@@ -25,7 +24,6 @@ cp %{SOURCE1001} .
 
 %build
 %cmake . -DLIBEXECDIR=%{_libexecdir}   \
-                -DTZ_SYS_STORAGE=%{TZ_SYS_STORAGE}     \
                 -DINITRD_RECOVERY_LIST_DIR=%{initrd_recovery_list_dir}
 
 %install
index c0cb1590751c00b800674eb15c8dec6b0bc82028..280c96856312337266df7f1e517d3cca8a14d1e1 100644 (file)
@@ -3,7 +3,6 @@
 PATH=/bin:/usr/bin:/sbin:/usr/sbin
 SYSTEM_RECOVERY="@SYSTEM_RECOVERY_LIBEXEC_DIR@/system-recovery"
 SYSTEM_RECOVERY_GUI="/usr/bin/system-recovery_gui"
-FAKE_ROOT=/system
 
 MOUNT="/usr/bin/mount"
 BLKID="/usr/sbin/blkid"
@@ -16,19 +15,10 @@ MKDIR="/usr/bin/mkdir"
 RMDIR="/usr/bin/rmdir"
 TR="/usr/bin/tr"
 
-#------------------------------------------------
-#       get partition id
-#------------------------------------------------
-get_partition_id() {
-    PART_ROOTFS=$("$BLKID" --match-token PARTLABEL=ROOTFS -o device || "$BLKID" --match-token LABEL=rootfs -o device)
-    PART_SYSTEM_DATA=$("$BLKID" --match-token PARTLABEL=SYSTEM-DATA -o device || "$BLKID" --match-token LABEL=system-data -o device)
-    PART_USER=$("$BLKID" --match-token PARTLABEL=USER -o device || "$BLKID" --match-token LABEL=user -o device)
-}
-
 #------------------------------------------------
 #       mount_usb_partitions
 #------------------------------------------------
-USB_MOUNTPOINT_PREFIX=${FAKE_ROOT}@USB_MOUNTPOINT_ROOT@/@USB_MOUNTPOINT_PREFIX@
+USB_MOUNTPOINT_PREFIX=@USB_MOUNTPOINT_ROOT@/@USB_MOUNTPOINT_PREFIX@
 mount_usb_partitions() {
     echo "mount USB partitions"
     DEVICE_TYPE_LIST=(
@@ -67,27 +57,6 @@ mount_usb_partitions() {
     fi
 }
 
-#------------------------------------------------
-#       mount_partitions
-#------------------------------------------------
-mount_partitions() {
-    echo "mount partitions"
-    get_partition_id
-
-    "$MOUNT" -t ext4 ${PART_ROOTFS} ${FAKE_ROOT} -o ro
-    "$MOUNT" -t ext4 ${PART_SYSTEM_DATA} ${FAKE_ROOT}/opt
-    "$MOUNT" -t ext4 ${PART_USER} ${FAKE_ROOT}/opt/usr
-
-    "$MOUNT" -t proc none ${FAKE_ROOT}/proc
-    "$MOUNT" -t sysfs none ${FAKE_ROOT}/sys
-    "$MOUNT" -t smackfs smackfs ${FAKE_ROOT}/sys/fs/smackfs
-    "$MOUNT" -t devtmpfs devtmpfs ${FAKE_ROOT}/dev
-    "$MOUNT" -t devpts devpts ${FAKE_ROOT}/dev/pts
-    "$MOUNT" -t tmpfs tmpfs ${FAKE_ROOT}/tmp -o mode=1777,smackfsroot=*
-
-    mount_usb_partitions
-}
-
 #------------------------------------------------
 #       umount_usb_partitions
 #------------------------------------------------
@@ -101,20 +70,6 @@ umount_usb_partitions() {
     done
 }
 
-#------------------------------------------------
-#       umount_partitions
-#------------------------------------------------
-umount_partitions() {
-    echo "umount partitions"
-   "$SYNC"
-
-    umount_usb_partitions
-
-    "$UMOUNT" ${FAKE_ROOT}/opt/usr
-    "$UMOUNT" ${FAKE_ROOT}/opt
-    "$UMOUNT" ${FAKE_ROOT}
-}
-
 #------------------------------------------------
 #       do_reboot
 #------------------------------------------------
@@ -133,7 +88,7 @@ do_reboot() {
 #       system-recovery initrc
 #------------------------------------------------
 echo "Starting system recovery."
-mount_partitions
+mount_usb_partitions
 
 # For debugging - It should be deleted on Release
 /sbin/agetty -l /bin/sh -n --keep-baud 115200,38400,9600 ttyS1 linux &
@@ -141,5 +96,5 @@ mount_partitions
 [ -x "${SYSTEM_RECOVERY_GUI}" ] && "${SYSTEM_RECOVERY_GUI}" &
 [ -x "${SYSTEM_RECOVERY}" ] && "${SYSTEM_RECOVERY}"
 
-umount_partitions
+umount_usb_partitions
 do_reboot