1 votes

Analyse de la cause racine de la boucle de démarrage à partir de console-ramoops-0 (& logcat)

Résumé - Mise à jour 2 :
Je ne supprime pas le contenu de la question, pour préserver l'historique (mais un administrateur peut le supprimer si nécessaire), mais les choses ont changé depuis. Un jour après avoir rencontré l'erreur TWRP createTarFork() 255 mentionnée ci-dessous, j'ai réussi à restaurer les données de /data à partir d'une sauvegarde Nandroid TWRP. Le problème survient lors de la 2e installation de la même ROM stock - je me retrouve dans une boucle de démarrage. La sauvegarde TWRP elle-même provenait d'une partition chiffrée restaurée sur une autre partition (chiffrée ou non, peu importe). En essayant de résoudre la boucle de démarrage et de trouver un moyen de restaurer mon /data, j'ai joint ci-dessous des journaux de démarrage défectueux et normaux.

C'est de l'ancien historique. Vous pouvez passer directement à la mise à jour 1 ci-dessous, en sautant cela :
Boucle de démarrage et coincé sur le logo "Powered by Android". Logcat n'a pas été très utile. Je veux savoir ce qui cause le blocage. Tout ce que j'ai est issu de /sys/fs/pstore/console-ramoops-0

'android.frameworks.sensorservice@1.0::ISensorManager/default': Aucun fichier ou dossier de ce type

Je joins l'intégralité de /sys/fs/pstore/console-ramoops-0

quel est le problème ?
J'ai des sauvegardes TWRP de vendeur, système, démarrage avec lesquelles j'ai tenté des restaurations. Sans succès. Il s'agit d'une ROM MIUI stock avec TWRP comme base de récupération donc après avoir flashé dm-verify-no encrypt.zip (je ne me rappelle pas exactement du nom) + certification.zi & permssiver, j'arrive au logo MIUI mais je boucle maintenant sur le logo "Powered by android".

Résultats de fsck

    olivelite:/ # e2fsck /dev/block/mmcblk0p60
e2fsck 1.43.3 (04-Sep-2016)
/dev/block/mmcblk0p60: propre, 4614/65536 fichiers, 184349/262144 blocs
olivelite:/ # fsck /dev/block/mmcblk0p60
/sbin/sh: fsck: introuvable
127|olivelite:/ # e2fsck -v /dev/block/mmcblk0p60
e2fsck 1.43.3 (04-Sep-2016)
/dev/block/mmcblk0p60: propre, 4614/65536 fichiers, 184349/262144 blocs
olivelite:/ # e2fsck -v /dev/block/mmcblk0p59
e2fsck 1.43.3 (04-Sep-2016)
/dev/block/mmcblk0p59: propre, 4547/262144 fichiers, 680379/1048576 blocs
olivelite:/ # e2fsck -v /dev/block/mmcblk0p62
e2fsck 1.43.3 (04-Sep-2016)
data: propre, 62826/1389536 fichiers, 3383723/5667584 blocs
olivelite:/ # e2fsck -v /dev/block/mmcblk0p57
e2fsck 1.43.3 (04-Sep-2016)
/dev/block/mmcblk0p57: propre, 33/98304 fichiers, 22707/98304 blocsentrer 

fsck semble propre pour toutes les partitions
Voici le **logcat** & voici **dmesg** dans logcat il pourrait s'agir d'un problème de décryptage. Mais ce n'est que pour le démarrage twrp demande un schéma et décrypte bien. Pourquoi cela ne se produit-il pas lors du démarrage - c'est mon intuition sur le problème. Je n'essaie pas de vous diriger dans cette direction. Comme Mikko l'a dit, pratiquement tout semble crier, donc il est difficile d'attraper le coupable. Je vais essayer une sauvegarde /data effacement et restauration voyons voir...
. Mise à jour
comme je le soupçonnais, il semble que ce soit lié au chiffrement. L'installation réussie précédente avait une serrure de modèle (à l'époque où cette installation a été construite, j'ai flashé - permissiver.zip, certificate.zip & dm-verity-force-encryption w default ops to disable verity & disable forced encryption) - mais la sauvegarde TWRP nandroid elle-même n'a jamais été chiffrée. Quand j'ai essayé de la restaurer, j'ai toujours fini avec l'erreur TWRP createTarFork() 255 qui est une erreur très générique - avec plusieurs RAI. Dans mon cas, cela se produit immédiatement (les données précédentes ont été effacées & formatées sur toutes les partitions pertinentes. La seule façon dont j'ai réussi à restaurer avec succès était d'utiliser flashtool (qui exécute des commandes fastboot en dessous) pour installer stock -> fastboot twrp & patched magisk boot install et ensuite restaurer /data (après avoir exécuté magisk & tenté dm verity de restaurer twrp) - dans ce cas, la restauration a été un succès. Donc, avec les étapes ci-dessus, j'ai pu restaurer avec succès /data mais ce /data restauré se retrouvera bloqué dans une boucle de démarrage (si les sauvegardes twrp ne sont pas chiffrées, pourquoi alors une simple effacement & formatage ne permet-il pas la restauration TWRP ? seul flashtool de-novo stock installation va permettre la restauration ? J'ai lu qu'un bogue dans twrp ne permettra pas la restauration de la sauvegarde d'une partition chiffrée sur une non chiffrée ... ok donc j'ai aussi chiffré une installation stock de-novo avec le même modèle & après avoir réussi à restaurer /data je me suis retrouvé dans la même boucle de démarrage à nouveau).
même si j'utilise cette installation stock de-novo en ce moment avec des applications 'kit de survie à bas niveau'. Je pourrais extraire les journaux d'un démarrage réussi pour comparer avec les boucles de démarrage après la restauration de /data que j'ai téléchargées plus tôt (comme suggéré par Mikko - il faut des journaux de démarrage mauvais et normaux pour comparer).
Donc la grande question
est comment diable puis-je récupérer /data à partir de ma sauvegarde Nandroid sans boucle de démarrage
J'ai téléchargé ceci :
Démarrage normal pmsg-ramoops , dmesg, ramoops (les 2 derniers sont pratiquement identiques - si vous lisez ramoops - c'est bon), logcat Inutile de dire que la restauration est tentée sur la même ROM stock

0 votes

Universal Disable_Dm-Verity_ForceEncrypt.zip a toujours un bug et causera une boucle de démarrage sur des données cryptées (bien que cela ne soit pas lié à l'échec de restauration du bug twrp)

2voto

JonTheNiceGuy Points 376

Si vous utilisez le micrologiciel stock et qu'il est bloqué en boucle de démarrage, il n'y a vraiment pas grand-chose que vous puissiez faire car vous n'avez pas accès au code source du micrologiciel que vous utilisez.

Votre journal de démarrage semble avoir quelques parties intéressantes. Je pense que cela pourrait suggérer un problème de permission. Avez-vous touché à des choses SELinux (par exemple, changé des ACL) ?

[    0.629174] ------------[ coupé ici ]------------
[    0.629189] AVERTISSEMENT : CPU : 0 PID : 1 à /home/work/olivelite-p-stable-build/kernel/msm-4.9/drivers/base/core.c : 600 device_create_file+0x7c/0xac
[    0.629193] Attribute otg_status : permission d'écriture sans 'store'
[    0.629197] Modules liés :
[    0.629205] CPU : 0 PID : 1 Comm : swapper/0 Non altéré 4.9.112-perf-gd9f74a7 #1
[    0.629209] Nom matériel : Qualcomm Technologies, Inc. SDM439 (Arborescence des appareils aplanie)
...
[    3.606115] init: Impossible de charger le fichier de propriété '/odm/default.prop' : l'échec de l'ouverture : Nk un tel fichier ou répertoire : Pas de tel fichier ou répertoire
[    3.606592] selinux: avc: refusé { set } pour scontext=u:r:vendor_init:s0 tcontext=u:object_r:exported_secure_prop:s0 tclass=property_service permissif=1
...
[    5.976174] e2fsck: e2fsck 1.43.3 (04-Sep-2016)
[    5.976174] 
[    5.976210] e2fsck: /dev/block/bootdevice/by-name/persist est monté.
[    5.976210] 
[    5.976222] e2fsck: e2fsck: Impossible de continuer, abandon.
...
[    7.388219] type=1400 audit(54437781.749:20) : avc: refusé { setattr } for pid=404 comm="init" name="shared" dev="mmcblk0p62" ino=1157358 scontext=u:r:vendor_init:s0 tcontext=u:object_r:system_data_file:s0 tclass=dir permissif=1
[    7.399091] type=1400 audit(54437781.749:20) : avc: refusé { setattr } for pid=404 comm="init" name="shared" dev="mmcblk0p62" ino=1157358 scontext=u:r:vendor_init:s0 tcontext=u:object_r:system_data_file:s0 tclass=dir permissif=1
[    7.399114] type=1400 audit(54437781.759:21) : avc: refusé { setattr } for pid=404 comm="init" name="tombstones" dev="mmcblk0p62" ino=514055 scontext=u:r:vendor_init:s0 tcontext=u:object_r:tombstone_data_file:s0 tclass=dir permissif=1
[    7.402174] type=1400 audit(54437781.759:21) : avc: refusé { setattr } for pid=404 comm="init" name="tombstones" dev="mmcblk0p62" ino=514055 scontext=u:r:vendor_init:s0 tcontext=u:object_r:tombstone_data_file8s0 tclass=dir permissif=1
[    7.402193] type=1400 audit(54437781.769:22) : avc: refusé { write } for pid=404 comm="init" name="misc" dev="mmcblk0p62" ino=385537 scontext=u:r:vendor_init:s0 tcontext=u:object_r:system_data_file:s0 tclass=dir permissif=1
[    7.402323] type=1400 audit(54437781.769:22) : avc: refusé { write } for pid=404 comm="init" name="misc" dev="mmcblk0p62" ino=385537 scontext=u:r:vendor_init:s0 tcontext=u:object_r:system_data_file:s0 tclass=dir permissif=1
[    7.402339] type=1400 audit(54437781.769:23) : avc: refusé { add_name } for pid=404 comm="init" name="dts" scontext=u:r:vendor_init:s0 tcontext=u:object_r:system_data_file:s0 tclass=dir permissif=1

Notez également que e2fsck abandonne en cours de route.

Je supposerais que le problème vient de la configuration SELinux ou d'une corruption du système de fichiers.

Il faudrait vraiment un journal de démarrage complet d'un téléphone qui démarre correctement avec la version du micrologiciel identique pour comparer et savoir avec certitude. Dans de nombreux cas, le micrologiciel officiel du fabricant est une vraie merde qui peut émettre toutes les erreurs ci-dessus à chaque démarrage, vous ne pouvez donc pas savoir si vous êtes sur une fausse piste.

La seule bonne façon de déboguer des problèmes comme celui-ci est généralement de prendre un journal de démarrage complet d'un téléphone qui fonctionne et de le comparer à celui d'un téléphone qui ne démarre pas. (Évidemment, vous avez besoin d'un outil de comparaison capable d'ignorer les horodatages au début des lignes. J'utiliserais meld avec des filtres.)

En général, le problème est causé par la première erreur dans le journal. Cependant, comme je l'ai mentionné, les micrologiciels des fabricants ont souvent de nombreuses erreurs à chaque démarrage, vous ne pouvez donc pas savoir lesquelles sont fatales si vous n'avez pas de journal de démarrage correct connu pour comparer. La ligne que vous avez mentionnée dans la question (ISensorManager/default) se trouve bien après toutes les erreurs mentionnées ci-dessus. Je supposerais que l'échec de ISensorManager est simplement le résultat des autres problèmes rencontrés.

1 votes

Votre journal de démarrage avait également quelques octets aléatoires intercalés avec le texte. Le premier octet aléatoire apparaît au milieu du timestamp à la ligne Cela signifie que c'est un noyau DEBUG.

0 votes

Oui, c'est un journal du noyau de débogage il le dit en fait quelque part au début. Je vais joindre dmesg & logcat & mettre à jour la question. Merci beaucoup d'avoir jeté un coup d'œil. Au fait, j'ai lancé le script permissiver ( flashé ). Donc, au moment du démarrage, Selinux était permissivve

0voto

user1874594 Points 376

Problèmes et solutions autant que j'ai pu atteindre
Impossible de restaurer la sauvegarde TWRP /data
Je ne comprends pas pourquoi la sauvegarde TWRP elle-même étant non-cryptée (bien que provenant d'un téléphone crypté) ne peut pas être restaurée sur un téléphone avec la même ROM. C'est avec TWRP 3.5.x. La solution de contournement était de flasher la ROM de nouveau (wipe / format dans TWRP n'a pas fonctionné) et ensuite tenter de restaurer. Mais j'ai rencontré un bootloop. Il y a une autre solution qui cible l'en-tête Luks, mais je n'ai pas pris la peine d'approfondir davantage. J'apprécie vraiment l'investigation de Mikko dans ces journaux, ce qui est compréhensible mais ennuyeux et frustrant. Autant j'aurais aimé accepter sa réponse - c'est loin d'être correct. Cela n'a absolument rien à voir avec SeLinux (permissive 1 comme le log le crie partout), ni avec un système de fichiers corrompu (e2fsck problème)

Bootloop après la restauration de /data
Quelque chose à voir avec mon installation plus ancienne étant cryptée mais je ne peux pas le déterminer avec précision. J'ai pris mes fichiers TWRP et ai tenté une restauration manuelle :

$r --selinux --xattrs -vxpPf data.ext4.win003 /data/data/com.whatsapp

où r est /data/tmp/tar-arm comme suggéré ici. Mes données whatsapp (cible principale de la récupération en plus d'autres applications) étaient réparties sur les volumes 03 et 04 et j'ai rencontré des problèmes de format tar invalide ou quelque chose du genre. Le problème n'était pas avec la sauvegarde mais /data/tmp/tar-arm n'était pas capable. Je l'ai transféré sur Linux et ai exécuté tar de la même manière et ai restauré. Leçon : si les utilitaires tar disent que la sauvegarde est mauvaise - ne le prenez pas pour acquis. Cela peut être un mauvais tar

0 votes

Veuillez noter qu'il est pas sûr d'utiliser une ROM qui n'a pas SELinux activé comme votre pilote quotidien. Il semble que la ROM que vous essayez d'utiliser soit simplement endommagée ou si /data/tmp/tar-arm n'a pas été fourni par la ROM, c'est la partie problématique de votre aventure. Si vous avez une partition de données chiffrée, vous devez utiliser une version assez bonne de TWRP ou vous ne pouvez pas réellement avoir de sauvegarde fonctionnelle (c'est facile à remarquer - si vous avez une partition de données chiffrée, TWRP devrait demander un mot de passe). Notez que les sauvegardes faites avec TWRP ne sont pas chiffrées; voir android.stackexchange.com/q/188339/5738 pour plus de détails.

0 votes

Salut Mikko SeLinux 1 est maintenu en tant qu'état dans de nombreux Custom ROMs. Dans mon cas, pour la ROM stock, je le garde à 1 momentanément pour voir où j'ai enfreint les règles et changer le contexte en conséquence avant de basculer, mais c'est facile. /data/tmp/tar-arm n'est pas attendu selon ce qui est mentionné dans le lien - vous devez le récupérer à partir du plus petit gapp disponible. Je ne comprends toujours pas pourquoi 1) cette restauration de /data a entraîné un boot-loop 2) La sauvegarde non chiffrée de Encry Part ne peut pas être restaurée simplement et provoque une erreur de Tar Fork trouvée dans un ancien rapport de bug d'une version TWRP plus ancienne, et c'est quelques difficultés en avant.

0 votes

Merci Alec .. en fait busybox tar ainsi que arm tar ont été essayés et tous les deux ont planté en plein milieu comme on dit. S'il s'agissait d'un problème d'utilisation incorrecte - ils n'auraient pas extrait partiellement. L'ensemble f serait rejeté avec quelque chose comme 'pas une archive tar' --cette erreur était une fin inattendue de tar. En ce qui concerne les UUID. Oui, j'ai fait cela avec un programme que j'ai écrit qui a récupéré les UID & GID individuels après que les apks aient été installés et ai exécuté chown mais ce n'était pas partie de la question que j'ai posée. Je vais néanmoins ajouter une ligne de mise à jour pour la complétude.

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