mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-10-16 17:00:39 +00:00
Update several scripts
- Update backup format as we might be patching multiple partitions - Update uninstaller to remove files in persist (sepolicy.rule) - Better handling for dtb/dtbo partition patching
This commit is contained in:
@@ -287,8 +287,10 @@ abstract class MagiskInstaller {
|
||||
protected fun flashBoot(): Boolean {
|
||||
if (!"direct_install $installDir $srcBoot".sh().isSuccess)
|
||||
return false
|
||||
if (!Info.keepVerity)
|
||||
"patch_dtbo_image".sh()
|
||||
arrayOf(
|
||||
"(KEEPVERITY=${Info.keepVerity} patch_dtb_partitions)",
|
||||
"run_migrations"
|
||||
).sh()
|
||||
return true
|
||||
}
|
||||
|
||||
|
@@ -49,7 +49,7 @@ open class SplashActivity : Activity() {
|
||||
// Setup shortcuts
|
||||
Shortcuts.setup(this)
|
||||
|
||||
Shell.su("mm_patch_dtbo").submit {
|
||||
Shell.su("mm_patch_dtb").submit {
|
||||
if (it.isSuccess)
|
||||
Notifications.dtboPatched(this)
|
||||
}
|
||||
|
@@ -29,11 +29,12 @@ class RootInit : Shell.Initializer() {
|
||||
job.add(context.rawResource(R.raw.nonroot_utils))
|
||||
}
|
||||
|
||||
job.add("mount_partitions",
|
||||
"get_flags",
|
||||
"run_migrations",
|
||||
"export BOOTMODE=true")
|
||||
.exec()
|
||||
job.add(
|
||||
"mount_partitions",
|
||||
"get_flags",
|
||||
"run_migrations",
|
||||
"export BOOTMODE=true"
|
||||
).exec()
|
||||
|
||||
Info.keepVerity = ShellUtils.fastCmd("echo \$KEEPVERITY").toBoolean()
|
||||
Info.keepEnc = ShellUtils.fastCmd("echo \$KEEPFORCEENCRYPT").toBoolean()
|
||||
|
@@ -17,16 +17,6 @@ fix_env() {
|
||||
cd /
|
||||
}
|
||||
|
||||
run_migrations() {
|
||||
# Move the stock backups
|
||||
if [ -f /data/magisk/stock_boot* ]; then
|
||||
mv /data/magisk/stock_boot* /data 2>/dev/null
|
||||
fi
|
||||
if [ -f /data/adb/magisk/stock_boot* ]; then
|
||||
mv /data/adb/magisk/stock_boot* /data 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
direct_install() {
|
||||
rm -rf $MAGISKBIN/* 2>/dev/null
|
||||
mkdir -p $MAGISKBIN 2>/dev/null
|
||||
@@ -43,30 +33,43 @@ direct_install() {
|
||||
return 0
|
||||
}
|
||||
|
||||
mm_patch_dtbo() {
|
||||
$KEEPVERITY && return 1 || patch_dtbo_image
|
||||
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
|
||||
}
|
||||
|
||||
restore_imgs() {
|
||||
local SHA1=`grep_prop SHA1 /sbin/.magisk/config`
|
||||
[ -z $SHA1 ] && local SHA1=`cat /.backup/.sha1`
|
||||
[ -z $SHA1 ] && return 1
|
||||
local STOCKBOOT=/data/stock_boot_${SHA1}.img.gz
|
||||
local STOCKDTBO=/data/stock_dtbo.img.gz
|
||||
[ -f $STOCKBOOT ] || return 1
|
||||
local BACKUPDIR=/data/magisk_backup_$SHA1
|
||||
[ -d $BACKUPDIR ] || return 1
|
||||
|
||||
get_flags
|
||||
find_boot_image
|
||||
find_dtbo_image
|
||||
|
||||
if [ -f $STOCKDTBO -a -b "$DTBOIMAGE" ]; then
|
||||
flash_image $STOCKDTBO $DTBOIMAGE
|
||||
fi
|
||||
if [ -f $STOCKBOOT -a -b "$BOOTIMAGE" ]; then
|
||||
flash_image $STOCKBOOT $BOOTIMAGE
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
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
|
||||
}
|
||||
|
||||
post_ota() {
|
||||
@@ -119,3 +122,5 @@ force_pm_install() {
|
||||
[ "$VERIFY" -eq 1 ] && settings put global package_verifier_enable 1
|
||||
return $res
|
||||
}
|
||||
|
||||
SHA1=`grep_prop SHA1 /sbin/.magisk/config`
|
||||
|
Reference in New Issue
Block a user