Pour commencer, il serait utile que vous puissiez fournir quelques journaux avec adb. Pour le firmware x86, pour obtenir un dump de ce qui se passe, il suffit de lancer la commande suivante adb logcat
à partir d'une invite de commande élevée. Pour le rendre plus simple à lire, bien qu'il doive s'agir d'un vidage et qu'il soit assez simple, vous pouvez essayer d'ajouter le paramètre -v (verbose) : abd logcat -v long
Avec un peu de chance, le démon adbd a démarré car il fait partie de la tâche d'init.
Cependant, s'il ne l'a pas fait et qu'il ne peut pas obtenir un logcat, vous pouvez essayer de sauter une partie du processus de démarrage pour aller plus loin dans le processus de démarrage en arrêtant le zygote par :
De la Site web des développeurs x86 :
Arrêtez zygote pour qu'il s'exécute automatiquement :
Allez dans le fichier vendor/whatever_device_oem/eeepc/init.rc, changez les lignes suivantes :
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server socket zygote stream 666 onrestart write /sys/android_power/request_state wake onrestart write /sys/power/state on
à :
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server socket zygote stream 666 onrestart write /sys/android_power/request_state wake onrestart write /sys/power/state on disabled oneshot
A ce stade, il faut espérer que l'arrêt du zygote permettra de faire communiquer les choses une fois que le davlik aura démarré, puisque c'est ce qui fait démarrer les choses dans la machine virtuelle.
Essayez d'extraire les journaux à l'aide de la commande logcat mentionnée ci-dessus.
Lorsque vous voulez démarrer zygote manuellement après avoir obtenu ou si elle échoue alors lancez la commande depuis un shell adb start zygote
ou si vous ne pouvez pas obtenir un shell adb, vous pouvez simplement essayer à partir d'un émulateur de terminal start zygote
si cela échoue, arrêtez et rétablissez les changements dans le vendor/whatever_device_oem/eeepc/init.rc à partir de l'is booted, ou dans l'iso, ou avant la re-compilation.
J'espère qu'à ce stade, vous pourrez envoyer une sortie de vidage afin que nous puissions déterminer ce qui se passe.
Il semble qu'il s'agisse d'un problème d'ordre de démarrage, du chargeur d'amorçage principal au chargeur d'amorçage secondaire, et ainsi de suite. Cela pourrait également être l'un des autres chemins pertinents nécessaires au démarrage.
Avec cela, après avoir parcouru vos longues étapes détaillées que vous avez essayé pour le débogage. Ce qui m'a conduit à ma longue réponse détaillée pour dire que les journaux sont essentiels au débogage. Du haut de ma tête, je dis qu'il s'agit très probablement d'un problème de chemin qui peut être corrigé en utilisant la fonction set
à partir d'un système basé sur linux ou d'une invite de commande ou d'un émulateur de système similaire à linux. (Clé d'ailleurs lors de la sauvegarde d'une brique de grub-recovery).
Lancez le set
pour voir ce que le système reconnaît et considère comme la voie à suivre.
Voyez ce qui est affiché et comparé à ce qui est nécessaire tel que set Root, cmdpath, kernel, boot, grub, vmlinux ou aboot, et beaucoup d'autres choses requises pour le démarrage mais pas les mêmes : laissez le dispositif et l'OEM, la version du système d'exploitation ou les variantes.
La syntaxe est la suivante :
set {envvar=value}
Simplifié :
Set option = (Value)/the/chosen/path
Pour supprimer/supprimer une variable d'environnement, il suffit de nous unset
au lieu de la commande set.
Le manuel technique de GN'U explique ce qui semble être votre problème :
https://www.gnu.org/software/grub/manual/grub/html_node/set.html#set
La procédure de démarrage normale de GRUB consiste à définir la variable d'environnement 'prefix' sur un à une valeur définie dans l'image de base par grub-install, à faire correspondre la variable 'Root', à charger le module le module 'normal' à partir du préfixe, et l'exécution de la commande 'normal' (voir Section 16.3.51 [normal], page 77). Cette commande est responsable de la lecture du fichier '/boot/grub/grub.cfg ning le menu, et de faire toutes les choses utiles que GRUB est supposé faire.
Commencez vos solutions de débogage avec le set
pour mettre en place les variables de démarrage appropriées. Si vous devez supprimer une variable qui a été définie, utilisez la commande unset
commandement.
Si ce n'est pas le cas, nous avons besoin de journaux pour découvrir ce qui se passe dans le processus de démarrage.