Messages de démarrage Android pour le débogage?

23

J'essaie de savoir si Android (c'est-à-dire Galaxy Nexus, Nexus S et / ou Motorola Xoom) est doté d'une sorte de capacité à produire un journal de «démarrage». (un peu comme l'écran de démarrage de Linux) Il serait extrêmement utile de déterminer jusqu'où son téléphone se trouve dans les étapes de démarrage avant de se bloquer (comme le chargeur de démarrage de premier étage, le chargeur de démarrage principal, puis le chargement du noyau, etc.). Quelqu'un sait-il comment activer le téléphone pour cracher ce fichier journal ou activer un mode de démarrage "détaillé" (et imprimer les messages réels sur le terminal de l'ordinateur Linux auquel vous avez connecté le téléphone)?

Mon téléphone est bloqué dans une "boucle de démarrage" avec ma version modifiée actuelle et je voudrais le déboguer si possible.

Alternativement, n'importe qui connaît des ressources utiles ou des tutoriels qui expliquent comment "pirater" facilement le téléphone pour ce faire (pas de problème avec le matériel)? Ou de tout forum où ma question a pu être posée mais sous une forme plus obscure?

Cela a été un problème frustrant récemment, donc toute aide serait grandement appréciée!

9exceptionThrower9
la source
je sais qu'il commence à écrire dans le logcat très tôt, mais cela est effacé une fois qu'il redémarre. il devrait commencer à écrire dès qu'il affiche "l'animation de démarrage" (ou peut-être même un peu plus tôt).
Ryan Conrad
2
comment accéderiez-vous à logcat sans "adb"? Adb ne fonctionne que lorsque le téléphone est dans un état stable, ce qui contredit tout le point, je suppose, sur la raison pour laquelle logcat existe (peu importe si le téléphone démarre correctement, pas besoin de l'outil).
9exceptionThrower9
adb est l'un des premiers services à démarrer. si vous voyez l'animation de démarrage, adb est déjà en cours d'exécution. adb est même disponible lorsque vous êtes en mode de récupération.
Ryan Conrad
Eh bien, je ne suis pas sûr de voir l'animation de démarrage dont vous parlez. Après le symbole "charge" de la batterie, le téléphone se bloque sur l'écran de démarrage avec "Google" en blanc dessus avant de se bloquer. Aucun écran de démarrage "Android" après cela, ni aucune animation de démarrage. Donc je ne pense pas que la BAD fonctionne encore ...
9exceptionThrower9

Réponses:

14

Il y a plusieurs façons de procéder:

  • cat /proc/last_kmsg > /sdcard/last_kernel_message_log.txt
  • dmesg > /sdcard/kernel_boot_log.txt
  • branchez le câble USB avec le smartphone éteint. Ensuite, exécutez la commande à adb logcatpartir de votre terminal Windows cmd ou Linux, elle attendra que l'appareil soit mis en ligne, puis allumez le smartphone. Le logcat devrait alors commencer à défiler.

Étant donné que vous avez exprimé votre intérêt à déterminer jusqu'où le téléphone se trouve dans les étapes de démarrage avant qu'il ne se bloque , ces méthodes devraient vous aider. La chose est que vous devez être assez rapide pour récupérer le journal du noyau (les deux premières méthodes présentées ci-dessus).

Ce que je ferais, c'est que, sur ma boîte Arch Linux, deux fenêtres de terminal, l'une pour adb logcatl'autre, pour récupérer le journal dès que logcat commence à défiler!

Modifier:

ATTENTION, il y a des différences avec adbet fastboot!

fastbootfonctionne différemment, il n'est utilisé que pour flasher des images dans des partitions spécifiées et est plus lié au processus du chargeur de démarrage, c'est-à-dire qu'il peut comprendre le mécanisme du chargeur de démarrage. Cela nécessite également que:

  • sous Windows, privilège "Administrateur" pour l'exécuter
  • sous Linux, privilège 'root'

La raison pour laquelle il l'exige est parce qu'il contourne certaines entrées / sorties du matériel et, par conséquent, ne "parle" pas dans le adbprotocole, il s'agit plutôt de "parler" directement au chargeur de démarrage. Quelque chose qui ne peut pas être fait en tant qu'utilisateur normal. Voici l'aide à l'utilisation de 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

A-usage bien connu de fastbootest pour flasher par exemple, à clignoter une image de récupération: sudo fastboot flash recovery recovery.img, une autre est à clignoter directement une image brute, sudo fastboot flash system system.img. Pour plus d'informations sur le cas du développement du noyau, en utilisant ceci fastboot boot new_kernel, cela télécharge temporairement un nouveau noyau et démarre en utilisant cela sans toucher au démarrage du chargeur de démarrage.

Il y a aussi une limitation sur la taille d'une image brute qui nécessite d'être flashée, quand je dis image brute, je fais référence à un fichier qui a une .imgextension, l'image ne doit pas dépasser 128 Mo. ( J'ai découvert cela lors du développement d'ics4blade, une fois la construction terminée, le system.img était de 162 Mo, et j'ai essayé de le flasher mais fastboot a refusé! Pour contourner la limitation, a dû créer un fichier zip flashable CWM pour ce faire et contourner ça! )

Soyez prudent et assurez-vous que la partition est correcte et revérifiez et revérifiez si nécessaire, éloignez-vous de l'ordinateur, faites une pause, revenez et revérifiez à nouveau, c'est là que cela peut mal tourner, flasher le mauvais fichier dans la mauvaise partition ... et hausse les épaules

t0mm13b
la source
3
C'est une excellente idée, mais un problème ... adb ne fonctionne que si le démon adb peut détecter le périphérique. Si le téléphone n'a pas démarré correctement, adb ne fonctionne pas. Donc une "boucle de démarrage", quand vous auriez le plus besoin de logcat ne fonctionnerait pas, et ce n'est pas le cas pour le moment. La seule chose à laquelle vous avez accès sur le plan des commandes qui ne se soucie pas si le téléphone a démarré avec succès est "fastboot". Quelle est alors une alternative dans ce cas?
9exceptionThrower9
@ 9exceptionThrower9 a modifié ma réponse pour inclure le concept de fastboot et pour répondre dans votre commentaire, fastboot ne fonctionnera pas :)
t0mm13b
La seule alternative à laquelle je peux penser est d'effacer fastboot cacheet la datapartition - je ne suis responsable de rien si vous continuez! Et essayez de flasher à nouveau la ROM via CWM. Encore mieux , oubliez fastboot et utilisez CWM pour effacer à la fois le cache et les données , il semble que le bootloop soit dû à un cache ou à des données
borked
Pour votre intérêt, qu'avez -vous fait exactement pour l'amener à bootloop - c'est une question cruciale et vous souhaitez savoir quelles mesures vous avez prises?
t0mm13b
J'ai modifié le noyau Android (maguro) pour Galaxy Nexus, en particulier le fichier "socket.h" pour remplacer l'enregistrement INET avec le projet de recherche de mon équipe FINS (qui extrait les protocoles Internet dans l'espace utilisateur pour les chercheurs du réseau). Après avoir modifié ce fichier (seulement quelques lignes), j'ai recompilé le noyau avec succès, inséré ce noyau dans l'arborescence de construction d'Android maguro, reconstruit l'image système Android, puis flashé les nouveaux fichiers de récupération, de démarrage, système et userdata.img dans le téléphone ...
9exceptionThrower9
0

Vous pouvez utiliser LiveBoot. C'est dans le Google Play Store. Il fera exactement ce que vous demandez.

Narcotixs
la source
Et si j'ai un bootloop? Existe-t-il un moyen de le faire avec un câble USB?
beppe9000