Comment déboguer suspendre?

29

J'utilise Ubuntu depuis environ cinq ans maintenant, et je ne peux toujours pas le suspendre quand je le souhaite. C'est assez irritant de pouvoir programmer une tempête, de pirater la machine de nombreuses autres façons, et pourtant, et quand j'essaye de la faire suspendre ou de déboguer la suspension, j'échoue lamentablement.

J'ai besoin d'aide.

Par où commencer pour trouver le problème? Que dois-je faire pour le réparer? Je mets une prime là-dessus, car j'ai littéralement perdu des heures de ma vie à ce problème, et laisser mon ordinateur allumé TOUT le temps est terrible.

Les symptômes:

  • Appuyer sur suspendre amène mon ordinateur dans un état où il a un curseur clignotant, les ventilateurs fonctionnent, il semble que le HD se soit éteint (je pense), et je ne peux rien faire pour le faire revenir de cet état (à court de un redémarrage dur).
  • Peut-être lié: mes fans restent allumés même après un arrêt, et même alors, je dois appuyer sur le bouton d'alimentation pendant cinq secondes avant de pouvoir le redémarrer.
  • Je ne sais pas quels journaux regarder pour déboguer le problème, et j'imagine qu'ils seraient de toute façon neutralisés au redémarrage.

Veuillez aider. Cela me rend complètement fou et je vis avec depuis plus d'un an.

mlissner
la source
Avez-vous eu de la chance avec ça? Je suis personnellement bloqué lors de l'initialisation du matériel graphique. Je pourrais probablement programmer ma sortie en laissant suffisamment de temps ... mais il serait beaucoup plus facile d'avoir une méthode pour résoudre directement le problème.
Henrik
Ouais pas de chance. Apparemment, il n'y a pas de méthode pour déboguer la suspension, ce qui est un peu choquant.
mlissner
1
Comment suspendez-vous? Courez-vous à partir de la ligne de commande pm-suspend? Utilisez-vous une touche de suspension sur votre clavier? Faites-vous un appel à acpi (par exemple /etc/acpi/sleep.sh ou /etc/acpi/sleepbtn.sh) ??
M. Tibbits
1
Aux chasseurs de primes: je recherche principalement des recettes de débogage générales, c'est-à-dire la collecte d'informations, pour les installations Ubuntu plus récentes utilisant systemd. J'espère que nous pourrons utiliser cette question comme un doublon canonique pour les questions de problème de suspension générales par des utilisateurs inexpérimentés.
David Foerster
2
@pbhj: Quoi qu'il en soit, il faut un diagnostic de problème approprié comme première étape sur la voie d'une solution.
David Foerster

Réponses:

22

Depuis https://wiki.ubuntu.com/UnderstandingSuspend

  • Le plus gros problème est le matériel graphique
  • essayez de suspendre sans périphériques restreints (nvidia, fglrx)
  • le noyau ne sait pas comment gérer les périphériques graphiques
  • Le BIOS sait comment restaurer l'état graphique
    • via le mode segmenté 16 bits, C000: xxxx contient la ROM vidéo 64k visible.
    • démarrage de l'exécution à C000: 0003, re-POST normalement le BIOS vidéo (/ usr / sbin / vbetool post)
      • plus difficile en mode 64 bits, car les appels 16 bits doivent être émulés.
      • une partie de la mémoire est dans la plage 3-4G, ce qui nécessite un remappage lors de l'émulation pour éviter de toucher le noyau qui est mappé dans le même espace. o Le BIOS vidéo peut avoir paginé le code POST hors de la fenêtre C000 o Le BIOS nvidia réécrit la ROM pour simplement revenir pour arrêter le re-POST, essayez de suspendre la console (via /etc/acpi/sleep.sh)
    • assurez-vous que vous êtes déconnecté de Xorg (ou exécutez sleep.sh avec l'argument "force")
    • si le BIOS vidéo n'est pas laissé dans un état sain, le retour à Xorg peut bloquer le matériel
    • teste le verrouillage des majuscules à la reprise (si aucun verrouillage des majuscules, noyau bloqué)
    • si le rétroéclairage ne se rallume pas, le BIOS vidéo ne s'est probablement pas réinitialisé
    • si l'écran est vide mais a un rétro-éclairage, essayez d'appuyer sur enter ou de basculer entre les terminaux virtuels
    • essayez en mode mono-utilisateur (en ajoutant "single" aux options de démarrage du noyau grub)
    • pour plus de détails sur les actions, essayez bash -x /etc/acpi/sleep.sh> /root/sleep.log 2> & 1
    • regardez les informations dmidecode qui correspondent aux paramètres dans /usr/share/acpi-support/*.config
    • si la suspension en mode mono-utilisateur ou la reprise échoue
    • Trace PM (echo "1"> / sys / power / pm_trace) qui écrira les hachages du périphérique dans la minuterie système
    • tenter de suspendre
    • après l'échec, lors du redémarrage, examinez la sortie dmesg pour les entrées de «hachage de périphérique» pour retrouver le périphérique qui a bloqué le système lors de la reprise.
    • sachant que cela réinitialisera l'horloge système et que fsck paniquera ("est parti sans fsck depuis 31337 jours"). considérez tune2fs -c 0 / dev / vos / systèmes de fichiers.
Henrik
la source
2
Comment désactiver les appareils restreints?
Owen
1
des liens vers des scripts de travail pour raison de cocher une case lorsque la suspension échoue? ... ce genre de problème est le fléau de Linux et bloque l'utilisation de masse ...
Scott Stensland
4

Vous pouvez trouver beaucoup de directives / conseils ici et ici .

D'après votre description, il semble que votre ACPI ne fonctionne pas correctement ou que les pilotes du noyau empêchent une suspension complète. Le deuxième lien montre comment gérer ce type de problème.

evgeny
la source
2
Je les ai relus, mais ils ne contiennent pas d'informations réellement utiles pour mon problème. Besoin de plus d'aide et de meilleurs détails. J'ai créé une prime pour cette question.
mlissner
4
Mauvaise réponse - juste des liens. Le but des sites Stack * est de fournir un lieu de prédilection pour toutes les questions, de ne pas envoyer les utilisateurs sur une poursuite sans fin ou de dire `` juste f * google it ''. Veuillez insérer votre réponse dans la question et la mettre à jour en fonction du commentaire de mlissner.
Henrik
Merci: Parfois, il est utile de lire la page d'accueil d'origine!
abu_bua
4

Les symptômes:

  • Appuyer sur suspendre amène mon ordinateur dans un état où il a un curseur clignotant, les ventilateurs fonctionnent, il semble que le HD se soit éteint (je pense), et je ne peux rien faire pour le faire revenir de cet état (à court de un redémarrage dur).
  • Peut-être lié: mes fans restent allumés même après un arrêt, et même alors, je dois appuyer sur le bouton d'alimentation pendant cinq secondes avant de pouvoir le redémarrer.
  • Je ne sais pas quels journaux regarder pour déboguer le problème, et j'imagine qu'ils seraient de toute façon neutralisés au redémarrage.

Mon site Web pour de nombreux problèmes Linux est Arch Linux. Voici ce qui est publié à propos des problèmes de suspension / reprise similaires au vôtre:

Réveils instantanés de la suspension

Pour certains systèmes Intel Haswell avec les chipsets LynxPoint et LynxPoint-LP, des réveils instantanés après suspension sont signalés. Ils sont liés aux implémentations erronées du BIOS ACPI et à la façon dont le xhci_hcdmodule l'interprète lors du démarrage. Comme solution de contournement, les systèmes affectés sont ajoutés à une liste noire (nommée XHCI_SPURIOUS_WAKEUP) par le noyau au cas par cas. [ 2 ]

Une reprise instantanée peut se produire, par exemple, si un périphérique USB est branché pendant la suspension et que les déclencheurs de réveil ACPI sont activés. Une solution de contournement viable pour un tel système, s'il n'est pas encore sur la liste noire, consiste à désactiver les déclencheurs de réveil. Un exemple pour désactiver le réveil via USB est décrit comme suit. [ 3 ]

Pour afficher la configuration actuelle:

$ cat /proc/acpi/wakeup

Device  S-state   Status   Sysfs node
...
EHC1      S3    *enabled  pci:0000:00:1d.0
EHC2      S3    *enabled  pci:0000:00:1a.0
XHC       S3    *enabled  pci:0000:00:14.0

...

Les périphériques concernés sont EHC1, EHC2et XHC(pour USB 3.0). Pour basculer leur état, vous devez répéter le nom du périphérique dans le fichier en tant que root.

# echo EHC1 > /proc/acpi/wakeup
# echo EHC2 > /proc/acpi/wakeup
# echo XHC > /proc/acpi/wakeup

Cela devrait entraîner une nouvelle suspension de travail. Cependant, ces paramètres ne sont que temporaires et devraient être définis à chaque redémarrage. Pour automatiser cela, jetez un œil à systemd # Writing unit files . Voir le fil BBS pour une solution possible et plus d'informations.


L'article d'Arch Linux ci-dessus sur Suspendre / Reprendre est une excellente référence dans de nombreux domaines:

1 Low level interfaces
    1.1 kernel (swsusp)
    1.2 uswsusp
2 High level interfaces
    2.1 systemd
3 Hibernation
    3.1 About swap partition/file size
    3.2 Required kernel parameters
        3.2.1 Hibernation into swap file
    3.3 Configure the initramfs
4 Troubleshooting
    4.1 ACPI_OS_NAME
    4.2 VAIO Users
    4.3 Suspend/hibernate doesn't work, or not consistently
    4.4 Wake-on-LAN
    4.5 Instantaneous wakeups from suspend
WinEunuuchs2Unix
la source
Cela semble bon! J'attendrai un jour ou deux pour donner aux autres une chance de répondre. Peut-être que quelqu'un se sentira inspiré par le vôtre. :-)
David Foerster
@DavidFoerster Merci. Il est difficile de répondre à une question de 8 ans. Il y a aussi un problème de suspension / reprise avec les SSD NVMe M.2 PCIe que j'ajouterai ce soir. Ces types de SSD n'existaient pas en 2010 et nécessitent un argument spécial du noyau grub.
WinEunuuchs2Unix
Je cherchais moins des solutions à des problèmes de suspension spécifiques et plus des recettes de débogage générales pour les installations Ubuntu plus récentes utilisant systemd.
David Foerster
@DavidFoerster Dans ce cas, je laisserai la réponse
inchangée