mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-11-27 12:05:30 +00:00
scripts: refactor and major addon.d fixes
- remove redundant addon.d.sh script bits that were covered elsewhere ($TMPDIR in util_functions.sh, find_dtbo_image in patch_dtbo_image) - refactor addon.d.sh and flash_script.sh for simplicity and readability, and put common flashing script in util_functions.sh (as patch_boot_image), which should greatly help avoid them getting out of sync going forward and fixes compressing ramdisk support and post-patch cleanup for addon.d - add check_data to addon.d.sh since moving stock_boot* and stock_dtbo* backups depend on it and so weren't occuring with addon.d - fix find_manager_apk with working fallback for recovery addon.d execution (where `magisk --sqlite` will not work for hidden Manager), Manager DynAPK hiding, and print a useful log warning if an APK can't be found
This commit is contained in:
parent
4cd154675f
commit
6dd34aec47
@ -20,9 +20,6 @@ else
|
||||
fi
|
||||
|
||||
initialize() {
|
||||
# This path should work in any cases
|
||||
TMPDIR=/dev/tmp
|
||||
|
||||
mount /data 2>/dev/null
|
||||
|
||||
MAGISKBIN=/data/adb/magisk
|
||||
@ -43,71 +40,43 @@ initialize() {
|
||||
fi
|
||||
}
|
||||
|
||||
show_logo() {
|
||||
ui_print "************************"
|
||||
ui_print "* Magisk v$MAGISK_VER addon.d"
|
||||
ui_print "************************"
|
||||
}
|
||||
|
||||
installation() {
|
||||
find_manager_apk
|
||||
get_flags
|
||||
find_boot_image
|
||||
find_dtbo_image
|
||||
[ -z $BOOTIMAGE ] && abort "! Unable to detect target image"
|
||||
ui_print "- Target image: $BOOTIMAGE"
|
||||
[ -z $DTBOIMAGE ] || ui_print "- DTBO image: $DTBOIMAGE"
|
||||
|
||||
remove_system_su
|
||||
|
||||
[ -f $APK ] && eval $BOOTSIGNER -verify < $BOOTIMAGE && BOOTSIGNED=true
|
||||
$BOOTSIGNED && ui_print "- Boot image is signed with AVB 1.0"
|
||||
|
||||
SOURCEDMODE=true
|
||||
cd $MAGISKBIN
|
||||
|
||||
# Source the boot patcher
|
||||
. ./boot_patch.sh "$BOOTIMAGE"
|
||||
|
||||
ui_print "- Flashing new boot image"
|
||||
flash_image new-boot.img "$BOOTIMAGE" || abort "! Insufficient partition size"
|
||||
rm -f new-boot.img
|
||||
|
||||
if [ -f stock_boot* ]; then
|
||||
rm -f /data/stock_boot* 2>/dev/null
|
||||
$DATA && mv stock_boot* /data
|
||||
fi
|
||||
|
||||
$KEEPVERITY || patch_dtbo_image
|
||||
|
||||
if [ -f stock_dtbo* ]; then
|
||||
rm -f /data/stock_dtbo* 2>/dev/null
|
||||
$DATA && mv stock_dtbo* /data
|
||||
fi
|
||||
|
||||
cd /
|
||||
}
|
||||
|
||||
finalize() {
|
||||
ui_print "- Done"
|
||||
exit 0
|
||||
}
|
||||
|
||||
main() {
|
||||
if ! $backuptool_ab; then
|
||||
# Wait for post addon.d-v1 processes to finish
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
$BOOTMODE || recovery_actions
|
||||
show_logo
|
||||
|
||||
ui_print "************************"
|
||||
ui_print "* Magisk v$MAGISK_VER addon.d"
|
||||
ui_print "************************"
|
||||
|
||||
mount_partitions
|
||||
check_data
|
||||
get_flags
|
||||
|
||||
if $backuptool_ab; then
|
||||
# Swap the slot for addon.d-v2
|
||||
if [ ! -z $SLOT ]; then [ $SLOT = _a ] && SLOT=_b || SLOT=_a; fi
|
||||
fi
|
||||
installation
|
||||
|
||||
find_boot_image
|
||||
|
||||
[ -z $BOOTIMAGE ] && abort "! Unable to detect target image"
|
||||
ui_print "- Target image: $BOOTIMAGE"
|
||||
|
||||
remove_system_su
|
||||
find_manager_apk
|
||||
patch_boot_image
|
||||
|
||||
cd /
|
||||
# Cleanups
|
||||
$BOOTMODE || recovery_cleanup
|
||||
finalize
|
||||
rm -rf $TMPDIR
|
||||
|
||||
ui_print "- Done"
|
||||
exit 0
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
|
@ -1,7 +1,7 @@
|
||||
#MAGISK
|
||||
##########################################################################################
|
||||
#
|
||||
# Magisk Flash Script
|
||||
# Magisk Flash Script (updater-script)
|
||||
# by topjohnwu
|
||||
#
|
||||
# This script will detect, construct the environment for Magisk
|
||||
@ -103,43 +103,10 @@ fi
|
||||
$BOOTMODE || recovery_actions
|
||||
|
||||
##########################################################################################
|
||||
# Boot patching
|
||||
# Boot/DTBO Patching
|
||||
##########################################################################################
|
||||
|
||||
eval $BOOTSIGNER -verify < $BOOTIMAGE && BOOTSIGNED=true
|
||||
$BOOTSIGNED && ui_print "- Boot image is signed with AVB 1.0"
|
||||
|
||||
SOURCEDMODE=true
|
||||
cd $MAGISKBIN
|
||||
|
||||
$IS64BIT && mv -f magiskinit64 magiskinit || rm -f magiskinit64
|
||||
|
||||
# Source the boot patcher
|
||||
. ./boot_patch.sh "$BOOTIMAGE"
|
||||
|
||||
ui_print "- Flashing new boot image"
|
||||
|
||||
if ! flash_image new-boot.img "$BOOTIMAGE"; then
|
||||
ui_print "- Compressing ramdisk to fit in partition"
|
||||
./magiskboot cpio ramdisk.cpio compress
|
||||
./magiskboot repack "$BOOTIMAGE"
|
||||
flash_image new-boot.img "$BOOTIMAGE" || abort "! Insufficient partition size"
|
||||
fi
|
||||
|
||||
./magiskboot cleanup
|
||||
rm -f new-boot.img
|
||||
|
||||
if [ -f stock_boot* ]; then
|
||||
rm -f /data/stock_boot* 2>/dev/null
|
||||
$DATA && mv stock_boot* /data
|
||||
fi
|
||||
|
||||
$KEEPVERITY || patch_dtbo_image
|
||||
|
||||
if [ -f stock_dtbo* ]; then
|
||||
rm -f /data/stock_dtbo* 2>/dev/null
|
||||
$DATA && mv stock_dtbo* /data
|
||||
fi
|
||||
patch_boot_image
|
||||
|
||||
cd /
|
||||
# Cleanups
|
||||
|
@ -293,6 +293,45 @@ patch_dtbo_image() {
|
||||
return 1
|
||||
}
|
||||
|
||||
patch_boot_image() {
|
||||
# Common installation script for flash_script.sh (updater-script) and addon.d.sh
|
||||
eval $BOOTSIGNER -verify < $BOOTIMAGE && BOOTSIGNED=true
|
||||
$BOOTSIGNED && ui_print "- Boot image is signed with AVB 1.0"
|
||||
|
||||
SOURCEDMODE=true
|
||||
cd $MAGISKBIN
|
||||
|
||||
$IS64BIT && mv -f magiskinit64 magiskinit 2>/dev/null || rm -f magiskinit64
|
||||
|
||||
# Source the boot patcher
|
||||
. ./boot_patch.sh "$BOOTIMAGE"
|
||||
|
||||
ui_print "- Flashing new boot image"
|
||||
|
||||
if ! flash_image new-boot.img "$BOOTIMAGE"; then
|
||||
ui_print "- Compressing ramdisk to fit in partition"
|
||||
./magiskboot cpio ramdisk.cpio compress
|
||||
./magiskboot repack "$BOOTIMAGE"
|
||||
flash_image new-boot.img "$BOOTIMAGE" || abort "! Insufficient partition size"
|
||||
fi
|
||||
|
||||
./magiskboot cleanup
|
||||
rm -f new-boot.img
|
||||
|
||||
if [ -f stock_boot* ]; then
|
||||
rm -f /data/stock_boot* 2>/dev/null
|
||||
$DATA && mv stock_boot* /data
|
||||
fi
|
||||
|
||||
# Patch DTBO together with boot image
|
||||
$KEEPVERITY || patch_dtbo_image
|
||||
|
||||
if [ -f stock_dtbo* ]; then
|
||||
rm -f /data/stock_dtbo* 2>/dev/null
|
||||
$DATA && mv stock_dtbo* /data
|
||||
fi
|
||||
}
|
||||
|
||||
sign_chromeos() {
|
||||
ui_print "- Signing ChromeOS boot image"
|
||||
|
||||
@ -360,13 +399,16 @@ check_data() {
|
||||
}
|
||||
|
||||
find_manager_apk() {
|
||||
APK=/data/adb/magisk.apk
|
||||
[ -z $APK ] && APK=/data/adb/magisk.apk
|
||||
[ -f $APK ] || APK=/data/magisk/magisk.apk
|
||||
[ -f $APK ] || APK=/data/app/com.topjohnwu.magisk*/*.apk
|
||||
if [ ! -f $APK ]; then
|
||||
DBAPK=`magisk --sqlite "SELECT value FROM strings WHERE key='requester'" | cut -d= -f2`
|
||||
[ -z "$DBAPK" ] || APK=/data/app/$DBAPK*/*.apk
|
||||
DBAPK=`magisk --sqlite "SELECT value FROM strings WHERE key='requester'" 2>/dev/null | cut -d= -f2`
|
||||
[ -z $DBAPK ] && DBAPK=`strings /data/adb/magisk.db | grep 5requester | cut -c11-`
|
||||
[ -z $DBAPK ] || APK=/data/user_de/*/$DBAPK/dyn/*.apk
|
||||
[ -f $APK ] || APK=/data/app/$DBAPK*/*.apk
|
||||
fi
|
||||
[ -f $APK ] || ui_print "! Unable to detect Magisk Manager APK for BootSigner"
|
||||
}
|
||||
|
||||
#################
|
||||
|
Loading…
Reference in New Issue
Block a user