mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-22 07:57:39 +00:00
Update scripts to support Pixel (XL)
This commit is contained in:
parent
3a2262dfb3
commit
46c91f923d
3
build.py
3
build.py
@ -238,6 +238,9 @@ def zip_main(args):
|
||||
source = os.path.join('libs', lib_dir, binary)
|
||||
target = os.path.join(zip_dir, binary)
|
||||
zip_with_msg(zipf, source, target)
|
||||
source = os.path.join('libs', 'arm64-v8a', 'magiskinit')
|
||||
target = os.path.join('arm64', 'magiskinit')
|
||||
zip_with_msg(zipf, source, target)
|
||||
|
||||
# APK
|
||||
source = os.path.join('MagiskManager', 'app', 'build', 'outputs', 'apk',
|
||||
|
@ -200,23 +200,54 @@ esac
|
||||
|
||||
ui_print_wrap "- Patching ramdisk"
|
||||
|
||||
# Add magisk entrypoint
|
||||
./magiskboot --cpio-patch ramdisk.cpio $KEEPVERITY $KEEPFORCEENCRYPT
|
||||
|
||||
# sepolicy patches
|
||||
cpio_extract sepolicy sepolicy
|
||||
./magisk magiskpolicy --load sepolicy --save sepolicy --minimal
|
||||
cpio_add 644 sepolicy sepolicy
|
||||
rm -f sepolicy
|
||||
|
||||
# Add new items
|
||||
if [ ! -z $SHA1 ]; then
|
||||
cp init.magisk.rc init.magisk.rc.bak
|
||||
echo "# STOCKSHA1=$SHA1" >> init.magisk.rc
|
||||
fi
|
||||
cpio_add 750 init.magisk.rc init.magisk.rc
|
||||
|
||||
if $SKIP_INITRAMFS; then
|
||||
# First check precompiled ones
|
||||
[ -f /system_root/sepolicy ] && cp /system_root/sepolicy sepolicy
|
||||
if [ ! -f sepolicy -a -f /vendor/etc/selinux/precompiled_sepolicy ]; then
|
||||
# Check SHA256
|
||||
SYSTEMSHA256=`find /system/etc/selinux -name '*.sha256' -exec cat {} \; 2>/dev/null`
|
||||
VENDORSHA256=`find /vendor/etc/selinux -name '*.sha256' -exec cat {} \; 2>/dev/null`
|
||||
[ "$SYSTEMSHA256" = "$VENDORSHA256" ] && cp /vendor/etc/selinux/precompiled_sepolicy sepolicy
|
||||
fi
|
||||
if [ ! -f sepolicy ]; then
|
||||
ui_print_wrap "- Compiling split cil policies"
|
||||
# Compile the split policies
|
||||
POLICY_VER=`cat /sys/fs/selinux/policyvers`
|
||||
PLAT_CIL=/system/etc/selinux/plat_sepolicy.cil
|
||||
NONPLAT_CIL=`find /vendor/etc/selinux -name '*.cil' 2>/dev/null`
|
||||
VENDOR_PLAT_VER=`cat /vendor/etc/selinux/plat_sepolicy_vers.txt`
|
||||
MAPPING_CIL=/system/etc/selinux/mapping/${VENDOR_PLAT_VER}.cil
|
||||
./magisk magisksecilc -M true -c $POLICY_VER -o sepolicy -f /dev/null $PLAT_CIL $NONPLAT_CIL $MAPPING_CIL
|
||||
fi
|
||||
[ -f sepolicy ] || abort_wrap "! Cannot get sepolicy"
|
||||
|
||||
# TODO: Patch dm-verity
|
||||
|
||||
cpio_add 750 init ./magiskinit
|
||||
cpio_mkdir 000 overlay
|
||||
cpio_add 750 overlay/init.magisk.rc init.magisk.rc
|
||||
cpio_mkdir 750 overlay/sbin
|
||||
cpio_add 755 overlay/sbin/magisk magisk
|
||||
else
|
||||
./magiskboot --cpio-patch ramdisk.cpio $KEEPVERITY $KEEPFORCEENCRYPT
|
||||
|
||||
cpio_extract sepolicy sepolicy
|
||||
|
||||
cpio_add 750 init.magisk.rc init.magisk.rc
|
||||
cpio_add 755 sbin/magisk magisk
|
||||
fi
|
||||
|
||||
mv init.magisk.rc.bak init.magisk.rc 2>/dev/null
|
||||
cpio_add 755 sbin/magisk magisk
|
||||
|
||||
# sepolicy patches
|
||||
./magisk magiskpolicy --load sepolicy --save sepolicy --minimal
|
||||
$SKIP_INITRAMFS && cpio_add 644 overlay/sepolicy sepolicy || cpio_add 644 sepolicy sepolicy
|
||||
rm -f sepolicy
|
||||
|
||||
# Create ramdisk backups
|
||||
./magiskboot --cpio-backup ramdisk.cpio ramdisk.cpio.orig
|
||||
@ -234,6 +265,11 @@ rm -f ramdisk.cpio.orig
|
||||
49010054011440B93FA00F71E9000054010840B93FA00F7189000054001840B91FA00F7188010054 \
|
||||
A1020054011440B93FA00F7140020054010840B93FA00F71E0010054001840B91FA00F7181010054
|
||||
|
||||
# skip_initramfs -> want_initramfs
|
||||
./magiskboot --hexpatch kernel \
|
||||
736B69705F696E697472616D6673 \
|
||||
77616E745F696E697472616D6673
|
||||
|
||||
ui_print_wrap "- Repacking boot image"
|
||||
./magiskboot --repack "$BOOTIMAGE" || abort_wrap "! Unable to repack boot image!"
|
||||
|
||||
|
@ -49,13 +49,8 @@ ui_print "************************"
|
||||
ui_print "* Magisk v$MAGISK_VER Installer"
|
||||
ui_print "************************"
|
||||
|
||||
ui_print "- Mounting /system, /vendor, /cache, /data"
|
||||
mount -o ro /system 2>/dev/null
|
||||
mount -o ro /vendor 2>/dev/null
|
||||
mount /cache 2>/dev/null
|
||||
mount /data 2>/dev/null
|
||||
|
||||
[ -f /system/build.prop ] || abort "! /system could not be mounted!"
|
||||
is_mounted /data || mount /data
|
||||
mount_partitions
|
||||
|
||||
# read override variables
|
||||
getvar KEEPVERITY
|
||||
|
@ -37,6 +37,36 @@ ui_print() {
|
||||
fi
|
||||
}
|
||||
|
||||
mount_partitions() {
|
||||
# Check A/B slot
|
||||
SLOT=`getprop ro.boot.slot_suffix`
|
||||
[ -z $SLOT ] || ui_print "- A/B partition detected, current slot: $SLOT"
|
||||
ui_print "- Mounting /system, /vendor"
|
||||
is_mounted /system || [ -f /system/build.prop ] || mount -o ro /system 2>/dev/null
|
||||
if ! is_mounted /system && ! [ -f /system/build.prop ]; then
|
||||
SYSTEMBLOCK=`find /dev/block -iname system$SLOT | head -n 1`
|
||||
mount -t ext4 -o ro $SYSTEMBLOCK /system
|
||||
fi
|
||||
is_mounted /system || [ -f /system/build.prop ] || abort "! Cannot mount /system"
|
||||
cat /proc/mounts | grep /dev/root >/dev/null && SKIP_INITRAMFS=true || SKIP_INITRAMFS=false
|
||||
if [ -f /system/init.rc ]; then
|
||||
SKIP_INITRAMFS=true
|
||||
mkdir /system_root 2>/dev/null
|
||||
mount --move /system /system_root
|
||||
mount -o bind /system_root/system /system
|
||||
fi
|
||||
$SKIP_INITRAMFS && ui_print "- Device skip_initramfs detected"
|
||||
if [ -L /system/vendor ]; then
|
||||
# Seperate /vendor partition
|
||||
is_mounted /vendor || mount -o ro /vendor 2>/dev/null
|
||||
if ! is_mounted /vendor; then
|
||||
VENDORBLOCK=`find /dev/block -iname vendor$SLOT | head -n 1`
|
||||
mount -t ext4 -o ro $VENDORBLOCK /vendor
|
||||
fi
|
||||
is_mounted /vendor || abort "! Cannot mount /vendor"
|
||||
fi
|
||||
}
|
||||
|
||||
grep_prop() {
|
||||
REGEX="s/^$1=//p"
|
||||
shift
|
||||
@ -58,10 +88,14 @@ getvar() {
|
||||
|
||||
find_boot_image() {
|
||||
if [ -z "$BOOTIMAGE" ]; then
|
||||
for BLOCK in boot_a kern-a android_boot kernel boot lnx; do
|
||||
BOOTIMAGE=`find /dev/block -iname $BLOCK | head -n 1` 2>/dev/null
|
||||
[ ! -z $BOOTIMAGE ] && break
|
||||
done
|
||||
if [ ! -z $SLOT ]; then
|
||||
BOOTIMAGE=`find /dev/block -iname boot$SLOT | head -n 1` 2>/dev/null
|
||||
else
|
||||
for BLOCK in boot_a kern-a android_boot kernel boot lnx; do
|
||||
BOOTIMAGE=`find /dev/block -iname $BLOCK | head -n 1` 2>/dev/null
|
||||
[ ! -z $BOOTIMAGE ] && break
|
||||
done
|
||||
fi
|
||||
fi
|
||||
# Recovery fallback
|
||||
if [ -z "$BOOTIMAGE" ]; then
|
||||
@ -180,6 +214,7 @@ recovery_cleanup() {
|
||||
export LD_LIBRARY_PATH=$OLD_LD_PATH
|
||||
[ -z $OLD_PATH ] || export PATH=$OLD_PATH
|
||||
ui_print "- Unmounting partitions"
|
||||
umount -l /system_root 2>/dev/null
|
||||
umount -l /system 2>/dev/null
|
||||
umount -l /vendor 2>/dev/null
|
||||
umount -l /dev/random 2>/dev/null
|
||||
|
Loading…
x
Reference in New Issue
Block a user