9 votes

Comment puis-je activer last_kmsg ?

J'essaie de diagnostiquer un redémarrage aléatoire sur LineageOS 14. last_kmsg n'est pas dans /proc ni dans /sys/fs/pstore/console-ramoops .

EDITAR:

~# mount | grep PSTORE
~# mkdir /mnt/pstore && mount pstore -t pstore /mnt/pstore && ls /mnt/pstore
mount: 'pstore'->'/mnt/pstore': No such device

13voto

Irfan Latif Points 16863

En 2012, /proc/last_kmsg ( 1 ) était un vidage des messages de la console du noyau, exportés après les redémarrages par le système Android. ram_console fonctionnalité (CONFIG_ANDROID_RAM_CONSOLE), qui utilisait persistent_ram (CONFIG_ANDROID_PERSISTENT_RAM) pour gérer un bloc de RAM qui n'a pas été effacé lors des redémarrages. ( 2 ) .

persistent_ram était basé sur le code RAMOOPS en amont de Linux qui enregistrait panique et oups dans la mémoire vive. RAMOOPS a été déprécié au profit de PSTORE ( 3 ) (gestion de la mémoire) et PSTORE_RAM ( 4 ) (enregistrement des paniques/ops à pstore/dmesg-ramoops ). Plus tard, le support de PSTORE_CONSOLE a été ajouté ( 5 , 6 ) pour enregistrer non seulement les paniques/ops, mais aussi tous les messages de la console du noyau dans le fichier pstore/console-ramoops-N qui peut être lu plus tard en montant pstore ( 7 ) . Ainsi, la RAM_CONSOLE spécifique à Android ( 8 , 9 ) et PERSISTENT_RAM ( 10 ) ont été complètement supprimées.

Maintenant pstore offre également l'enregistrement des messages de l'espace utilisateur (PSTORE_PMSG). ( 11 ) et d'autres caractéristiques ( 12 ) . De plus, il prend en charge plusieurs backends pour le stockage persistant si le matériel le permet, bien que les SoC des appareils Android ne prennent en charge que le stockage RAM ( ramoops pilote, AFAIK).

Il n'est donc pas possible d'activer last_kmsg sur un noyau amont, au lieu de pstore offre une fonctionnalité plus polyvalente.

monture : 'pstore'->'/mnt/pstore' : Aucun périphérique de ce type

Cela montre que votre noyau n'est pas construit avec pstore soutien. Tout ce que vous devez faire est d'utiliser un noyau construit avec CONFIG_PSTORE_CONSOLE et éventuellement CONFIG_PSTORE_RAM (bien que buggy ). Le système Android init montages par défaut pstore à l'adresse /sys/fs/pstore ( 13 ) d'où dmesg-ramoops (sur les paniques/oops uniquement) et console-ramoops peut être lu.

Vous pouvez rechercher sur les forums une ROM personnalisée livrée avec un tel noyau. Ou si vous avez les sources du noyau, vous pouvez le construire vous-même sur une machine Linux.

NOTE : Certains nouveaux appareils, comme Samsung, exposent encore /proc/last_kmsg Je ne suis pas sûr qu'ils utilisent l'implémentation originale ou l'implémentation de l'interface de l'UE. pstore à l'arrière.


POUR EN SAVOIR PLUS : Lecture des journaux du noyau

0voto

Ne Mo Points 383

J'ai finalement réussi à mettre en place une sorte de travail chronologique qui écrivait le journal dans un fichier toutes les quelques secondes. Je ne me souviens plus comment - c'était il y a plus de deux ans.

Le journal ne m'a pas donné de réponse, ce qui m'a laissé perplexe. Je me suis demandé si le journal n'était pas copié assez rapidement avant l'arrêt.

Cela peut être un problème pour certaines personnes, mais j'ai rapidement découvert que le problème était très simple : la batterie était défectueuse. Ce modèle (s5) a une batterie amovible, je l'ai donc échangée et le problème a disparu. Commencez par les choses simples.

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