Ich habe ein gerootetes HTC Hero und möchte dem adbd ermöglichen, beim Booten auf einen Port zu hören.
Ich habe einen Code ausprobiert, der hier gefunden wurde :
setprop service.adb.tcp.port 5555
stop adbd
start adbd
in einer Android-Shell und es funktioniert großartig.
Ich habe versucht, die Datei init.rc zu ändern . Ich habe den obigen Code in init.rc hinzugefügt und ihn mit den folgenden Befehlen durch die Originaldatei ersetzt:
adb push init.rc sdcard
adb shell
adb su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /
adb cp sdcard/init.rc /
Die Datei wurde erfolgreich ersetzt, aber wenn ich mein Telefon neu starte und versuche, eine Verbindung herzustellen:
adb connect <IP>:5555
die Verbindung wird nicht aufgebaut.
Irgendwelche Ideen?
(PS. Ich möchte nicht die remoteADB- Anwendung und einen Shell-Befehl wie verwenden am start -n ...
)
Der Grund, warum es nicht richtig funktioniert, ist folgender:
Das init.rc
Skript befindet sich in der RAMDisk, die an das Boot-Image angehängt ist.
Daher wird das init.rc
Skript, das bearbeitet und übertragen wurde, jetzt beim Neustart durch das eigene Skript des Boot-Images überschrieben - Änderungen gehen effektiv verloren!
Sie müssen das Boot-Image extrahieren, wobei jedes Boot-Image den Kernel und die RAMDisk enthält. Die dafür verfügbaren Tools finden Sie hier .
Beim Aufrufen des Skripts split_bootimg.pl
auf einem Boot-Image wird Folgendes neu erstellt:
Die beiden Dateien sind offensichtlich selbsterklärend. Um die Ramdisk zu extrahieren, erstellen Sie ein Verzeichnis namens RAMDisk und rufen Sie aus diesem Verzeichnis Folgendes auf: gzip -dc | cpio -i
, um die Verzeichnisstruktur wiederherzustellen, die in der RAMDisk verwendet wird, die beim Booten auf das Live-Dateisystem umgeschaltet wird. Darin ist die Datei mit relevanten Informationen init.rc
. Nun, das kann nach Herzenslust geändert werden.
Gehen Sie eine Verzeichnisebene zurück und geben Sie Folgendes aus - mkbootfs ***RAMDisk*** | gzip > my_custom_ramdisk.gz
.
Geben Sie dann Folgendes aus, um den ursprünglichen Kernel an das Boot-Image „anzuhängen“: mkbootimg -base 0x.... -kernel boot.kernel -ramdisk my_custom_ramdisk.gz -o my_custom_boot.img
.
An diesem Punkt wurde nun ein Boot-Image erstellt, dann muss dieses Boot-Image nun über geflasht werden fastboot flash boot my_custom_boot.img
.
Änderungen gehen beim Neustart verloren, da das Skript nicht richtig bearbeitet wurde, was das Extrahieren und Modifizieren und Neupacken des Boot-Images erforderte. Einmal neu gepackt und dann das Boot-Image erneut geflasht, sind die Änderungen dauerhaft.
Dies wird jedes Mal durchgeführt, wenn die Änderungen erforderlich sind.
Ersetzen Sie "service" durch "persist", um es beim Neustart beizubehalten:
setprop persist.adb.tcp.port 5555
Tudor Ilisoi
Ruben O. Chiavone