Comment déboguer un problème de suspension?


11

J'avais l'habitude d'avoir Fedora 14 installé sur ce HP Compaq 610, et la fonction de suspension a bien fonctionné. Maintenant que j'ai installé Scientific Linux 6.1, la suspension ne fonctionne plus. Comment le déboguer / le corriger?


Est-ce la suspension du shell (<kbd> Cntl-z </kbd>) ou le système d'exploitation (veille ou veille prolongée)?
Arcege

@Arcege: Je suppose qu'il voulait dire suspendre ACPI, car c'est devenu un problème si courant de nos jours.
JM Becker

Réponses:


9

Il existe de nombreuses façons de gérer les capacités de suspension et d'hibernation, la plupart des anciennes méthodes sont obsolètes. Cela a rendu la recherche de solutions difficile, car il semble que chaque solution soit complètement indépendante de la suivante. Cela étant dit...

La méthode actuellement recommandée, préconisée à partir de http://pm-utils.freedesktop.org/wiki/ , devrait être disponible pour les distributions les plus récentes. Je voudrais d'abord vérifier si vous avez pm-utilsinstallé et si les commandes incluses fonctionnent comme prévu.

Voir si le package est installé, entrez cette commande dans le terminal

rpm -qa | grep pm-utils

Cela devrait produire la version que vous avez installée. Si vous n'obtenez pas la sortie attendue, vous devez installer le package.

sudo yum install pm-utils

Une fois que vous avez vérifié cela, testez votre capacité à suspendre.

sudo pm-suspend

Si vous ne suspendez pas et n'obtenez aucune sortie pourquoi, vérifiez la sortie récente de votre dmesg

dmesg | tail -50

Cela devrait vous aider à démarrer, une fois que vous obtenez des indices, il est beaucoup plus facile d'aller plus loin sur la piste. Postez en arrière avec des commentaires concernant vos résultats, je peux vous faire passer le reste.


J'ai même installé pm-utils-devel. pm-suspend avec l'utilisateur root fait la même chose qu'avec un utilisateur normal quand il clique dans GNOME / menu-> suspend-> rien, la machine dit simplement "le réseau est éteint", puis elle attend et attend, etc. Je peux ne démarre rien après avoir essayé de suspendre. Je verrai le dmesg plus tard, merci!
LanceBaynes

La dmesgsortie vous dira ce qui se passe derrière la scène. Plus important encore, ce qui pourrait échouer en particulier. O et BTW, vous n'avez pas besoin du paquet devel. Vous n'en avez besoin que lors de la compilation du code, alors n'hésitez pas à purger. Il y a beaucoup de directions à partir d'ici, je ne vous envoie pas aboyer le mauvais arbre.
JM Becker

1
@LanceBaynes avez-vous essayé d'exécuter les pm-suspendcommandes à partir d'un shell et non via le menu GNOME? Essayez en echo -n "mem" >/sys/power/statetant que root. De plus, si vous utilisez, acpivous pouvez acpi_listenvoir quels événements sont générés, par exemple lors de la fermeture du couvercle.

WOW, wtf? J'ai "echo -n" mem "> / sys / power / state" avec l'utilisateur root, et mon effectivement suspendu !!!! SENSATIONNEL. Le seul problème est maintenant que lorsque je fais ce genre de suspension, alors gnome-screensaver ne démarre pas et me laisse un PC déverrouillé. Comment contourner cela? Comment puis-je créer un script / quelque chose pour qu'un utilisateur normal puisse également utiliser ce type de suspension? pas seulement l'utilisateur root? - et encore une chose: MERCI!
LanceBaynes

2
@LanceBaynes: ça marche maintenant? ... J'avais l'habitude de croire que ce genre de "surprise" Break / Repair n'est arrivé qu'avec Widoze. Malheureusement, j'ai cessé de croire cela pendant un certain temps. Mais ... du bon côté, ça arrive moins souvent! Et votre suspension fonctionne, c'est donc une excellente nouvelle!
JM Becker

8

Essayez ceci en tant que root:

PM_DEBUG=true pm-suspend

Vérifiez ensuite les /var/log/pm-suspend.logindices sur ce qui pourrait mal tourner.

Si vous pouvez suspendre, mais ne pas reprendre, il y a un bon article sur le wiki Ubuntu sur la façon de déboguer ce problème.


2

Si vous ne souhaitez obtenir que lorsque vous avez suspendu / repris le système, vous pouvez essayer ceci:

cat /var/log/syslog | grep 'systemd-sleep' | grep "Suspending\|resumed";
Feb  7 10:44:23 dmatej-lenovo systemd-sleep[19900]: Suspending system...
Feb  7 10:44:33 dmatej-lenovo systemd-sleep[19900]: System resumed.
Feb  7 10:45:35 dmatej-lenovo systemd-sleep[20707]: Suspending system...
Feb  7 12:58:39 dmatej-lenovo systemd-sleep[20707]: System resumed.
Feb  7 14:42:55 dmatej-lenovo systemd-sleep[24690]: Suspending system...
Feb  7 16:31:57 dmatej-lenovo systemd-sleep[24690]: System resumed.

1

Comme le suggère Mika, en tant que root:

PM_DEBUG=true pm-suspend

Détails dans:

/var/log/pm-suspend.log

Dans ce cas, vous cherchez où

[...] service [servicename] suspend suspend success

se termine, et

[...] service [servicename] suspend resume success

commence. Quelque part entre les deux, vous pouvez trouver des appels renvoyant une erreur, moment auquel la suspension est inhibée. Dans ce cas, vous pouvez avoir suspendu les modifications en cours d'annulation. Déterminez quel appel de service génère l'erreur, ouvrez-le dans vi et jetez-y un œil.

J'ai eu le même problème où après l'installation xboxdrvsur un Ubuntu 12.04, un appel en cours dans une règle /etc/pm/sleep.d/essayait d'arrêter un service qui n'a jamais été démarré ou inexistant, dans ce cas xboxdrv,. Il s'avère qu'il n'a jamais pu être démarré en premier lieu, car il n'y avait pas de /lib/modules/uinput.komodule, car ce module est fusionné dans le noyau. Cela a provoqué l'instruction case /etc/pm/sleep.d/xboxdrvà lancer une erreur lorsque la casse correspond à "suspend" à l'appel service xboxdrv stop. Le fait de suspendre la ligne avec #contourne l'instruction, au détriment de devoir débrancher et rebrancher votre contrôleur en mode suspension puis reprendre.


Je n'ai aucune erreur dans le journal de débogage après avoir exécuté cela, mais comme par magie, cela a recommencé à fonctionner ;-) Je me demande si c'est une correction permanente ...
Wirone
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.