Backend: update apex mounting support for Android 11

This commit is contained in:
osm0sis committed 2021-03-30 02:28:43 -03:00
1 parent a6b80592a6
commit 0ec87a86b7
1 file changed
+28 -17
+28 -17
View File
@@ -43,21 +43,23 @@ find_slot() {
setup_mountpoint() {
[ -L $1 ] && $BB mv -f $1 ${1}_link;
if [ ! -d $1 ]; then
rm -f $1;
mkdir -p $1;
$BB rm -f $1;
$BB mkdir -p $1;
fi;
}
is_mounted() { $BB mount | $BB grep -q " $1 "; }
mount_apex() {
[ -d /system_root/system/apex ] || return 1;
local apex dest loop minorx num;
local apex dest loop minorx num var;
setup_mountpoint /apex;
minorx=1;
[ -e /dev/block/loop1 ] && minorx=$($BB ls -l /dev/block/loop1 | $BB awk '{ print $6 }');
num=0;
for apex in /system_root/system/apex/*; do
dest=/apex/$($BB basename $apex .apex);
[ "$dest" == /apex/com.android.runtime.release ] && dest=/apex/com.android.runtime;
case $dest in
*.current|*.release) dest=$(echo $dest | $BB rev | $BB cut -d. -f2- | $BB rev);;
esac;
$BB mkdir -p $dest;
case $apex in
*.apex)
@@ -81,13 +83,22 @@ mount_apex() {
*) $BB mount -o bind $apex $dest;;
esac;
done;
export ANDROID_RUNTIME_ROOT=/apex/com.android.runtime;
export ANDROID_TZDATA_ROOT=/apex/com.android.tzdata;
export BOOTCLASSPATH=/apex/com.android.runtime/javalib/core-oj.jar:/apex/com.android.runtime/javalib/core-libart.jar:/apex/com.android.runtime/javalib/okhttp.jar:/apex/com.android.runtime/javalib/bouncycastle.jar:/apex/com.android.runtime/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/android.test.base.jar:/system/framework/telephony-ext.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar;
for var in $($BB grep -o 'export .* /.*' /system_root/init.environ.rc | $BB awk '{ print $2 }'); do
eval OLD_${var}=\$$var;
done;
$($BB grep -o 'export .* /.*' /system_root/init.environ.rc | $BB sed 's; /;=/;'); unset export;
}
umount_apex() {
[ -d /apex ] || return 1;
local dest loop;
[ -d /apex/com.android.runtime ] || return 1;
local dest loop var;
for var in $($BB grep -o 'export .* /.*' /system_root/init.environ.rc | $BB awk '{ print $2 }'); do
if [ "$(eval echo \$OLD_$var)" ]; then
eval $var=\$OLD_${var};
else
eval unset $var;
fi;
unset OLD_${var};
done;
for dest in $($BB find /apex -type d -mindepth 1 -maxdepth 1); do
if [ -f $dest.img ]; then
loop=$($BB mount | $BB grep $dest | $BB cut -d\ -f1);
@@ -96,7 +107,6 @@ umount_apex() {
$BB losetup -d $loop) 2>/dev/null;
done;
$BB rm -rf /apex 2>/dev/null;
unset ANDROID_RUNTIME_ROOT ANDROID_TZDATA_ROOT BOOTCLASSPATH;
}
mount_all() {
if ! is_mounted /cache; then
@@ -154,13 +164,13 @@ umount_all() {
(if [ ! -d /postinstall/tmp ]; then
$BB umount /system;
$BB umount -l /system;
if [ -e /system_root ]; then
$BB umount /system_root;
$BB umount -l /system_root;
fi;
fi;
fi) 2>/dev/null;
umount_apex;
umount /vendor; # busybox umount /vendor breaks recovery on some devices
(if [ ! -d /postinstall/tmp ]; then
$BB umount /system_root;
$BB umount -l /system_root;
fi;
umount /vendor; # busybox umount /vendor breaks recovery on some hacky devices
umount -l /vendor;
for mount in /mnt/system /mnt/vendor /product /mnt/product /persist; do
$BB umount $mount;
@@ -220,6 +230,7 @@ restore_env() {
[ "$OLD_LD_PATH" ] && export LD_LIBRARY_PATH=$OLD_LD_PATH;
[ "$OLD_LD_PRE" ] && export LD_PRELOAD=$OLD_LD_PRE;
[ "$OLD_LD_CFG" ] && export LD_CONFIG_FILE=$OLD_LD_CFG;
unset OLD_LD_PATH OLD_LD_PRE OLD_LD_CFG;
umount_all;
[ -L /etc_link ] && $BB rm -rf /etc/*;
(for dir in /apex /system /system_root /etc; do
@@ -360,7 +371,7 @@ do_modules() {
umask=$(umask);
umask 022;
moddir=/data/adb/modules/ak3-helper;
rm -rf $moddir;
$BB rm -rf $moddir;
mkdir -p system $moddir;
($BB mv -f product system;
$BB mv -f vendor system) 2>/dev/null;