Messaggi di avvio Android per il debug?


23

Sto cercando di capire se Android (ovvero Galaxy Nexus, Nexus S e / o Motorola Xoom) è dotato di una sorta di capacità per produrre un registro di "avvio". (un po 'come la schermata di avvio di Linux) Sarebbe estremamente utile capire fino a che punto il telefono arriva nelle fasi di avvio prima che si blocchi (come il bootloader del primo stadio, il bootloader principale, quindi il caricamento del kernel, ecc.). Qualcuno sa come abilitare il telefono a sputare questo file di registro o abilitare una modalità di avvio "dettagliata" (e stampare messaggi reali sul terminale del computer Linux a cui è collegato il telefono)?

Il mio telefono si blocca in un "ciclo di avvio" con la mia build modificata corrente e vorrei eseguire il debug, se possibile.

In alternativa, qualcuno è a conoscenza di eventuali risorse o tutorial utili che spiegano come "hackerare" facilmente il telefono per fare ciò (non si scherza con l'hardware)? O di qualsiasi forum in cui la mia domanda potrebbe essere stata posta ma in una forma più oscura?

Recentemente questo è stato un problema frustrante, quindi qualsiasi aiuto sarebbe molto apprezzato!


so che inizia a scrivere sul logcat molto presto, ma questo viene cancellato una volta riavviato. dovrebbe iniziare a scrivere non appena mostra l '"animazione di avvio" (o forse anche un po' prima).
Ryan Conrad,

2
come accederesti a logcat senza "adb"? Adb funziona solo quando il telefono è in uno stato stabile, il che contraddice l'intero punto immagino sul motivo per cui logcat esiste (chi se ne frega se il telefono si avvia correttamente, non c'è molto bisogno dello strumento).
9exceptionThrower9

adb è uno dei primi servizi che iniziano. se vedi l'animazione di avvio, adb è già in esecuzione. adb è disponibile anche quando ci si trova in modalità di ripristino.
Ryan Conrad,

Bene, non sono sicuro di vedere l'animazione di avvio di cui stai parlando. Dopo il simbolo "carica" ​​della batteria, il telefono si blocca sulla schermata di avvio con "Google" in bianco su di esso prima che si blocchi. Nessuna schermata di avvio "Android" successiva o animazioni di avvio. Quindi non credo che ADB
funzioni

Risposte:


14

Ci sono un paio di modi per farlo:

  • cat /proc/last_kmsg > /sdcard/last_kernel_message_log.txt
  • dmesg > /sdcard/kernel_boot_log.txt
  • collegare il cavo USB con lo smartphone spento. Quindi emetti il ​​comando adb logcatdal tuo cmd di Windows o dal tuo terminale Linux, si bloccherà in attesa che il dispositivo diventi online, ora accendi lo smartphone. Il logcat dovrebbe quindi iniziare a scorrere via.

Dal momento che hai espresso interesse a capire fino a che punto il telefono arriva nelle fasi di avvio prima che si blocchi , questi metodi dovrebbero aiutare. Il fatto è che devi essere abbastanza veloce per prendere il registro del kernel (i primi due metodi mostrati sopra).

Quello che vorrei fare è questo, sulla mia scatola di Arch Linux, due finestre di terminale, una per adb logcatl'altra, per afferrare il registro nel momento in cui Logcat inizia a scorrere via!

Modificare:

ATTENZIONE, ci sono differenze nell'uso adbe fastboot!

fastbootfunziona in modo diverso, viene utilizzato solo per eseguire il flashing delle immagini in partizioni specifiche ed è più legato al processo del caricatore di avvio, ovvero può comprendere il meccanismo del caricatore di avvio. Richiede inoltre che:

  • in Windows, privilegio "Amministratore" per eseguirlo
  • sotto Linux, privilegio 'root'

La ragione per cui lo richiede è perché ignora determinati input / output dell'hardware, e quindi non "parla" nel adbprotocollo, ma piuttosto "parla" direttamente con il bootloader. Qualcosa che non può essere fatto come un normale utente. Ecco l'aiuto per l'uso di fastboot.

$ sudo fastboot
usage: fastboot [ <option> ] <command>

commands:
  update <filename>                        reflash device from update.zip
  flashall                                 flash boot + recovery + system
  flash <partition> [ <filename> ]         write a file to a flash partition
  erase <partition>                        erase a flash partition
  getvar <variable>                        display a bootloader variable
  boot <kernel> [ <ramdisk> ]              download and boot kernel
  flash:raw boot <kernel> [ <ramdisk> ]    create bootimage and flash it
  devices                                  list all connected devices
  continue                                 continue with autoboot
  reboot                                   reboot device normally
  reboot-bootloader                        reboot device into bootloader
  help                                     show this help message

options:
  -w                                       erase userdata and cache
  -s <serial number>                       specify device serial number
  -p <product>                             specify product name
  -c <cmdline>                             override kernel commandline
  -i <vendor id>                           specify a custom USB vendor id
  -b <base_addr>                           specify a custom kernel base address
  -n <page size>                           specify the nand page size. default: 2048

Un noto l'utilizzo di fastbootè per lampeggiante per esempio, a lampeggiare un'immagine di ripristino: sudo fastboot flash recovery recovery.img, un altro è a lampeggiare direttamente un'immagine grezza, sudo fastboot flash system system.img. Per di più per il caso dello sviluppo del kernel, usando questo fastboot boot new_kernel, questo scarica temporaneamente un nuovo kernel e si avvia usando quello senza toccare l'avvio del bootloader.

C'è anche una limitazione sulla dimensione di un'immagine non elaborata che richiede il flashing, quando dico immagine non elaborata, mi riferisco a un file con .imgestensione, l'immagine non deve superare 128 Mb. (L' ho scoperto durante lo sviluppo di ics4blade, dopo che la compilazione è stata completata, system.img era 162Mb e ho provato a scaricarlo ma l'avvio rapido ha rifiutato! Per aggirare la limitazione, ho dovuto creare un file zip flashable CWM per farlo e aggirare esso! )

Presta attenzione e assicurati che la partizione sia corretta e ricontrolla e ricontrolla di nuovo, se necessario, allontanati dal computer, fai una pausa, torna di nuovo e ricontrolla di nuovo, questo è dove può andare terribilmente sbagliato, lampeggia il file sbagliato nella partizione sbagliata ... beh, fa spallucce


3
Questa è un'ottima idea, ma un problema ... adb funziona solo se il demone adb è in grado di rilevare il dispositivo. Se il telefono non si è avviato correttamente, adb non funziona. Quindi un "boot-loop", quando avresti bisogno di logcat, la maggior parte non funzionerebbe, e non è al momento come lo provo. L'unica cosa a cui hai accesso a livello di comando a cui non importa se il telefono si è avviato correttamente è "fastboot". Qual è un'alternativa in questo caso allora?
9exceptionThrower9

@ 9exceptionThrower9 ha modificato la mia risposta per includere il concetto di fastboot e per rispondere nel tuo commento, fastboot non funzionerà :)
t0mm13b

L'unica alternativa che mi viene in mente è, per l'avvio rapido, cancellare la partizione cachee data- non sono responsabile di nulla di spiacevole se procedete! E prova a eseguire nuovamente il flashing della ROM tramite CWM. Ancora meglio , dimentica il fastboot e usa CWM per cancellare sia la cache che i dati , sembra che il bootloop sia dovuto a una cache o dati borked ...
t0mm13b

Per quanto riguarda l'interesse, cosa hai fatto esattamente per farlo avviare - è una domanda cruciale e vorresti sapere quali passi hai fatto?
t0mm13b,

Ho modificato il kernel Android (maguro) per Galaxy Nexus, in particolare il file "socket.h" per sovrascrivere la registrazione INET con il progetto di ricerca FINS del mio team (che estrae i protocolli Internet nello spazio utenti per i ricercatori di rete). Dopo aver modificato questo file (solo poche righe), ho ricompilato il kernel con successo, ho inserito questo kernel nell'albero di build maguro di Android, ricostruito l'immagine del sistema Android, quindi ho mostrato i nuovi file di ripristino, avvio, sistema e userdata.img nel file telefono ...
9exceptionThrower9

0

Puoi usare LiveBoot. È nel Google Play Store. Farà proprio quello che stai chiedendo.


E se avessi il bootloop? C'è un modo per farlo con un cavo USB?
beppe9000,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.