From a6e46ef698dde237e0e1edaa4abb16918f01e9a0 Mon Sep 17 00:00:00 2001 From: z3DD3r Date: Tue, 17 Aug 2021 18:21:05 +0300 Subject: [PATCH] Support /system_ext partition Added in Android 11: https://source.android.com/devices/bootloader/partitions#changes-in-android-r --- scripts/bkup_tail.sh | 8 ++++---- scripts/templates/installer.sh | 22 +++++++++++++--------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/scripts/bkup_tail.sh b/scripts/bkup_tail.sh index ac6f7f6..d1d1551 100644 --- a/scripts/bkup_tail.sh +++ b/scripts/bkup_tail.sh @@ -51,7 +51,7 @@ case "$1" in backup_file "$S"/"$FILE" done - umount /product /vendor 2> /dev/null + umount /system_ext /product /vendor 2> /dev/null ;; restore) list_files | while read -r FILE REPLACEMENT; do @@ -61,13 +61,13 @@ case "$1" in done ;; pre-backup) - mount_generic product vendor + mount_generic system_ext product vendor ;; post-backup) # Stub ;; pre-restore) - mount_generic product vendor + mount_generic system_ext product vendor # Remove Stock/AOSP apps (from GApps Installer) @@ -105,7 +105,7 @@ case "$1" in esac done - umount /product /vendor 2> /dev/null + umount /system_ext /product /vendor 2> /dev/null if [ "$rom_build_sdk" -ge "26" ]; then # Android 8.0+ uses 0600 for its permission on build.prop chmod 600 "$SYS/build.prop" diff --git a/scripts/templates/installer.sh b/scripts/templates/installer.sh index e6df3c2..6184b59 100644 --- a/scripts/templates/installer.sh +++ b/scripts/templates/installer.sh @@ -951,7 +951,8 @@ mount_all() { fi (mount -o ro -t auto /vendor mount -o ro -t auto /product - mount -o ro -t auto /persist) 2>/dev/null + mount -o ro -t auto /persist + mount -o ro -t auto /system_ext) 2>/dev/null setup_mountpoint $ANDROID_ROOT if ! is_mounted $ANDROID_ROOT; then mount -o ro -t auto $ANDROID_ROOT 2>/dev/null @@ -973,12 +974,14 @@ mount_all() { [ -e /dev/block/mapper/system ] || local slot=$(find_slot) mount -o ro -t auto /dev/block/mapper/vendor$slot /vendor mount -o ro -t auto /dev/block/mapper/product$slot /product 2>/dev/null + mount -o ro -t auto /dev/block/mapper/system_ext$slot /system_ext 2>/dev/null mount -o ro -t auto /dev/block/mapper/system$slot /system_root else [ -e /dev/block/bootdevice/by-name/system ] || local slot=$(find_slot) (mount -o ro -t auto /dev/block/bootdevice/by-name/vendor$slot /vendor mount -o ro -t auto /dev/block/bootdevice/by-name/product$slot /product - mount -o ro -t auto /dev/block/bootdevice/by-name/persist$slot /persist) 2>/dev/null + mount -o ro -t auto /dev/block/bootdevice/by-name/persist$slot /persist + mount -o ro -t auto /dev/block/bootdevice/by-name/system_ext$slot /system_ext) 2>/dev/null mount -o ro -t auto /dev/block/bootdevice/by-name/system$slot /system_root fi fi @@ -1003,7 +1006,7 @@ umount_all() { umount -l /system_root fi umount_apex - for mount in /mnt/system /vendor /mnt/vendor /product /mnt/product /persist; do + for mount in /mnt/system /vendor /mnt/vendor /product /mnt/product /persist /system_ext /mnt/system_ext; do umount $mount umount -l $mount done @@ -1072,7 +1075,7 @@ if ! $BOOTMODE; then mount_all fi if [ -d /dev/block/mapper ]; then - for block in system vendor product; do + for block in system vendor product system_ext; do for slot in "" _a _b; do blockdev --setrw /dev/block/mapper/$block$slot 2>/dev/null done @@ -1080,7 +1083,8 @@ if [ -d /dev/block/mapper ]; then fi mount -o rw,remount -t auto /system || mount -o rw,remount -t auto / (mount -o rw,remount -t auto /vendor -mount -o rw,remount -t auto /product) 2>/dev/null +mount -o rw,remount -t auto /product +mount -o rw,remount -t auto /system_ext) 2>/dev/null ui_print " " @@ -1093,7 +1097,7 @@ device_abpartition=$(getprop ro.build.ab_update) # Declare Variables zip_folder="$(dirname "$OPENGAZIP")" g_prop=/system/etc/g.prop -PROPFILES="$g_prop /system/default.prop /system/build.prop /system/product/build.prop /vendor/build.prop /product/build.prop /system_root/default.prop /system_root/build.prop /system_root/product/build.prop /data/local.prop /default.prop /build.prop" +PROPFILES="$g_prop /system/default.prop /system/build.prop /system/vendor/build.prop /system/product/build.prop /system/system_ext/build.prop /vendor/build.prop /product/build.prop /system_ext/build.prop /system_root/default.prop /system_root/build.prop /system_root/vendor/build.prop /system_root/product/build.prop /system_root/system_ext/build.prop /data/local.prop /default.prop /build.prop" bkup_tail=$TMP/bkup_tail.sh gapps_removal_list=$TMP/gapps-remove.txt g_log=$TMP/g.log @@ -1443,7 +1447,7 @@ set_perm() { } sys_app() { - for folder in /system/app /system/product/app /system/priv-app /system/product/priv-app; do + for folder in /system/app /system/product/app /system/system_ext/app /system/priv-app /system/product/priv-app /system/system_ext/priv-app; do if ( grep -q "codePath=\"$folder/$1" /data/system/packages.xml ); then return 0 fi @@ -2335,7 +2339,7 @@ if [ -n "$user_remove_list" ]; then * ) testapk="${testapk}.apk" ;; esac # Create user_remove_folder_list if this is a system/ROM application - for folder in /system/app /system/product/app /system/priv-app /system/product/priv-app; do # Check all subfolders of system app/priv-app folders for the apks + for folder in /system/app /system/product/app /system/system_ext/app /system/priv-app /system/product/priv-app /system/system_ext/priv-app; do # Check all subfolders of system app/priv-app folders for the apks file_count=0 # Reset Counter file_count=$(find $folder -iname "$testapk" 2>/dev/null | wc -l) case $file_count in @@ -2577,7 +2581,7 @@ for user_app in $user_remove_folder_list; do done # Remove any empty folders we may have created during the removal process -for i in /system/app /system/product/app /system/priv-app /system/product/priv-app /system/vendor/pittpatt /system/usr/srec /system/etc/preferred-apps; do +for i in /system/app /system/product/app /system/system_ext/app /system/priv-app /system/product/priv-app /system/system_ext/priv-app /system/vendor/pittpatt /system/usr/srec /system/etc/preferred-apps; do find "$i" -type d 2>/dev/null | xargs -r rmdir -p --ignore-fail-on-non-empty done