5 votes

Débogage du bootloop: obtenir un journal d'informations sans ADB? Un émulateur peut-il aider?

Possible Duplicate:
Messages de démarrage Android pour le débogage?

En lien avec ce post que j'ai créé: Est-ce que l'émulateur Android génère un fichier de journal auquel je peux accéder en cas de crash?

J'ai cherché et essayé de trouver s'il existe un moyen d'obtenir des informations de débogage ou des messages du noyau à partir d'un téléphone Android si il reste bloqué dans une boucle de démarrage? Cela signifie que le téléphone reste bloqué sur l'écran de démarrage "Google", puis plante, puis recommence, puis plante à nouveau.

Je sais que le téléphone a plusieurs étapes de chargement au démarrage, mais pour comprendre pourquoi mon image système/mon noyau modifié fait planter le téléphone, j'aurais besoin de savoir au moins à quel moment le téléphone plante.

Y a-t-il un journal que l'émulateur Android produit peut-être qui montre les différentes étapes du démarrage: c'est-à-dire le bootloader de la première étape, le bootloader principal, le chargement du noyau, le processus d'initialisation, Zygote, l'initialisation de Dalvik VM par Zygote, l'exécution du serveur système, puis le démarrage terminé (lorsque le drapeau/événement ACTION_BOOT_COMPLETE est déclenché).

J'ai essayé de modifier init.rc pour écho des commandes dans un journal de démarrage (mais cela n'a pas fonctionné, bien que je ne sache pas si le téléphone atteint cette étape, tout ce que j'ai c'est un écran de démarrage inutile), j'ai essayé toutes les commandes ADB mais bien sûr ADB ne fonctionne pas si le téléphone n'atteint pas un état stable, la commande Linux dmesg ne fonctionne que pour montrer que le téléphone est connecté via USB, et les développeurs Android ont choisi de ne pas du tout m'expliquer qu'ils sont les seuls à détenir ce type d'outils de développement. Est-ce que quelqu'un pourrait me donner des conseils sur ce que je pourrais faire pour déboguer le processus de démarrage? Il doit y avoir un genre de journal auquel on peut accéder avec l'émulateur au moins.

En d'autres termes, comment est-ce que quelqu'un peut obtenir un journal de leur téléphone/émulateur s'il reste coincé dans une boucle de démarrage?

Informations supplémentaires, la version de mon noyau que je suppose avoir téléchargée pour la construction de mon téléphone est la version 3.x du noyau Linux (noyau d'origine extrait du dossier tuna et utilisant le projet "omap"), pour Android Galaxy Nexus (maguro), avec la version Android 4.0.3 ICS.

5voto

Nick Pierpoint Points 7976

Vous saurez si le noyau est bloqué, la lumière LED reste allumée et ne va pas plus loin.

Quant à votre question, vous devez être plus clair et spécifique car nous ne savons pas et puisque vous avez déjà posé une question similaire auparavant. Vous n'avez pas indiqué quel appareil c'est, quelle version d'Android c'est, quel noyau c'est, tout cela est laissé de côté et nous jouons donc à un jeu de devinettes ici.

  • Le ramdisk n'est-il pas créé correctement ?
  • L'adresse utilisée pour le démarrage est-elle incorrecte ?
  • La ROM est-elle construite pour VMSPLIT 3G et le noyau est-il construit avec VMSPLIT 2G ou vice versa ?
  • Quel chipset est-ce ? Noyau ARMv7 avec ROM compilée pour ARMv6...
  • Le noyau démarre-t-il réellement ? si oui, comment le savez-vous ?

Trop de choses ici pour spéculer.

Éditer :

Cet élément est lié au débogage au niveau du noyau.

La seule façon de savoir si le noyau démarre effectivement en premier lieu est d'utiliser un câble USB vers un terminal série avec les broches JTAG sur une petite carte de circuit clipsée/soudée à l'arrière du dispositif en question, et d'avoir le pilote série compilé dans le noyau et de traiter la console comme un périphérique tty, et de lire depuis celui-ci via minicom ou hyperterminal pour voir la séquence de démarrage.

Concernant les boucles de démarrage,

La cause des boucles de démarrage est due à la ROM elle-même, la séquence d'initialisation plante quelque part. Maintenant, soyez prudent :), le noyau en lui-même peut également boucler en raison d'un pilote défectueux, de paniques et de redémarrages.

Donc la question est, lequel est-ce ?, Est-ce le noyau qui continue de se redémarrer ou a-t-il dépassé cette étape et a commencé à charger la ROM ? S'il en est au stade du chargement de la ROM, alors quelque chose dans l'initialisation plante, lorsque la ROM plante, elle envoie un signal pour arrêter SurfaceFlinger, AudioFlinger, le démon adb, MedaServices, etc.

Ce que vous pouvez faire, c'est ceci - dans le init.rc, là où vous avez ceci :

service console /system/bin/sh
    console
    disabled
    user shell

Changez disabled par enabled, la prochaine fois, Android vous placera dans la console, c'est-à-dire sans une interface graphique familière.

De plus, cherchez les lignes contenant servicemanager, si le démon adbd y est répertorié, retirez-le car ce qui se passe est que les clauses directives critical et onrestart vous empêcheront d'avoir des fonctionnalités adb !

0 votes

J'ai modifié mon message pour refléter des détails du système plus spécifiques.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X