You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
NanoDroid/mount-magisk

59 lines
1.2 KiB
Bash

#!/sbin/sh
is_mounted() {
if [ ! -z "$2" ]; then
cat /proc/mounts | grep $1 | grep $2, >/dev/null
else
cat /proc/mounts | grep $1 >/dev/null
fi
return $?
}
mount_image() {
if [ ! -d "$2" ]; then
mount -o rw,remount rootfs /
mkdir -p "$2" 2>/dev/null
[ ! -d "$2" ] && return 1
fi
if ! is_mounted "$2"; then
LOOPDEVICE=
for LOOP in 0 1 2 3 4 5 6 7; do
if ! is_mounted "$2"; then
LOOPDEVICE=/dev/block/loop$LOOP
[ -e $LOOPDEVICE ] || mknod $LOOPDEVICE b 7 $LOOP 2>/dev/null
losetup $LOOPDEVICE "$1" && mount -t ext4 -o loop $LOOPDEVICE "$2"
if is_mounted "$2"; then
echo "$LOOPDEVICE" > /tmp/loopdevice
break;
fi
fi
done
fi
}
mount_magisk () {
mount /data &>/dev/null
if [ -f /data/adb/magisk.img ]; then
mount_image /data/adb/magisk.img /magisk
elif [ -f /data/magisk.img ]; then
mount_image /data/magisk.img /magisk
fi
}
umount_magisk () {
umount /magisk
losetup -d $(cat /tmp/loopdevice)
rm /tmp/loopdevice
}
if (is_mounted /magisk); then
if [ -f /tmp/loopdevice ]; then
umount_magisk
else echo "Magisk is mounted, but not using mount-magisk"
echo "not unmounting Magisk"
fi
else mount_magisk
fi