Magisk/app/src/main/res/raw/utils.sh

120 lines
2.9 KiB
Bash
Raw Normal View History

2018-05-13 12:14:10 +02:00
env_check() {
for file in busybox magisk magiskboot magiskinit util_functions.sh boot_patch.sh; do
2019-02-24 08:11:11 +01:00
[ -f $MAGISKBIN/$file ] || return 1
2018-05-13 12:14:10 +02:00
done
return 0
}
2018-06-25 18:29:01 +02:00
2018-07-04 11:15:26 +02:00
fix_env() {
2019-02-24 08:11:11 +01:00
cd $MAGISKBIN
2019-03-22 07:32:21 +01:00
PATH=/sbin:/system/bin sh update-binary -x
2019-02-24 08:11:11 +01:00
./busybox rm -f $MAGISKTMP/busybox/*
2019-03-22 07:32:21 +01:00
cp -af busybox $MAGISKTMP/busybox/busybox
$MAGISKTMP/busybox/busybox --install -s $MAGISKTMP/busybox
2018-07-04 11:15:26 +02:00
rm -f update-binary magisk.apk
chmod -R 755 .
2019-03-20 08:20:02 +01:00
./magiskinit -x magisk magisk
2018-07-04 11:15:26 +02:00
cd /
}
direct_install() {
2019-02-24 08:11:11 +01:00
rm -rf $MAGISKBIN/* 2>/dev/null
mkdir -p $MAGISKBIN 2>/dev/null
chmod 700 $NVBASE
cp -af $1/. $MAGISKBIN
rm -f $MAGISKBIN/new-boot.img
2018-08-10 12:59:14 +02:00
echo "- Flashing new boot image"
2018-08-12 20:57:03 +02:00
flash_image $1/new-boot.img $2
if [ $? -ne 0 ]; then
echo "! Insufficient partition size"
return 1
fi
2018-08-12 20:57:03 +02:00
rm -rf $1
return 0
2018-07-04 11:15:26 +02:00
}
mm_patch_dtb() {
local result=1
local PATCHED=$TMPDIR/dt.patched
for name in dtb dtbo; do
local IMAGE=`find_block $name$SLOT`
if [ ! -z $IMAGE ]; then
if $MAGISKBIN/magiskboot dtb $IMAGE patch $PATCHED; then
result=0
if [ ! -z $SHA1 ]; then
# Backup stuffs
mkdir /data/magisk_backup_${SHA1} 2>/dev/null
cat $IMAGE | gzip -9 > /data/magisk_backup_${SHA1}/${name}.img.gz
fi
cat $PATCHED /dev/zero > $IMAGE
rm -f $PATCHED
fi
fi
done
return $result
2018-06-25 18:29:01 +02:00
}
2018-06-26 23:58:56 +02:00
restore_imgs() {
[ -z $SHA1 ] && return 1
local BACKUPDIR=/data/magisk_backup_$SHA1
[ -d $BACKUPDIR ] || return 1
2018-06-26 23:58:56 +02:00
get_flags
2018-06-26 23:58:56 +02:00
find_boot_image
for name in dtb dtbo; do
[ -f $BACKUPDIR/${name}.img.gz ] || continue
local IMAGE=`find_block $name$SLOT`
[ -z $IMAGE ] && continue
flash_image $BACKUPDIR/${name}.img.gz $IMAGE
done
[ -f $BACKUPDIR/boot.img.gz ] || return 1
flash_image $BACKUPDIR/boot.img.gz $BOOTIMAGE
2018-06-26 23:58:56 +02:00
}
post_ota() {
cd $1
chmod 755 bootctl
2018-12-13 12:05:19 +01:00
./bootctl hal-info || return
[ `./bootctl get-current-slot` -eq 0 ] && SLOT_NUM=1 || SLOT_NUM=0
./bootctl set-active-boot-slot $SLOT_NUM
2019-03-22 07:32:21 +01:00
cat << EOF > post-fs-data.d/post_ota.sh
${1}/bootctl mark-boot-successful
rm -f ${1}/bootctl
2019-04-24 07:59:47 +02:00
rm -f ${1}/post-fs-data.d/post_ota.sh
2019-03-22 07:32:21 +01:00
EOF
chmod 755 post-fs-data.d/post_ota.sh
cd /
}
add_hosts_module() {
# Do not touch existing hosts module
2020-01-11 05:37:08 +01:00
[ -d /sbin/.magisk/modules/hosts ] && return
cd /sbin/.magisk/modules
mkdir -p hosts/system/etc
cat << EOF > hosts/module.prop
id=hosts
name=Systemless Hosts
version=1.0
versionCode=1
author=Magisk Manager
description=Magisk Manager built-in systemless hosts module
EOF
2020-01-11 05:37:08 +01:00
cp -f /system/etc/hosts hosts/system/etc/hosts
2018-11-27 09:26:05 +01:00
magisk --clone-attr /system/etc/hosts hosts/system/etc/hosts
touch hosts/update
cd /
}
force_pm_install() {
local APK=$1
local VERIFY=`settings get global package_verifier_enable`
2019-10-24 21:23:57 +02:00
[ "$VERIFY" -eq 1 ] && settings put global package_verifier_enable 0
pm install -r $APK
local res=$?
2019-10-24 21:23:57 +02:00
[ "$VERIFY" -eq 1 ] && settings put global package_verifier_enable 1
return $res
}
SHA1=`grep_prop SHA1 /sbin/.magisk/config`