Protokolle abrufen, bevor logcat in einem Bootloop gestartet wurde

Ich flashe eine modifizierte Version von aosp und die Boot-Loops des Geräts. Das Problem ist, dass "logcat" auf dem Telefon nie läuft, was bedeutet, dass das Problem früher aufgetreten ist.

Gibt es also eine Möglichkeit, auf Protokolldateien zuzugreifen, die generiert wurden, seit die Geräte den Start initiiert haben? Ich möchte nur die Wurzel des Fehlers kennen, den ich verursacht habe.

Die Änderungen, die ich vornehme, betreffen insbesondere die Laufzeit, und ich flashe die folgenden von osp generierten Images auf das Gerät: fastboot flash cache cache.img fastboot flash system system.img fastboot flash userdata userdata.img fastboot flash boot boot.img

Ich verwende ein Nexus 6 auf Android Marshmallow (die meisten Lagercodes von 6.0.1_r31..r33) und das Boot-Image ist permissive mit deaktivierter Verity.

Antworten (1)

Sie können Kernel-Protokolle während des Bootens über den seriellen USB-Anschluss umleiten.

Wenn das Telefon nicht einmal in einen stabilen Zustand hochfährt, in dem die ADB-Befehle verwendet werden können, könnte man daran interessiert sein, die Kernel-Nachrichten an einige Stellen umzuleiten, an denen sie gesehen werden können. Dies dient dazu, den Befehl "console=" für den Kernel zu nutzen.

Je nach Gerät kann es unterschiedliche Ports geben, an die die Nachrichten umgeleitet werden können. Wenn die serielle Schnittstelle am Gerät aktiviert ist, kann man die serielle Schnittstelle verwenden. Auf MSM-Chips gibt es einen UART-Port, der verwendet werden kann. Dazu kann man "console=ttyMSM2,115200n8" verwenden und die Verfügbarkeit des Ports in "/dev" überprüfen, wenn man ihn nutzen möchte.

Derzeit besteht die Möglichkeit, auch die seriellen USB-Anschlüsse zu verwenden. Vielleicht möchten Sie überprüfen, ob sie auf dem Gerät funktionieren. Der serielle USB-Port ist ein serieller Software-Port, der über die USB-Schnittstelle emuliert wird. Es hat oft die Namen "ttyUSB" oder "ttyHSUSB*". Wenn auf Android-Geräten "ttyUSB*" angezeigt wird, können dies Ports sein, die von den USB-Gadget-Treibern (/kernel/drivers/usb/gadget) bereitgestellt werden, die als Konsole verwendet werden könnten (add console =ttyUSB0,9600n8).Wenn man "ttyHSUSB*" sieht, können sie etwas anders sein. Diese können von USB-Treibern der MSM-Plattform bereitgestellt werden, und einige unterstützen die "Konsole" möglicherweise noch nicht. Für neugierige Leser, um zu sein Als Konsole verwendet, muss sich ein Gerätetreiber als Konsolenanbieter registrieren, indem er register_console in kernel/printk.c aufruft, und er muss einige Rückrufe für printk bereitstellen, um Kernel-Nachrichten zu schreiben dies für den Gerätetreiber, der als Konsole verwendet werden soll.*

Wikidot hat einen informativen Artikel darüber http://bootloader.wikidot.com/linux:android:kmsg