Check block dev ro status

magisk is shared object, use static busybox instead
This commit is contained in:
vvb2060 2020-12-19 14:12:12 -08:00 committed by topjohnwu
parent 13a8820603
commit 6ce9225f52
2 changed files with 28 additions and 13 deletions

View File

@ -30,10 +30,16 @@ direct_install() {
rm -f $MAGISKBIN/new-boot.img rm -f $MAGISKBIN/new-boot.img
echo "- Flashing new boot image" echo "- Flashing new boot image"
flash_image $1/new-boot.img $2 flash_image $1/new-boot.img $2
if [ $? -ne 0 ]; then case $? in
1)
echo "! Insufficient partition size" echo "! Insufficient partition size"
return 1 return 1
fi ;;
2)
echo "! $2 is read only"
return 2
;;
esac
rm -rf $1 rm -rf $1
return 0 return 0
} }

View File

@ -388,8 +388,6 @@ find_boot_image() {
} }
flash_image() { flash_image() {
# Make sure all blocks are writable
$MAGISKBIN/magisk --unlock-blocks 2>/dev/null
case "$1" in case "$1" in
*.gz) CMD1="$MAGISKBIN/magiskboot decompress '$1' - 2>/dev/null";; *.gz) CMD1="$MAGISKBIN/magiskboot decompress '$1' - 2>/dev/null";;
*) CMD1="cat '$1'";; *) CMD1="cat '$1'";;
@ -401,16 +399,19 @@ flash_image() {
CMD2="cat -" CMD2="cat -"
fi fi
if [ -b "$2" ]; then if [ -b "$2" ]; then
local img_sz=`stat -c '%s' "$1"` local img_sz=$(stat -c '%s' "$1")
local blk_sz=`blockdev --getsize64 "$2"` local blk_sz=$(blockdev --getsize64 "$2")
[ $img_sz -gt $blk_sz ] && return 1 [ "$img_sz" -gt "$blk_sz" ] && return 1
eval $CMD1 | eval $CMD2 | cat - /dev/zero > "$2" 2>/dev/null blockdev --setrw "$2"
local blk_ro=$(blockdev --getro "$2")
[ "$blk_ro" -eq 1 ] && return 2
eval "$CMD1" | eval "$CMD2" | cat - /dev/zero > "$2" 2>/dev/null
elif [ -c "$2" ]; then elif [ -c "$2" ]; then
flash_eraseall "$2" >&2 flash_eraseall "$2" >&2
eval $CMD1 | eval $CMD2 | nandwrite -p "$2" - >&2 eval "$CMD1" | eval "$CMD2" | nandwrite -p "$2" - >&2
else else
ui_print "- Not block or char device, storing image" ui_print "- Not block or char device, storing image"
eval $CMD1 | eval $CMD2 > "$2" 2>/dev/null eval "$CMD1" | eval "$CMD2" > "$2" 2>/dev/null
fi fi
return 0 return 0
} }
@ -445,7 +446,15 @@ install_magisk() {
# Restore the original boot partition path # Restore the original boot partition path
[ "$BOOTNAND" ] && BOOTIMAGE=$BOOTNAND [ "$BOOTNAND" ] && BOOTIMAGE=$BOOTNAND
flash_image new-boot.img "$BOOTIMAGE" || abort "! Insufficient partition size" flash_image new-boot.img "$BOOTIMAGE"
case $? in
1)
abort "! Insufficient partition size"
;;
2)
abort "! $BOOTIMAGE is read only"
;;
esac
./magiskboot cleanup ./magiskboot cleanup
rm -f new-boot.img rm -f new-boot.img