mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-12-12 07:40:51 -08:00
@@ -214,6 +214,7 @@ get_flags() {
|
||||
PATCHVBMETAFLAG=true
|
||||
fi
|
||||
[ -z $RECOVERYMODE ] && RECOVERYMODE=false
|
||||
[ -z $VENDORBOOT ] && VENDORBOOT=false
|
||||
}
|
||||
|
||||
run_migrations() { return; }
|
||||
@@ -243,6 +244,7 @@ app_init() {
|
||||
printvar RECOVERYMODE
|
||||
printvar KEEPVERITY
|
||||
printvar KEEPFORCEENCRYPT
|
||||
printvar VENDORBOOT
|
||||
}
|
||||
|
||||
export BOOTMODE=true
|
||||
|
||||
@@ -86,54 +86,66 @@ chmod -R 755 .
|
||||
#########
|
||||
|
||||
CHROMEOS=false
|
||||
VENDORBOOT=false
|
||||
|
||||
ui_print "- Unpacking boot image"
|
||||
./magiskboot unpack "$BOOTIMAGE"
|
||||
|
||||
case $? in
|
||||
0 ) ;;
|
||||
1 )
|
||||
abort "! Unsupported/Unknown image format"
|
||||
;;
|
||||
2 )
|
||||
ui_print "- ChromeOS boot image detected"
|
||||
CHROMEOS=true
|
||||
;;
|
||||
3 )
|
||||
ui_print "- Vendor boot image detected"
|
||||
VENDORBOOT=true
|
||||
;;
|
||||
* )
|
||||
abort "! Unable to unpack boot image"
|
||||
;;
|
||||
esac
|
||||
|
||||
###################
|
||||
# Ramdisk Restores
|
||||
###################
|
||||
#################
|
||||
# Ramdisk Checks
|
||||
#################
|
||||
|
||||
unset RAMDISK
|
||||
for path in ramdisk.cpio vendor_ramdisk/init_boot.cpio vendor_ramdisk/ramdisk.cpio; do
|
||||
if [ -e $path ]; then
|
||||
RAMDISK=$path
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Test patch status and do restore
|
||||
ui_print "- Checking ramdisk status"
|
||||
if [ -e ramdisk.cpio ]; then
|
||||
./magiskboot cpio ramdisk.cpio test
|
||||
if [ -n "$RAMDISK" ]; then
|
||||
./magiskboot cpio $RAMDISK test
|
||||
STATUS=$?
|
||||
SKIP_BACKUP=""
|
||||
else
|
||||
# Stock A only legacy SAR, or some Android 13 GKIs
|
||||
# No ramdisk found, create one from scratch
|
||||
RAMDISK=ramdisk.cpio
|
||||
# Could be stock A only legacy SAR, or some Android 13 GKIs
|
||||
STATUS=0
|
||||
SKIP_BACKUP="#"
|
||||
fi
|
||||
|
||||
case $STATUS in
|
||||
0 )
|
||||
# Stock boot
|
||||
ui_print "- Stock boot image detected"
|
||||
SHA1=$(./magiskboot sha1 "$BOOTIMAGE" 2>/dev/null)
|
||||
cat $BOOTIMAGE > stock_boot.img
|
||||
cp -af ramdisk.cpio ramdisk.cpio.orig 2>/dev/null
|
||||
cp -af $RAMDISK ramdisk.cpio.orig 2>/dev/null
|
||||
;;
|
||||
1 )
|
||||
# Magisk patched
|
||||
ui_print "- Magisk patched boot image detected"
|
||||
./magiskboot cpio ramdisk.cpio \
|
||||
./magiskboot cpio $RAMDISK \
|
||||
"extract .backup/.magisk config.orig" \
|
||||
"restore"
|
||||
cp -af ramdisk.cpio ramdisk.cpio.orig
|
||||
cp -af $RAMDISK ramdisk.cpio.orig
|
||||
rm -f stock_boot.img
|
||||
;;
|
||||
2 )
|
||||
@@ -170,13 +182,14 @@ $BOOTMODE && [ -z "$PREINITDEVICE" ] && PREINITDEVICE=$(./magisk --preinit-devic
|
||||
echo "KEEPVERITY=$KEEPVERITY" > config
|
||||
echo "KEEPFORCEENCRYPT=$KEEPFORCEENCRYPT" >> config
|
||||
echo "RECOVERYMODE=$RECOVERYMODE" >> config
|
||||
echo "VENDORBOOT=$VENDORBOOT" >> config
|
||||
if [ -n "$PREINITDEVICE" ]; then
|
||||
ui_print "- Pre-init storage partition: $PREINITDEVICE"
|
||||
echo "PREINITDEVICE=$PREINITDEVICE" >> config
|
||||
fi
|
||||
[ -n "$SHA1" ] && echo "SHA1=$SHA1" >> config
|
||||
|
||||
./magiskboot cpio ramdisk.cpio \
|
||||
./magiskboot cpio $RAMDISK \
|
||||
"add 0750 init magiskinit" \
|
||||
"mkdir 0750 overlay.d" \
|
||||
"mkdir 0750 overlay.d/sbin" \
|
||||
|
||||
@@ -325,7 +325,7 @@ mount_partitions() {
|
||||
|
||||
# After calling this method, the following variables will be set:
|
||||
# ISENCRYPTED, PATCHVBMETAFLAG,
|
||||
# KEEPVERITY, KEEPFORCEENCRYPT, RECOVERYMODE
|
||||
# KEEPVERITY, KEEPFORCEENCRYPT, RECOVERYMODE, VENDORBOOT
|
||||
get_flags() {
|
||||
if grep ' /data ' /proc/mounts | grep -q 'dm-'; then
|
||||
ISENCRYPTED=true
|
||||
@@ -348,6 +348,7 @@ get_flags() {
|
||||
getvar KEEPVERITY
|
||||
getvar KEEPFORCEENCRYPT
|
||||
getvar RECOVERYMODE
|
||||
getvar VENDORBOOT
|
||||
if [ -z $KEEPVERITY ]; then
|
||||
if $SYSTEM_AS_ROOT; then
|
||||
KEEPVERITY=true
|
||||
@@ -365,13 +366,23 @@ get_flags() {
|
||||
fi
|
||||
fi
|
||||
[ -z $RECOVERYMODE ] && RECOVERYMODE=false
|
||||
[ -z $VENDORBOOT ] && VENDORBOOT=false
|
||||
}
|
||||
|
||||
# Returns whether the device is GKI 13+
|
||||
is_gt_gki_13() {
|
||||
[ "$(uname -r | cut -d. -f1)" -ge 5 ] && uname -r | grep -Evq "android12-|^5\.4"
|
||||
}
|
||||
|
||||
# Require RECOVERYMODE, VENDORBOOT, SLOT to be set.
|
||||
# After calling this method, BOOTIMAGE will be set.
|
||||
find_boot_image() {
|
||||
BOOTIMAGE=
|
||||
if $RECOVERYMODE; then
|
||||
if $VENDORBOOT; then
|
||||
BOOTIMAGE="/dev/block/by-name/vendor_boot$SLOT"
|
||||
elif $RECOVERYMODE; then
|
||||
BOOTIMAGE=$(find_block "recovery$SLOT" "sos")
|
||||
elif [ -e "/dev/block/by-name/init_boot$SLOT" ] && [ "$(uname -r | cut -d. -f1)" -ge 5 ] && uname -r | grep -Evq "android12-|^5\.4"; then
|
||||
elif [ -e "/dev/block/by-name/init_boot$SLOT" ] && is_gt_gki_13; then
|
||||
# init_boot is only used with GKI 13+. It is possible that some devices with init_boot
|
||||
# partition still uses Android 12 GKI or previous kernels, so we need to explicitly detect that scenario.
|
||||
BOOTIMAGE="/dev/block/by-name/init_boot$SLOT"
|
||||
|
||||
Reference in New Issue
Block a user