Various updates, prepare for Multirom support
This commit is contained in:
parent
aa309087fd
commit
9ea028f5ab
@ -5,14 +5,12 @@ LOCAL_PATH := $(my_path)
|
|||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE := magiskhide
|
LOCAL_MODULE := magiskhide
|
||||||
LOCAL_MODULE_TAGS := optional
|
LOCAL_MODULE_TAGS := optional
|
||||||
LOCAL_FORCE_STATIC_EXECUTABLE := true
|
|
||||||
LOCAL_SRC_FILES := magiskhide.c
|
LOCAL_SRC_FILES := magiskhide.c
|
||||||
include $(BUILD_EXECUTABLE)
|
include $(BUILD_EXECUTABLE)
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE := bootimgtools
|
LOCAL_MODULE := bootimgtools
|
||||||
LOCAL_MODULE_TAGS := optional
|
LOCAL_MODULE_TAGS := optional
|
||||||
LOCAL_FORCE_STATIC_EXECUTABLE := true
|
|
||||||
LOCAL_SRC_FILES := bootimgtools.c extract.c repack.c hexpatch.c
|
LOCAL_SRC_FILES := bootimgtools.c extract.c repack.c hexpatch.c
|
||||||
LOCAL_CFLAGS += -std=gnu11
|
LOCAL_CFLAGS += -std=gnu11
|
||||||
include $(BUILD_EXECUTABLE)
|
include $(BUILD_EXECUTABLE)
|
||||||
|
@ -13,6 +13,9 @@ on post-fs-data
|
|||||||
on property:magisk.hide=1
|
on property:magisk.hide=1
|
||||||
restart magisk_hide
|
restart magisk_hide
|
||||||
|
|
||||||
|
on property:magisk.restart_pfsd=1
|
||||||
|
trigger post-fs-data
|
||||||
|
|
||||||
# Services
|
# Services
|
||||||
|
|
||||||
# launch post-fs script
|
# launch post-fs script
|
||||||
|
@ -1,24 +1,24 @@
|
|||||||
#!/system/bin/sh
|
#!/system/bin/sh
|
||||||
|
|
||||||
LOGFILE=/cache/magisk.log
|
LOGFILE=/cache/magisk.log
|
||||||
HIDELOG=/cache/magiskhide.log
|
|
||||||
IMG=/data/magisk.img
|
IMG=/data/magisk.img
|
||||||
|
|
||||||
export MOUNTPOINT=/magisk
|
MOUNTPOINT=/magisk
|
||||||
|
|
||||||
COREDIR=$MOUNTPOINT/.core
|
COREDIR=$MOUNTPOINT/.core
|
||||||
|
|
||||||
DUMMDIR=$COREDIR/dummy
|
TMPDIR=/dev/magisk
|
||||||
MIRRDIR=$COREDIR/mirror
|
DUMMDIR=$TMPDIR/dummy
|
||||||
|
MIRRDIR=$TMPDIR/mirror
|
||||||
|
MOUNTINFO=$TMPDIR/mnt
|
||||||
|
|
||||||
TMPDIR=/dev/tmp
|
# Use the included busybox for maximum compatibility and reliable results
|
||||||
|
# e.g. we rely on the option "-c" for cp (reserve contexts), and -exec for find
|
||||||
|
TOOLPATH=/data/busybox
|
||||||
|
|
||||||
# Use the included busybox to do everything for maximum compatibility
|
# Legacy support for old phh, we don't change PATH now
|
||||||
# We also do so because we rely on the option "-c" for cp (reserve contexts)
|
|
||||||
|
|
||||||
# Reserve the original PATH
|
|
||||||
export OLDPATH=$PATH
|
export OLDPATH=$PATH
|
||||||
export PATH="/data/busybox:$PATH"
|
|
||||||
|
|
||||||
log_print() {
|
log_print() {
|
||||||
echo $1
|
echo $1
|
||||||
@ -42,17 +42,13 @@ unblock() {
|
|||||||
|
|
||||||
run_scripts() {
|
run_scripts() {
|
||||||
BASE=$MOUNTPOINT
|
BASE=$MOUNTPOINT
|
||||||
if [ "$1" = "post-fs" ]; then
|
|
||||||
BASE=/cache/magisk
|
|
||||||
fi
|
|
||||||
|
|
||||||
for MOD in $BASE/* ; do
|
for MOD in $BASE/* ; do
|
||||||
if [ ! -f "$MOD/disable" ]; then
|
if [ ! -f "$MOD/disable" ]; then
|
||||||
if [ -f "$MOD/$1.sh" ]; then
|
if [ -f "$MOD/$1.sh" ]; then
|
||||||
chmod 755 $MOD/$1.sh
|
chmod 755 $MOD/$1.sh
|
||||||
chcon 'u:object_r:system_file:s0' $MOD/$1.sh
|
chcon 'u:object_r:system_file:s0' $MOD/$1.sh
|
||||||
log_print "$1: $MOD/$1.sh"
|
log_print "$1: $MOD/$1.sh"
|
||||||
$MOD/$1.sh
|
sh $MOD/$1.sh
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@ -61,7 +57,7 @@ run_scripts() {
|
|||||||
loopsetup() {
|
loopsetup() {
|
||||||
LOOPDEVICE=
|
LOOPDEVICE=
|
||||||
for DEV in $(ls /dev/block/loop*); do
|
for DEV in $(ls /dev/block/loop*); do
|
||||||
if [ `losetup $DEV $1 >/dev/null 2>&1; echo $?` -eq 0 ]; then
|
if [ `$TOOLPATH/losetup $DEV $1 >/dev/null 2>&1; echo $?` -eq 0 ]; then
|
||||||
LOOPDEVICE=$DEV
|
LOOPDEVICE=$DEV
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
@ -79,8 +75,8 @@ target_size_check() {
|
|||||||
travel() {
|
travel() {
|
||||||
cd $1/$2
|
cd $1/$2
|
||||||
if [ -f ".replace" ]; then
|
if [ -f ".replace" ]; then
|
||||||
rm -rf $TMPDIR/$2
|
rm -rf $MOUNTINFO/$2
|
||||||
mktouch $TMPDIR/$2 $1
|
mktouch $MOUNTINFO/$2 $1
|
||||||
else
|
else
|
||||||
for ITEM in * ; do
|
for ITEM in * ; do
|
||||||
if [ ! -e "/$2/$ITEM" ]; then
|
if [ ! -e "/$2/$ITEM" ]; then
|
||||||
@ -89,12 +85,12 @@ travel() {
|
|||||||
# We cannot add new items to /system root, delete it
|
# We cannot add new items to /system root, delete it
|
||||||
rm -rf $ITEM
|
rm -rf $ITEM
|
||||||
else
|
else
|
||||||
if [ -d "$TMPDIR/dummy/$2" ]; then
|
if [ -d "$MOUNTINFO/dummy/$2" ]; then
|
||||||
# We are in a higher level, delete the lower levels
|
# We are in a higher level, delete the lower levels
|
||||||
rm -rf $TMPDIR/dummy/$2
|
rm -rf $MOUNTINFO/dummy/$2
|
||||||
fi
|
fi
|
||||||
# Mount the dummy parent
|
# Mount the dummy parent
|
||||||
mktouch $TMPDIR/dummy/$2
|
mktouch $MOUNTINFO/dummy/$2
|
||||||
|
|
||||||
mkdir -p $DUMMDIR/$2 2>/dev/null
|
mkdir -p $DUMMDIR/$2 2>/dev/null
|
||||||
if [ -d "$ITEM" ]; then
|
if [ -d "$ITEM" ]; then
|
||||||
@ -102,7 +98,7 @@ travel() {
|
|||||||
mkdir -p $DUMMDIR/$2/$ITEM
|
mkdir -p $DUMMDIR/$2/$ITEM
|
||||||
elif [ -L "$ITEM" ]; then
|
elif [ -L "$ITEM" ]; then
|
||||||
# Symlinks are small, copy them
|
# Symlinks are small, copy them
|
||||||
cp -afc $ITEM $DUMMDIR/$2/$ITEM
|
$TOOLPATH/cp -afc $ITEM $DUMMDIR/$2/$ITEM
|
||||||
else
|
else
|
||||||
# Create new dummy file
|
# Create new dummy file
|
||||||
mktouch $DUMMDIR/$2/$ITEM
|
mktouch $DUMMDIR/$2/$ITEM
|
||||||
@ -116,7 +112,7 @@ travel() {
|
|||||||
mkdir -p $DUMMDIR$DUMMY
|
mkdir -p $DUMMDIR$DUMMY
|
||||||
elif [ -L "$DUMMY" ]; then
|
elif [ -L "$DUMMY" ]; then
|
||||||
# Symlinks are small, copy them
|
# Symlinks are small, copy them
|
||||||
cp -afc $DUMMY $DUMMDIR$DUMMY
|
$TOOLPATH/cp -afc $DUMMY $DUMMDIR$DUMMY
|
||||||
else
|
else
|
||||||
# Create dummy file
|
# Create dummy file
|
||||||
mktouch $DUMMDIR$DUMMY
|
mktouch $DUMMDIR$DUMMY
|
||||||
@ -131,7 +127,7 @@ travel() {
|
|||||||
(travel $1 $2/$ITEM)
|
(travel $1 $2/$ITEM)
|
||||||
elif [ ! -L "$ITEM" ]; then
|
elif [ ! -L "$ITEM" ]; then
|
||||||
# Mount this file
|
# Mount this file
|
||||||
mktouch $TMPDIR/$2/$ITEM $1
|
mktouch $MOUNTINFO/$2/$ITEM $1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
@ -194,10 +190,13 @@ merge_image() {
|
|||||||
# Merge (will reserve selinux contexts)
|
# Merge (will reserve selinux contexts)
|
||||||
cd /cache/merge_img
|
cd /cache/merge_img
|
||||||
for MOD in *; do
|
for MOD in *; do
|
||||||
log_print "Merging: $MOD"
|
if [ "$MOD" != "lost+found" ]; then
|
||||||
rm -rf /cache/data_img/$MOD
|
log_print "Merging: $MOD"
|
||||||
cp -afc $MOD /cache/data_img/
|
rm -rf /cache/data_img/$MOD
|
||||||
|
$TOOLPATH/cp -afc $MOD /cache/data_img/
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
$TOOLPATH/cp -afc .core/. /cache/data_img/.core 2>/dev/null
|
||||||
log_print "Merge complete"
|
log_print "Merge complete"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -206,8 +205,8 @@ merge_image() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
losetup -d $LOOPDATA
|
$TOOLPATH/losetup -d $LOOPDATA
|
||||||
losetup -d $LOOPMERGE
|
$TOOLPATH/losetup -d $LOOPMERGE
|
||||||
|
|
||||||
rmdir /cache/data_img
|
rmdir /cache/data_img
|
||||||
rmdir /cache/merge_img
|
rmdir /cache/merge_img
|
||||||
@ -224,31 +223,12 @@ case $1 in
|
|||||||
mv $LOGFILE /cache/last_magisk.log
|
mv $LOGFILE /cache/last_magisk.log
|
||||||
touch $LOGFILE
|
touch $LOGFILE
|
||||||
chmod 644 $LOGFILE
|
chmod 644 $LOGFILE
|
||||||
|
|
||||||
log_print "Magisk post-fs mode running..."
|
log_print "Magisk post-fs mode running..."
|
||||||
|
|
||||||
if [ -d "/cache/magisk_merge" ]; then
|
# No more cache mods!
|
||||||
cd /cache/magisk_merge
|
# Only for multirom!
|
||||||
for MOD in *; do
|
|
||||||
log_print "Merging: $MOD"
|
|
||||||
rm -rf /cache/magisk/$MOD
|
|
||||||
mv $MOD /cache/magisk/$MOD
|
|
||||||
done
|
|
||||||
rm -rf /cache/magisk_merge
|
|
||||||
fi
|
|
||||||
|
|
||||||
for MOD in /cache/magisk/* ; do
|
|
||||||
if [ -f "$MOD/remove" ]; then
|
|
||||||
log_print "Remove module: $MOD"
|
|
||||||
rm -rf $MOD
|
|
||||||
elif [ -f "$MOD/auto_mount" -a ! -f "$MOD/disable" ]; then
|
|
||||||
find $MOD/system -type f 2>/dev/null | while read ITEM ; do
|
|
||||||
TARGET=${ITEM#$MOD}
|
|
||||||
bind_mount $ITEM $TARGET
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
run_scripts post-fs
|
|
||||||
unblock
|
unblock
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@ -263,143 +243,154 @@ case $1 in
|
|||||||
unblock
|
unblock
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log_print "Magisk post-fs-data mode running..."
|
# Don't run twice
|
||||||
|
if [ "$(getprop magisk.restart_pfsd)" != "1" ]; then
|
||||||
|
|
||||||
# Live patch sepolicy
|
log_print "Magisk post-fs-data mode running..."
|
||||||
/data/magisk/sepolicy-inject --live -s su
|
|
||||||
|
|
||||||
[ ! -d "$MOUNTPOINT" ] && mkdir -p $MOUNTPOINT
|
# Live patch sepolicy
|
||||||
|
/data/magisk/sepolicy-inject --live -s su
|
||||||
|
|
||||||
# Cache support
|
# Cache support
|
||||||
if [ -d "/cache/data_bin" ]; then
|
if [ -d "/cache/data_bin" ]; then
|
||||||
rm -rf /data/busybox /data/magisk
|
rm -rf /data/busybox /data/magisk
|
||||||
mkdir -p /data/busybox
|
mkdir -p /data/busybox
|
||||||
mv /cache/data_bin /data/magisk
|
mv /cache/data_bin /data/magisk
|
||||||
chmod 755 /data/busybox /data/magisk /data/magisk/*
|
chmod -R 755 /data/busybox /data/magisk
|
||||||
chcon 'u:object_r:system_file:s0' /data/busybox /data/magisk /data/magisk/*
|
/data/magisk/busybox --install -s /data/busybox
|
||||||
/data/magisk/busybox --install -s /data/busybox
|
ln -s /data/magisk/busybox /data/busybox/busybox
|
||||||
# Prevent issues
|
# Prevent issues
|
||||||
rm -f /data/busybox/su /data/busybox/sh
|
rm -f /data/busybox/su /data/busybox/sh
|
||||||
fi
|
|
||||||
mv /cache/stock_boot.img /data 2>/dev/null
|
|
||||||
|
|
||||||
chmod 644 $IMG /cache/magisk.img /data/magisk_merge.img 2>/dev/null
|
|
||||||
|
|
||||||
# Handle image merging
|
|
||||||
merge_image /cache/magisk.img
|
|
||||||
merge_image /data/magisk_merge.img
|
|
||||||
|
|
||||||
# Mount magisk.img
|
|
||||||
if [ `cat /proc/mounts | grep $MOUNTPOINT >/dev/null 2>&1; echo $?` -ne 0 ]; then
|
|
||||||
loopsetup $IMG
|
|
||||||
if [ ! -z "$LOOPDEVICE" ]; then
|
|
||||||
mount -t ext4 -o rw,noatime $LOOPDEVICE $MOUNTPOINT
|
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
if [ `cat /proc/mounts | grep $MOUNTPOINT >/dev/null 2>&1; echo $?` -ne 0 ]; then
|
mv /cache/stock_boot.img /data 2>/dev/null
|
||||||
log_print "magisk.img mount failed, nothing to do :("
|
|
||||||
unblock
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_print "Preparing modules"
|
chcon -R 'u:object_r:system_file:s0' /data/busybox /data/magisk
|
||||||
# First do cleanups
|
|
||||||
rm -rf $DUMMDIR
|
|
||||||
rmdir $(find $MOUNTPOINT -type d -depth ! -path "*core*" ) 2>/dev/null
|
|
||||||
rm -rf $COREDIR/bin
|
|
||||||
|
|
||||||
mkdir -p $DUMMDIR
|
# Image merging
|
||||||
mkdir -p $MIRRDIR/system
|
chmod 644 $IMG /cache/magisk.img /data/magisk_merge.img 2>/dev/null
|
||||||
|
merge_image /cache/magisk.img
|
||||||
|
merge_image /data/magisk_merge.img
|
||||||
|
|
||||||
# Travel through all mods
|
# Mount magisk.img
|
||||||
for MOD in $MOUNTPOINT/* ; do
|
[ ! -d "$MOUNTPOINT" ] && mkdir -p $MOUNTPOINT
|
||||||
if [ -f "$MOD/remove" ]; then
|
if [ `cat /proc/mounts | grep $MOUNTPOINT >/dev/null 2>&1; echo $?` -ne 0 ]; then
|
||||||
log_print "Remove module: $MOD"
|
loopsetup $IMG
|
||||||
rm -rf $MOD
|
if [ ! -z "$LOOPDEVICE" ]; then
|
||||||
elif [ -f "$MOD/auto_mount" -a -d "$MOD/system" -a ! -f "$MOD/disable" ]; then
|
mount -t ext4 -o rw,noatime $LOOPDEVICE $MOUNTPOINT
|
||||||
(travel $MOD system)
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
|
|
||||||
# Proper permissions for generated items
|
if [ `cat /proc/mounts | grep $MOUNTPOINT >/dev/null 2>&1; echo $?` -ne 0 ]; then
|
||||||
chmod 755 $(find $COREDIR -type d)
|
log_print "magisk.img mount failed, nothing to do :("
|
||||||
chmod 644 $(find $COREDIR -type f)
|
unblock
|
||||||
find $COREDIR -type d -exec chmod 755 {} \;
|
|
||||||
find $COREDIR -type f -exec chmod 644 {} \;
|
|
||||||
|
|
||||||
# linker(64), t*box, and app_process* are required if we need to dummy mount bin folder
|
|
||||||
if [ -f "$TMPDIR/dummy/system/bin" ]; then
|
|
||||||
rm -f $DUMMDIR/system/bin/linker* $DUMMDIR/system/bin/t*box $DUMMDIR/system/bin/app_process*
|
|
||||||
cd /system/bin
|
|
||||||
cp -afc linker* t*box app_process* $DUMMDIR/system/bin/
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Unmount, shrink, remount
|
|
||||||
if [ `umount $MOUNTPOINT >/dev/null 2>&1; echo $?` -eq 0 ]; then
|
|
||||||
losetup -d $LOOPDEVICE
|
|
||||||
target_size_check $IMG
|
|
||||||
NEWDATASIZE=$(((curUsedM / 32 + 2) * 32))
|
|
||||||
if [ "$curSizeM" -gt "$NEWDATASIZE" ]; then
|
|
||||||
log_print "Shrinking $IMG to ${NEWDATASIZE}M..."
|
|
||||||
resize2fs $IMG ${NEWDATASIZE}M
|
|
||||||
fi
|
fi
|
||||||
loopsetup $IMG
|
|
||||||
if [ ! -z "$LOOPDEVICE" ]; then
|
# Remove empty directories and remove legacy paths and previous symlink
|
||||||
mount -t ext4 -o rw,noatime $LOOPDEVICE $MOUNTPOINT
|
rm -rf $COREDIR/bin $COREDIR/dummy $COREDIR/mirror
|
||||||
|
$TOOLPATH/find $MOUNTPOINT -type d -depth ! -path "*core*" -exec rmdir {} \; 2>/dev/null
|
||||||
|
|
||||||
|
# Remove modules
|
||||||
|
for MOD in $MOUNTPOINT/* ; do
|
||||||
|
if [ -f "$MOD/remove" ]; then
|
||||||
|
log_print "Remove module: $MOD"
|
||||||
|
rm -rf $MOD
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Unmount, shrink, remount
|
||||||
|
if [ `umount $MOUNTPOINT >/dev/null 2>&1; echo $?` -eq 0 ]; then
|
||||||
|
$TOOLPATH/losetup -d $LOOPDEVICE
|
||||||
|
target_size_check $IMG
|
||||||
|
NEWDATASIZE=$(((curUsedM / 32 + 2) * 32))
|
||||||
|
if [ "$curSizeM" -gt "$NEWDATASIZE" ]; then
|
||||||
|
log_print "Shrinking $IMG to ${NEWDATASIZE}M..."
|
||||||
|
resize2fs $IMG ${NEWDATASIZE}M
|
||||||
|
fi
|
||||||
|
loopsetup $IMG
|
||||||
|
if [ ! -z "$LOOPDEVICE" ]; then
|
||||||
|
mount -t ext4 -o rw,noatime $LOOPDEVICE $MOUNTPOINT
|
||||||
|
fi
|
||||||
|
if [ `cat /proc/mounts | grep $MOUNTPOINT >/dev/null 2>&1; echo $?` -ne 0 ]; then
|
||||||
|
log_print "magisk.img mount failed, nothing to do :("
|
||||||
|
unblock
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
log_print "Preparing modules"
|
||||||
|
|
||||||
|
mkdir -p $DUMMDIR
|
||||||
|
mkdir -p $MIRRDIR/system
|
||||||
|
|
||||||
|
# Travel through all mods
|
||||||
|
for MOD in $MOUNTPOINT/* ; do
|
||||||
|
if [ -f "$MOD/auto_mount" -a -d "$MOD/system" -a ! -f "$MOD/disable" ]; then
|
||||||
|
(travel $MOD system)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Proper permissions for generated items
|
||||||
|
$TOOLPATH/find $DUMMDIR -type d -exec chmod 755 {} \;
|
||||||
|
$TOOLPATH/find $DUMMDIR -type f -exec chmod 644 {} \;
|
||||||
|
$TOOLPATH/find $DUMMDIR -exec chcon 'u:object_r:system_file:s0' {} \;
|
||||||
|
|
||||||
|
# linker(64), t*box, and app_process* are required if we need to dummy mount bin folder
|
||||||
|
if [ -f "$MOUNTINFO/dummy/system/bin" ]; then
|
||||||
|
rm -f $DUMMDIR/system/bin/linker* $DUMMDIR/system/bin/t*box $DUMMDIR/system/bin/app_process*
|
||||||
|
cd /system/bin
|
||||||
|
$TOOLPATH/cp -afc linker* t*box app_process* $DUMMDIR/system/bin/
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove crap folder
|
||||||
|
rm -rf $MOUNTPOINT/lost+found
|
||||||
|
|
||||||
|
# Start doing tasks
|
||||||
|
|
||||||
|
# Stage 1
|
||||||
|
log_print "Bind mount dummy system"
|
||||||
|
$TOOLPATH/find $MOUNTINFO/dummy -type f 2>/dev/null | while read ITEM ; do
|
||||||
|
TARGET=${ITEM#$MOUNTINFO/dummy}
|
||||||
|
ORIG=$DUMMDIR$TARGET
|
||||||
|
bind_mount $ORIG $TARGET
|
||||||
|
done
|
||||||
|
|
||||||
|
# Stage 2
|
||||||
|
log_print "Bind mount module items"
|
||||||
|
$TOOLPATH/find $MOUNTINFO/system -type f 2>/dev/null | while read ITEM ; do
|
||||||
|
TARGET=${ITEM#$MOUNTINFO}
|
||||||
|
ORIG=`cat $ITEM`$TARGET
|
||||||
|
bind_mount $ORIG $TARGET
|
||||||
|
rm -f $DUMMDIR${TARGET%/*}/.dummy 2>/dev/null
|
||||||
|
done
|
||||||
|
|
||||||
|
# Run scripts
|
||||||
|
run_scripts post-fs-data
|
||||||
|
|
||||||
|
# Bind hosts for Adblock apps
|
||||||
|
[ ! -f "$COREDIR/hosts" ] && $TOOLPATH/cp -afc /system/etc/hosts $COREDIR/hosts
|
||||||
|
log_print "Enabling systemless hosts file support"
|
||||||
|
bind_mount $COREDIR/hosts /system/etc/hosts
|
||||||
|
|
||||||
|
# Stage 3
|
||||||
|
log_print "Bind mount system mirror"
|
||||||
|
bind_mount /system $MIRRDIR/system
|
||||||
|
|
||||||
|
# Stage 4
|
||||||
|
log_print "Bind mount mirror items"
|
||||||
|
# Find all empty directores and dummy files, they should be mounted by original files in /system
|
||||||
|
TOOLPATH=/data/busybox $TOOLPATH/find $DUMMDIR -type d \
|
||||||
|
-exec sh -c '[ -z "$($TOOLPATH/ls -A $1)" ] && echo $1' -- {} \; \
|
||||||
|
-o \( -type f -size 0 -print \) | \
|
||||||
|
while read ITEM ; do
|
||||||
|
ORIG=${ITEM/dummy/mirror}
|
||||||
|
TARGET=${ITEM#$DUMMDIR}
|
||||||
|
bind_mount $ORIG $TARGET
|
||||||
|
done
|
||||||
|
|
||||||
|
# Restart post-fs-data, since data might be changed (multirom)
|
||||||
|
setprop magisk.restart_pfsd 1
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ `cat /proc/mounts | grep $MOUNTPOINT >/dev/null 2>&1; echo $?` -ne 0 ]; then
|
|
||||||
log_print "magisk.img mount failed, nothing to do :("
|
|
||||||
unblock
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove crap folder
|
|
||||||
rm -rf $MOUNTPOINT/lost+found
|
|
||||||
|
|
||||||
# Start doing tasks
|
|
||||||
|
|
||||||
# Stage 1
|
|
||||||
log_print "Bind mount dummy system"
|
|
||||||
find $TMPDIR/dummy -type f 2>/dev/null | while read ITEM ; do
|
|
||||||
TARGET=${ITEM#$TMPDIR/dummy}
|
|
||||||
ORIG=$DUMMDIR$TARGET
|
|
||||||
bind_mount $ORIG $TARGET
|
|
||||||
done
|
|
||||||
|
|
||||||
# Stage 2
|
|
||||||
log_print "Bind mount module items"
|
|
||||||
find $TMPDIR/system -type f 2>/dev/null | while read ITEM ; do
|
|
||||||
TARGET=${ITEM#$TMPDIR}
|
|
||||||
ORIG=`cat $ITEM`$TARGET
|
|
||||||
bind_mount $ORIG $TARGET
|
|
||||||
rm -f $DUMMDIR${TARGET%/*}/.dummy 2>/dev/null
|
|
||||||
done
|
|
||||||
|
|
||||||
# Run scripts
|
|
||||||
run_scripts post-fs-data
|
|
||||||
|
|
||||||
# Bind hosts for Adblock apps
|
|
||||||
[ ! -f "$COREDIR/hosts" ] && cp -afc /system/etc/hosts $COREDIR/hosts
|
|
||||||
log_print "Enabling systemless hosts file support"
|
|
||||||
bind_mount $COREDIR/hosts /system/etc/hosts
|
|
||||||
|
|
||||||
# Stage 3
|
|
||||||
log_print "Bind mount system mirror"
|
|
||||||
bind_mount /system $MIRRDIR/system
|
|
||||||
|
|
||||||
# Stage 4
|
|
||||||
log_print "Bind mount mirror items"
|
|
||||||
# Find all empty directores and dummy files, they should be mounted by original files in /system
|
|
||||||
find $DUMMDIR -type d -exec sh -c '[ -z "$(ls -A $1)" ] && echo $1' -- {} \; -o \( -type f -size 0 -print \) | while read ITEM ; do
|
|
||||||
ORIG=${ITEM/dummy/mirror}
|
|
||||||
TARGET=${ITEM#$DUMMDIR}
|
|
||||||
bind_mount $ORIG $TARGET
|
|
||||||
done
|
|
||||||
|
|
||||||
# All done
|
|
||||||
rm -rf $TMPDIR
|
|
||||||
|
|
||||||
unblock
|
unblock
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@ -423,7 +414,7 @@ case $1 in
|
|||||||
fi
|
fi
|
||||||
chmod 755 $COREDIR/magiskhide $COREDIR/magiskhide/*
|
chmod 755 $COREDIR/magiskhide $COREDIR/magiskhide/*
|
||||||
log_print "Starting Magisk Hide"
|
log_print "Starting Magisk Hide"
|
||||||
exec /data/magisk/magiskhide $COREDIR/magiskhide/hidelist > $HIDELOG
|
exec /data/magisk/magiskhide $COREDIR/magiskhide/hidelist
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
Loading…
Reference in New Issue
Block a user