web-dev-qa-db-fra.com

Comment déboguer suspendre?

J'utilise Ubuntu depuis environ cinq ans maintenant et je ne peux toujours pas le suspendre quand je le souhaite. Il est très irritant de pouvoir programmer une tempête, pirater la machine de nombreuses autres façons, et pourtant, quand j'essaie de la suspendre ou de la mettre au point, je échoue lamentablement.

J'ai besoin d'aide.

Où puis-je commencer à trouver le problème? Que dois-je faire pour le réparer? Je place une prime pour cela, parce que j'ai littéralement perdu des heures de ma vie à cause de ce problème, et laisser mon ordinateur allumé TOUT le temps est terrible.

Les symptômes:

  • En appuyant sur Suspendre, mon ordinateur se trouve dans un état où le curseur clignotant, les ventilateurs sont en marche, il semble que le disque dur soit éteint (je pense), et je ne peux rien faire pour le ramener de cet état (à moins de un redémarrage difficile).
  • Peut-être liée: mes fans restent allumés même après un arrêt, et même dans ce cas, je dois appuyer sur le bouton d'alimentation pendant cinq secondes avant de pouvoir le redémarrer.
  • Je ne sais pas quels journaux examiner pour résoudre le problème, et j'imagine qu'ils se foutaient de toute façon au redémarrage.

S'il vous plaît, s'il vous plaît aider. Cela me rend complètement dingue et je vis avec cela depuis plus d'un an.

28
mlissner

De 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 visible de 64 Ko.
    • à partir 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é POST du code hors de la fenêtre C000. o Le nvidia BIOS réécrit ROM pour simplement arrêter d'arrêter la nouvelle publication. Essayez de suspendre depuis la console (via/etc/acpi/sleep. sh)
    • assurez-vous d'être 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 Capslock sur CV (s'il n'y a pas de Capslock, le noyau est bloqué)
    • si le rétro-éclairage ne revient pas, le BIOS vidéo n'a probablement pas réinitialisé
    • si l'écran est vide, mais que le rétroéclairage est activé, appuyez sur Entrée ou passez d'un terminal virtuel à un autre.
    • 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
    • examinez les informations de dmidecode qui correspondent aux paramètres de /usr/share/acpi-support/*.config
    • en cas d'échec de la suspension ou de la reprise de la console en mode utilisateur unique
    • Trace PM (echo "1">/sys/power/pm_trace) qui écrira des hachages de périphériques dans le temporisateur système
    • tentative de suspension
    • après l'échec, au redémarrage, examinez la sortie de dmesg pour rechercher les entrées "device hash" (hachage de périphérique) afin de localiser le périphérique qui a suspendu le système pendant la reprise.
    • conscient que cela réinitialisera l'horloge système et que fsck paniquera ("est resté sans fsck pendant 31337 jours"). considérez tune2fs -c 0/dev/your/filesystems.
22
Henrik

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 totale. Le deuxième lien montre comment traiter ce type de problème.

4
evgeny

Les symptômes:

  • En appuyant sur Suspendre, mon ordinateur se trouve dans un état où le curseur clignotant, les ventilateurs sont en marche, il semble que le disque dur soit éteint (je pense), et je ne peux rien faire pour le ramener de cet état (à moins de un redémarrage difficile).
  • Peut-être liée: mes fans restent allumés même après un arrêt, et même dans ce cas, je dois appuyer sur le bouton d'alimentation pendant cinq secondes avant de pouvoir le redémarrer.
  • Je ne sais pas quels journaux examiner pour résoudre le problème, et j'imagine qu'ils se foutaient de toute façon au redémarrage.

Mon site Web pour de nombreux problèmes Linux est Arch Linux. Voici ce qui est posté à propos de problèmes de suspension/reprise similaires aux vôtres:

Réveil instantané de la suspension

Pour certains systèmes Intel Haswell dotés des chipsets LynxPoint et LynxPoint-LP, des réactifs instantanés après la suspension sont signalés. Ils sont liés à des implémentations ACPI de BIOS erronées et à la façon dont le module xhci_hcd les interprète lors du démarrage. En tant que solution de contournement, les systèmes affectés signalé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 si les déclencheurs de réveil ACPI sont activés. Une solution viable pour un tel système, si ce n’est pas encore sur la liste noire, consiste à désactiver les déclencheurs de réveil. Voici un exemple de désactivation du réveil via USB: []

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, EHC2 et XHC (pour USB 3.0). Pour basculer leur état, vous devez attribuer le nom de l’appareil au fichier en tant que root.

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

Cela devrait permettre à la suspension de fonctionner à nouveau. Cependant, ces paramètres ne sont que temporaires et devraient être définis à chaque redémarrage. Pour automatiser cela, jetez un oeil à systemd # Écriture des fichiers d'unité . Voir fil de discussion BBS pour une solution possible et plus d'informations.


L'article complet d'Arch Linux ci-dessus sur Suspend/Resume 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
4
WinEunuuchs2Unix