Android-GSI Images mounten und modifizieren

Um vor der Installation ein Image zu modifizieren kann es auf Linux-Maschinen als Device gemountet werden.
Hierzu dem Script einen Namen geben und in einen Ordner zusammen mit dem Android-GSI.img (z.B. lineage_xxx_.img) packen. Dann mit …
# sudo bash Script-Name
… starten.
Warten.
Mit der Eingabe „e“ wird es lesbar (nur root) gemountet.
Jetzt können Veränderungen (als root) vorgenommen werden.

Zum Beispiel die Goggel verseuchten Apps durch Freie ersetzen.
Schaust du hier: Kill Apps

Dann wieder im Terminal
# sudo bash Script-Name
Und mit „a“ die Veränderungen in das originale Image schreiben und aushängen.
Have Fun!

#!/bin/bash

#Usage:
#bash sudo OpenImage.sh  [/path/to/system/image]

if [ "$(whoami)" != "root" ]; then
	echo  "You are not root!!!"
	echo "Usage:"
	echo "sudo bash OpenImage.sh /path/to/system/image"
	exit
fi

if [ ! -e "$1" ]; then
	echo "Error: No Image!"
	echo "/path/to/system/image Faulty or missing!"
	exit
fi

touch .Imagename && echo "$1" > .Imagename

echo "Type 'e' für mount image"
echo "Type 'a' für unmount image"
read run
echo "$1"

#set -ex

if [ "$run" = "e" ]; then
	#cleanups
	umount Image &> /dev/null

	echo "MOUNT"
	rm -Rf tmp Image
	mkdir -p Image tmp
	simg2img $1 s.img || cp $1 s.imgg
	e2fsck -n s.img > /dev/null
	if [ $? -eq 0 ]; then 
		echo "Image s.img okay"
		e2fsck -y -f s.img
		resize2fs s.img 3500M
		e2fsck -E unshare_blocks -y -f s.img
		mount -o loop,rw s.img Image
	fi

	e2fsck -n s.imgg > /dev/null
	if [ $? -eq 0 ]; then 
		echo "Image s.imgg okay"
		e2fsck -y -f s.img
		resize2fs s.imgg 3500M
		e2fsck -E unshare_blocks -y -f s.imgg
		mount -o loop,rw s.imgg Image
	fi
elif [ "$run" = "a" ]; then
	if [ ! -e Image/system/phh/secure ]; then
		echo "Do you want to remove 'superuser'? y/n"
		read
		if [ "${REPLY}" = "y" ]; then	
			touch Image/system/phh/secure
			rm Image/system/xbin/su
			rm Image/system/bin/phh-su
			rm Image/system/etc/init/su.rc
			rm Image/system/bin/phh-securize.sh
			rm -Rf Image/system/{app,priv-app}/me.phh.superuser/
		fi
	fi
		
	echo "UnMount"
	umount Image
	sleep 1
	
	echo "Write changes? y/n"
	read
	if [ "${REPLY}" != "y" ]; then exit; fi 
	e2fsck -n s.img > /dev/null
	if [ $? -eq 0 ]; then 
		e2fsck -f -y s.img || true
		resize2fs -M s.img
		sleep 1
		cp s.img $1
	fi
	e2fsck -n s.imgg > /dev/null
	if [ $? -eq 0 ]; then 
		e2fsck -f -y s.imgg || true
		resize2fs -M s.imgg
		sleep 1
		cp s.imgg $1
	fi
	echo ""
	echo "Copy to Mobil SDCard and restart to TRWP? y/n"
	read
	if [ "${REPLY}" = "y" ]; then
		DEVICES=$(adb devices | grep "device$" | sed -e "s|device||g")
		if [ "$DEVICES" = "" ]; then
			echo "No Devices over adb detected"
			echo "Stop. Now activate adb and continue."
			read
		fi
		echo ""
		echo "Detected $DEVICES on adb"
		echo ""
		adb push (cat .Imagename) /sdcard && adb reboot recovery
	fi
else
	exit
fi 

exit