diff --git a/README.md b/README.md
index 3029579..7d1dfc2 100644
--- a/README.md
+++ b/README.md
@@ -234,11 +234,6 @@ rootAVD.bat %LOCALAPPDATA%\Android\Sdk\system-images\android-31\google_apis_play
* The script also detects if there is already a patched Boot.img present
* This feature lets you also update and switch between Magisk Versions
* Updating a patched ramdisk will delete the overlay.d folder, all mods are gone!
-* All the ramdisk hacks like fstab, boot scripts and kernel+module updates, can not be applied,
- * (I don't know a way to Pause the patching process from the Magisk APK)
- * those hacks can be done, the classical way via the script, with the working and patched ramdisk
-* If a not proper working ramdisk prevents the Magisk APK from beeing installed and starting, use the toggleRamdisk Argument to stack your patched,\
-but not yet 100% working ramdisk away, boot the AVD with the Stock ramdisk, toggleRamdisk back, and run the script with the FAKEBOOTIMG Argument
### 2 Ways to boot the AVD into Safe Mode
* 1st Way - If the AVD still boots normal:
@@ -344,6 +339,7 @@ but not yet 100% working ramdisk away, boot the AVD with the Stock ramdisk, togg
### Change Logs
#### [November 2022]
+* [General] - Bug fixes
* [General] - Updated to Magisk Stable Version 25.2
* [General] - Added FAKEBOOTIMG Use Case Examples as Gif
* [rootAVD.sh] - Added support for adding the stub.apk if present
diff --git a/rootAVD.sh b/rootAVD.sh
index 6c82835..64b19e7 100755
--- a/rootAVD.sh
+++ b/rootAVD.sh
@@ -156,6 +156,7 @@ api_level_arch_detect() {
export ABI
export API
export FIRSTAPI
+ export AVERSION
}
abort_script() {
@@ -209,6 +210,7 @@ detect_ramdisk_compression_method() {
METHOD="gzip"
RAMDISK_GZ=true
mv $RDF $RDF$ENDG
+ #cp $RDF $RDF$ENDG
COMPRESS_SIGN="$METHOD_GZ"
fi
@@ -246,7 +248,8 @@ create_fake_boot_img() {
printf "\x00\x00\x00\x00\x00\x00\x00\x00" >> $FBHI
printf "\x00\x00\x00\x00\x00\x08\x00\x00" >> $FBHI # 00080000 (Pagesize 2048)
echo "[!] Only a minimal header is required for Magisk to repack the ramdisk"
- cp $RDF $CPIO
+ mv $RDF $CPIO
+
echo "[*] repacking ramdisk.img into $FBI"
$BASEDIR/magiskboot repack -n $FBHI $FBI > /dev/null 2>&1
InstallMagiskTemporarily
@@ -263,14 +266,15 @@ unpack_patched_ramdisk_from_fake_boot_img() {
break
done
echo "[*] unpacking latest $MagiskPatched"
- $BASEDIR/magiskboot unpack -n $MagiskPatched > /dev/null 2>&1
+ $BASEDIR/magiskboot unpack $MagiskPatched > /dev/null 2>&1
echo "[-] deleting all magisk_patched files"
for file in `ls -tu $SDCARD/*magisk_patched*`; do
rm -f $file
- done
- mv $CPIO "ramdiskpatched4AVD.img"
+ done
+
else
echo "[!] No magisk_patched file could be found!"
+ abort_script
fi
}
@@ -606,6 +610,13 @@ CopyMagiskToAVD() {
fi
ADBWORKDIR=/data/data/com.android.shell
+ adb shell "cd $ADBWORKDIR" 2>/dev/null
+
+ if [ "$?" != "0" ]; then
+ echo "[!] $ADBWORKDIR doesn't exist, switching to tmp'"
+ ADBWORKDIR=/data/local/tmp
+ fi
+
ADBBASEDIR=$ADBWORKDIR/Magisk
echo "[-] In any AVD via ADB, you can execute code without root in $ADBWORKDIR"
@@ -1181,20 +1192,7 @@ mkdir -p $TMP/ramdisk
cd $TMP/ramdisk > /dev/null
$BASEDIR/busybox cpio -F $CPIO -i *lib* > /dev/null 2>&1
- #../../busybox cpio -F ../../ramdisk.cpio -i *lib*
- #if [ -e $TMP/ramdisk/.backup ]; then
- #$BASEDIR/magiskboot cpio $CPIO "extract .backup" > /dev/null 2>&1
- #chmod 750 .backup/ -R
- #rm .backup/ -R
- #$BASEDIR/magiskboot cpio $CPIO "extract lib" > /dev/null 2>&1
- #$BASEDIR/magiskboot cpio $CPIO "rm -r .backup" > /dev/null 2>&1
- #magiskboot cpio ../../ramdisk.cpio "rm -r .backup"
- #$BASEDIR/busybox cpio -F $CPIO -i > /dev/null 2>&1
- #../../magiskboot cpio ../../ramdisk.cpio "extract lib*"
- #../../magiskboot cpio ../../ramdisk.cpio "rm -r .backup"
- #../../busybox cpio -F ../../ramdisk.cpio -t
- ../../magiskboot cpio ../../ramdisk.cpio "rm -r /lib/modules/*"
- #fi
+ ../../magiskboot cpio ../../ramdisk.cpio "rm -r /lib/modules/*"
ls -la
cd - > /dev/null
exit
@@ -1300,7 +1298,7 @@ decompress_ramdisk(){
else
echo "[*] After decompressing ramdisk.img, magiskboot will work"
$RAMDISK_GZ && RDF=$RDF$ENDG
- ./magiskboot decompress $RDF $CPIO
+ $BASEDIR/magiskboot decompress $RDF $CPIO
fi
#update_lib_modules
}
@@ -1312,7 +1310,7 @@ apply_ramdisk_hacks() {
# cp the read-only fstab.ranchu from vendor partition and add usb:auto for SD devices
# kernel musst have Mass-Storage + SCSI Support enabled to create /dev/block/sd* nodes
- echo "[!] PATCHFSTAB=$PATCHFSTAB"
+ #echo "[!] PATCHFSTAB=$PATCHFSTAB"
if ("$PATCHFSTAB"); then
echo "[-] pulling fstab.ranchu from AVD"
cp /system/vendor/etc/fstab.ranchu $(pwd)
@@ -1320,20 +1318,18 @@ apply_ramdisk_hacks() {
echo "/devices/*/block/sd* auto auto defaults voldmanaged=usb:auto" >> fstab.ranchu
#echo "/devices/*/block/loop7 auto auto defaults voldmanaged=sdcard:auto" >> fstab.ranchu
#echo "/devices/1-* auto auto defaults voldmanaged=usb:auto" >> fstab.ranchu
- # cat fstab.ranchu
- #/system/vendor/etc/fstab.f2fs.hi3650
- ./magiskboot cpio ramdisk.cpio \
+ $BASEDIR/magiskboot cpio ramdisk.cpio \
"mkdir 0755 overlay.d/vendor" \
"mkdir 0755 overlay.d/vendor/etc" \
"add 0644 overlay.d/vendor/etc/fstab.ranchu fstab.ranchu"
echo "[-] overlay adding complete"
- echo "[-] jumping back to patching ramdisk for magisk init"
- else
- echo "[!] Skipping fstab.ranchu patch with /dev/block/sda"
- echo "[?] If you want fstab.ranchu patched, Call rootAVD with PATCHFSTAB"
+ #echo "[-] jumping back to patching ramdisk for magisk init"
+ #else
+ #echo "[!] Skipping fstab.ranchu patch with /dev/block/sda"
+ #echo "[?] If you want fstab.ranchu patched, Call rootAVD with PATCHFSTAB"
fi
- echo "[!] AddRCscripts=$AddRCscripts"
+ #echo "[!] AddRCscripts=$AddRCscripts"
if ("$AddRCscripts"); then
echo "[*] adding *.rc files to ramdisk"
#for f in *.rc; do
@@ -1344,26 +1340,40 @@ apply_ramdisk_hacks() {
for f in *.rc; do
echo "$f" > $CSTRC
done
- ./magiskboot cpio ramdisk.cpio "add 0755 overlay.d/$CSTRC $CSTRC"
+ $BASEDIR/magiskboot cpio ramdisk.cpio "add 0755 overlay.d/$CSTRC $CSTRC"
echo "[-] overlay adding complete"
- echo "[-] jumping back to patching ramdisk for magisk init"
- else
- echo "[!] Skip adding *.rc scripts into ramdisk.img/sbin/*.rc"
- echo "[?] If you want *.rc scripts added into ramdisk.img/sbin/*.rc, Call rootAVD with AddRCscripts"
+ #echo "[-] jumping back to patching ramdisk for magisk init"
+ #else
+ #echo "[!] Skip adding *.rc scripts into ramdisk.img/sbin/*.rc"
+ #echo "[?] If you want *.rc scripts added into ramdisk.img/sbin/*.rc, Call rootAVD with AddRCscripts"
fi
#$PATCHFSTAB && SKIPOVERLAYD="#" || SKIPOVERLAYD=""
update_lib_modules
}
+verify_ramdisk_origin() {
+ echo "[*] Verifying Boot Image Build Date"
+ local property=ro.bootimage.build.date.utc
+ BUILDDATEAVD=$(getprop $property)
+ echo "[-] Boot Image Build Date AVD=$BUILDDATEAVD"
+ BUILDDATERDF=$(cat $CPIO | grep -m 1 $property | cut -f 2 -d "=")
+ if [ "$BUILDDATERDF" != "" ]; then
+ echo "[-] Boot Image Build Date Ramdisk=$BUILDDATERDF"
+ if [ "$BUILDDATEAVD" == "$BUILDDATERDF" ]; then
+ echo "[!] Ramdisk is probably from this AVD"
+ else
+ echo "[!] Ramdisk is probably NOT from this AVD"
+ fi
+ fi
+}
+
test_ramdisk_patch_status(){
- echo "[-] Test patch status and do restore"
- echo "[-] Checking ramdisk status"
if [ -e ramdisk.cpio ]; then
- ./magiskboot cpio ramdisk.cpio test 2>/dev/null
+ $BASEDIR/magiskboot cpio ramdisk.cpio test 2>/dev/null
STATUS=$?
- echo "[-] STATUS=$STATUS"
+ echo "[-] Checking ramdisk STATUS=$STATUS"
else
echo "[-] Stock A only system-as-root"
STATUS=0
@@ -1373,8 +1383,9 @@ test_ramdisk_patch_status(){
case $((STATUS & 3)) in
0 ) # Stock boot
echo "[-] Stock boot image detected"
- SHA1=`./magiskboot sha1 ramdisk.cpio 2>/dev/null`
- cp -af ramdisk.cpio ramdisk.cpio.orig 2>/dev/null
+ SHA1=`$BASEDIR/magiskboot sha1 ramdisk.cpio 2>/dev/null`
+ cp -af $CPIO $CPIOORIG 2>/dev/null
+ verify_ramdisk_origin
;;
1 ) # Magisk patched
@@ -1414,11 +1425,11 @@ patching_ramdisk(){
# Compress to save precious ramdisk space
if $IS32BITONLY || ! $IS64BITONLY ; then
- ./magiskboot compress=xz magisk32 magisk32.xz
+ $BASEDIR/magiskboot compress=xz magisk32 magisk32.xz
fi
if $IS64BITONLY || ! $IS32BITONLY ; then
- ./magiskboot compress=xz magisk64 magisk64.xz
+ $BASEDIR/magiskboot compress=xz magisk64 magisk64.xz
fi
$IS64BITONLY && SKIP32="#" || SKIP32=""
@@ -1426,7 +1437,7 @@ patching_ramdisk(){
if $STUBAPK; then
echo "[!] stub.apk is present, compress and add it to ramdisk"
- ./magiskboot compress=xz stub.apk stub.xz
+ $BASEDIR/magiskboot compress=xz stub.apk stub.xz
fi
$STUBAPK && SKIPSTUB="" || SKIPSTUB="#"
@@ -1434,14 +1445,14 @@ patching_ramdisk(){
# Here gets the ramdisk.img patched with the magisk su files and stuff
echo "[*] adding overlay.d/sbin folders to ramdisk"
- ./magiskboot cpio ramdisk.cpio \
+ $BASEDIR/magiskboot cpio ramdisk.cpio \
"mkdir 0750 overlay.d" \
"mkdir 0750 overlay.d/sbin"
apply_ramdisk_hacks
echo "[!] patching the ramdisk with Magisk Init"
- ./magiskboot cpio ramdisk.cpio \
+ $BASEDIR/magiskboot cpio ramdisk.cpio \
"add 0750 init magiskinit" \
"$SKIP32 add 0644 overlay.d/sbin/magisk32.xz magisk32.xz" \
"$SKIP64 add 0644 overlay.d/sbin/magisk64.xz magisk64.xz" \
@@ -1466,17 +1477,39 @@ rename_copy_magisk() {
repacking_ramdisk(){
if [ $((STATUS & 4)) -ne 0 ]; then
echo "[!] Compressing ramdisk before repacking it"
- ./magiskboot cpio ramdisk.cpio compress
+ $BASEDIR/magiskboot cpio ramdisk.cpio compress
fi
echo "[*] repacking back to ramdisk.img format"
# Rename and compress ramdisk.cpio back to ramdiskpatched4AVD.img
- ./magiskboot compress=$METHOD "ramdisk.cpio" "ramdiskpatched4AVD.img"
+ $BASEDIR/magiskboot compress=$METHOD "ramdisk.cpio" "ramdiskpatched4AVD.img"
}
strip_html_links() {
- sed -i -e 's//<\/a>\n/g' "$1"
- sed -i -n '/>Update kernel to builds/p' "$1"
+ sed -i -e 's//<\/a>\n/g' "$1"
+}
+strip_kernel_builds() {
+ sed -i -n '/>Update kernel to builds/p' "$1"
+}
+strip_next_pages() {
+ sed -n '/>Next/p' "$1"
+}
+find_next_pages() {
+ local URL="$2"
+ local NEXTPAGESRC=""
+ local TMPHTML="tmp.html"
+ rm -rf $TMPHTML
+ NEXTPAGESRC=$(strip_next_pages $1)
+
+ echo "[-] Find Next Page(s)"
+ while [[ "$NEXTPAGESRC" != "" ]]; do
+ NEXTPAGESRC=$(echo $NEXTPAGESRC | sed -e 's/.*href=\"/\1/' -e 's/\">Next.*//')
+ #echo $NEXTPAGESRC
+ DownLoadFile $URL $NEXTPAGESRC $TMPHTML
+ strip_html_links $TMPHTML
+ cat $TMPHTML >> $1
+ NEXTPAGESRC=$(strip_next_pages $TMPHTML)
+ done
}
update_lib_modules() {
@@ -1489,10 +1522,28 @@ update_lib_modules() {
fi
local unameR=$(uname -r)
local majmin=${unameR%.*}
+ #majmin=5.15
local installedbuild=${unameR##*ab}
+
+ echo "[*] Fetching Kernel Data:"
+ echo "[-] Android: $AVERSION"
+ echo "[-] Arch: $KERNEL_ARCH"
+ echo "[-] Uname: $unameR"
+ echo "[-] Version: $majmin"
+ echo "[-] Build Version: $installedbuild"
+
local URL="https://android.googlesource.com"
- local KERSRC="/kernel/prebuilts/$majmin/$KERNEL_ARCH/+log/refs/heads/master"
- local MODSRC="/kernel/prebuilts/common-modules/virtual-device/$majmin/$KERNEL_ARCH/+log/refs/heads/master"
+ #local TAG="android$AVERSION-mainline-sdkext-release"
+ local TAG="android$AVERSION-gsi"
+ #local TAG="master"
+ local KERSRC="/kernel/prebuilts/$majmin/$KERNEL_ARCH/+log/refs/heads/$TAG"
+ #local KERSRC="/platform/prebuilts/qemu-kernel/+log/refs/heads/$TAG"
+ #https://android.googlesource.com/platform/prebuilts/qemu-kernel/+log/refs/heads/android11-gsi
+ #https://android.googlesource.com/platform/prebuilts/qemu-kernel/+/refs/heads/android11-gsi
+ #local KERSRC="/kernel/prebuilts/$majmin/$KERNEL_ARCH/+log/refs/heads/android$AVERSION-mainline-sdkext-release"
+
+ local MODSRC="/kernel/prebuilts/common-modules/virtual-device/$majmin/$KERNEL_ARCH/+log/refs/heads/$TAG"
+ #local MODSRC="/kernel/prebuilts/common-modules/virtual-device/$majmin/$KERNEL_ARCH/+log/refs/heads/android$AVERSION-mainline-sdkext-release"
local KERPREMASHTML="kernelprebuiltsmaster.html"
local KERDST="prebuiltkernel.tar.gz"
local MODDST="prebuiltmodules.tar.gz"
@@ -1510,12 +1561,17 @@ update_lib_modules() {
local ker_line_cnt=""
local mod_line_cnt=""
local i=""
+
DownLoadFile $URL $KERSRC $KERPREMASHTML
- DownLoadFile $URL $MODSRC $MODPREMASHTML
-
- strip_html_links $KERPREMASHTML
+ strip_html_links $KERPREMASHTML
+ find_next_pages $KERPREMASHTML $URL
+ strip_kernel_builds $KERPREMASHTML
+
+ DownLoadFile $URL $MODSRC $MODPREMASHTML
strip_html_links $MODPREMASHTML
+ find_next_pages $MODPREMASHTML $URL
+ strip_kernel_builds $MODPREMASHTML
ker_line_cnt=$(sed -n '$=' $KERPREMASHTML)
mod_line_cnt=$(sed -n '$=' $MODPREMASHTML)
@@ -1533,11 +1589,11 @@ update_lib_modules() {
echo "[*] Find common Build Versions"
while read line; do
- BUILDVER=$(echo $line | sed -e 's/<[^>]*>//g')
- grep -e ">$BUILDVER<" -F $FILETOSTRIP >> $TMPSTRIPFILE
- if [[ "$?" == "0" ]]; then
- echo $line >> $TMPREADFILE
- fi
+ BUILDVER=$(echo $line | sed -e 's/<[^>]*>//g')
+ grep -e ">$BUILDVER<" -F $FILETOSTRIP >> $TMPSTRIPFILE
+ if [[ "$?" == "0" ]]; then
+ echo $line >> $TMPREADFILE
+ fi
done < $FILETOREAD
mv -f $TMPREADFILE $FILETOREAD
@@ -2209,7 +2265,7 @@ InstallMagiskToAVD() {
get_flags
copyARCHfiles
- $ENVFIXTASK && construct_environment
+ #$ENVFIXTASK && construct_environment
if [ "$DERIVATE" == "BlueStacks" ]; then
GetBlueStacksRamdisk
@@ -2217,10 +2273,12 @@ InstallMagiskToAVD() {
if $INEMULATOR; then
detect_ramdisk_compression_method
+ decompress_ramdisk
if $FAKEBOOTIMG; then
process_fake_boot_img
- else
- decompress_ramdisk
+ fi
+ #else
+ #decompress_ramdisk
test_ramdisk_patch_status
if [ "$DERIVATE" == "BlueStacks" ]; then
InstallMagiskIntoBlueStacksRamdisk
@@ -2232,7 +2290,7 @@ InstallMagiskToAVD() {
fi
fi
repacking_ramdisk
- fi
+ #fi
rename_copy_magisk
fi