Come eseguire il debug di un problema di sospensione?


11

Avevo installato Fedora 14 su questo HP Compaq 610 e la funzione di sospensione funzionava bene. Ora che ho installato Scientific Linux 6.1 suspend non funziona più. Come posso eseguire il debug / risolvere il problema?


È questa la sospensione della shell (<kbd> Cntl-z </kbd>) o il sistema operativo (sospensione o ibernazione)?
Arcege,

@Arcege: suppongo che intendesse sospendere ACPI, poiché è diventato un problema così comune in questi giorni.
JM Becker,

Risposte:


9

Esistono molti modi per gestire le funzionalità di sospensione e ibernazione, molti dei vecchi metodi sono obsoleti. Ciò ha reso difficile la ricerca di soluzioni, in quanto sembra che ogni soluzione sia completamente estranea alla successiva. Detto questo ...

Il metodo attualmente raccomandato, sostenuto da http://pm-utils.freedesktop.org/wiki/ , dovrebbe essere disponibile per le distribuzioni più recenti. Vorrei prima verificare se hai pm-utilsinstallato e se i comandi inclusi funzionano come previsto.

Visualizza se il pacchetto è installato, inserisci questo comando nel terminale

rpm -qa | grep pm-utils

Questo dovrebbe generare la versione che hai installato. Se non si ottiene l'output previsto, è necessario installare il pacchetto.

sudo yum install pm-utils

Una volta verificato, verifica la tua capacità di sospendere.

sudo pm-suspend

Se non si sospende e non si ottiene alcun output perché, controllare l'output dmesg recente

dmesg | tail -50

Questo dovrebbe aiutarti a iniziare, una volta che hai trovato alcuni indizi è molto più facile andare più avanti lungo il sentiero. Riporta post con commenti sui tuoi risultati, posso farti passare il resto.


Ho anche installato pm-utils-devel. pm-suspend con l'utente root fa lo stesso che con un utente normale quando fa clic su GNOME / menu-> suspend-> niente, la macchina dice solo "la rete è spenta", quindi aspetta e aspetta, ecc. posso inizio qualcosa dopo che sto provando a sospendere. Vedrò il Dmesg più tardi, grazie!
LanceBaynes,

L' dmesgoutput ti dirà cosa sta succedendo dietro la scena. Ancora più importante, ciò che in particolare potrebbe non riuscire. O e BTW, non è necessario il pacchetto di sviluppo. Ti servono solo quando compili il codice, quindi sentiti libero di eliminare. Ci sono molte direzioni da seguire da qui, semplicemente non ti mando ad abbaiare sull'albero sbagliato.
JM Becker,

1
@LanceBaynes hai provato a eseguire i pm-suspendcomandi da una shell e non attraverso il menu GNOME? Prova echo -n "mem" >/sys/power/statecome root. Inoltre, se stai usando acpi, puoi acpi_listenvedere quali eventi vengono generati, ad esempio alla chiusura del coperchio.

WOW, wtf? Ho "echo -n" mem "> / sys / power / state" con l'utente root e il mio effettivamente sospeso !!!! WOW. L'unico problema è ora che quando faccio questo tipo di sospensione, gnome-screensaver non si avvia e mi lascia un PC sbloccato. Come aggirare questo? Come posso creare uno script / qualsiasi cosa in modo che un utente normale possa usare anche questo tipo di sospensione? non solo l'utente root? - e un'altra cosa: GRAZIE!
LanceBaynes,

2
@LanceBaynes: ora funziona? ... Credevo che questo tipo di "sorpresa" di Rottura / Riparazione fosse avvenuto solo con Widoze. Sfortunatamente, ho smesso di crederci per un po '. Ma ... il lato positivo, succede meno spesso! E la tua sospensione funziona, quindi questa è una grande notizia!
JM Becker,

8

Prova questo come root:

PM_DEBUG=true pm-suspend

Quindi controlla i /var/log/pm-suspend.logsuggerimenti su cosa potrebbe andare storto.

Se puoi sospendere, ma non riprendere, c'è un buon articolo sulla wiki di Ubuntu su come eseguire il debug di questo problema.


2

Se vuoi ottenere solo quando hai sospeso / ripreso il sistema, puoi provare questo:

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

Come suggerito da Mika, come root:

PM_DEBUG=true pm-suspend

Dettagli all'interno di:

/var/log/pm-suspend.log

In questo caso stai cercando dove

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

finisce, e

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

comincia. Da qualche parte nel mezzo potresti trovare delle chiamate che restituiscono errori, a quel punto la sospensione è inibita. In questo caso, è possibile che sia stato sospeso il rollback delle modifiche. Scopri quale chiamata di servizio sta generando l'errore, aprilo in vi e dai un'occhiata.

Ho avuto lo stesso problema in cui dopo l'installazione xboxdrvsu Ubuntu 12.04, una chiamata effettuata in una regola /etc/pm/sleep.d/stava cercando di interrompere un servizio che non era mai stato avviato o inesistente, in questo caso xboxdrv,. Si scopre che non potrebbe mai essere avviato in primo luogo, perché non c'era un /lib/modules/uinput.komodulo, perché quel modulo è unito nel kernel. In questo modo l'istruzione case ha /etc/pm/sleep.d/xboxdrvgenerato un errore quando case corrisponde a "sospendi" alla chiamata service xboxdrv stop. Preparare la linea con #ignora la dichiarazione, a spese di dover scollegare e ricollegare il controller in caso di sospensione, quindi riprendere.


Non ho errori nel registro di debug dopo averlo eseguito, ma magicamente ha ricominciato a funzionare ;-) Mi chiedo se è una correzione permanente ...
Wirone,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.