Name: initrd-fota
Summary: package for building ramdisk-recovery.img
-Version: 0.1.1
-Release: 2
+Version: 0.1.2
+Release: 3
Group: System/Utilities
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
mkdir -p %{buildroot}%{init_script_dir}
cp ./scripts/fota-init.sh %{buildroot}%{init_script_dir}/fota-init.sh
cp ./scripts/fus_rw-init.sh %{buildroot}%{init_script_dir}/
+# Pre-patch script
+cp ./scripts/backup-passwd.sh %{buildroot}%{init_script_dir}/
+cp ./scripts/restore-passwd.sh %{buildroot}%{init_script_dir}/
mkdir -p %{buildroot}%{_datadir}/initrd-recovery/initrd.list.d
cp ./scripts/40-fota.list %{buildroot}%{_datadir}/initrd-recovery/initrd.list.d
VERBATIMS="
/usr/lib/initrd-recovery/fota/fota-init.sh
/usr/lib/initrd-recovery/fota/fus_rw-init.sh
+/usr/lib/initrd-recovery/fota/restore-passwd.sh
"
LIBONLYS="
/bin/sleep
/bin/sync
/bin/umount
+/bin/cp
"
# LinkFileName:Target
--- /dev/null
+#!/bin/sh
+PREPATCH_FILES="
+/opt/etc/passwd
+/opt/etc/passwd-
+/opt/etc/passwd.old
+/opt/etc/shadow
+/opt/etc/shadow-
+/opt/etc/shadow.old
+/opt/etc/group
+/opt/etc/group-
+/opt/etc/group.old
+/opt/etc/gshadow
+/opt/etc/gshadow-
+/opt/etc/gshadow.old
+"
+PREPATCH_BACKUP_DIR=/usr/share/upgrade/prepatch
+
+mkdir -p "$PREPATCH_BACKUP_DIR"
+for FILE in $PREPATCH_FILES; do
+ cp -af "$FILE" "$PREPATCH_BACKUP_DIR"
+done
do_rw_update() {
echo "Change into rw update mode" >> ${INT_LOG_FILE}
+ # Pre-patches
+ /usr/lib/initrd-recovery/fota/restore-passwd.sh
+
# Go to system-update.target
if [ $$ = 1 ]; then
cd ${FAKE_ROOT}
--- /dev/null
+#!/bin/sh
+FAKE_ROOT="/system"
+BACKUP_DIR="/usr/share/upgrade/prepatch"
+
+# Restore etc links
+cp -af "$FAKE_ROOT/$BACKUP_DIR/passwd" "$FAKE_ROOT/opt/etc"
+cp -af "$FAKE_ROOT/$BACKUP_DIR/passwd-" "$FAKE_ROOT/opt/etc"
+cp -af "$FAKE_ROOT/$BACKUP_DIR/passwd.old" "$FAKE_ROOT/opt/etc"
+cp -af "$FAKE_ROOT/$BACKUP_DIR/shadow" "$FAKE_ROOT/opt/etc"
+cp -af "$FAKE_ROOT/$BACKUP_DIR/shadow-" "$FAKE_ROOT/opt/etc"
+cp -af "$FAKE_ROOT/$BACKUP_DIR/shadow.old" "$FAKE_ROOT/opt/etc"
+cp -af "$FAKE_ROOT/$BACKUP_DIR/group" "$FAKE_ROOT/opt/etc"
+cp -af "$FAKE_ROOT/$BACKUP_DIR/group-" "$FAKE_ROOT/opt/etc"
+cp -af "$FAKE_ROOT/$BACKUP_DIR/group.old" "$FAKE_ROOT/opt/etc"
+cp -af "$FAKE_ROOT/$BACKUP_DIR/gshadow" "$FAKE_ROOT/opt/etc"
+cp -af "$FAKE_ROOT/$BACKUP_DIR/gshadow-" "$FAKE_ROOT/opt/etc"
+cp -af "$FAKE_ROOT/$BACKUP_DIR/gshadow.old" "$FAKE_ROOT/opt/etc"