¿Cómo depurar un problema de suspensión?

11

Solía ​​tener instalado Fedora 14 en este HP Compaq 610, y la función de suspensión funcionó bien. Ahora que he instalado Scientific Linux 6.1, suspender ya no funciona. ¿Cómo lo depuro / soluciono?

LanceBaynes
fuente
¿Es esta la suspensión de shell (<kbd> Cntl-z </kbd>) o el sistema operativo (suspensión o hibernación)?
Arcege
@Arcege: Supongo que se refería a la suspensión de ACPI, ya que se ha convertido en un problema tan común en estos días.
JM Becker

Respuestas:

9

Hay muchas formas de manejar las capacidades de suspensión e hibernación, muchos de los métodos antiguos están en desuso. Esto ha dificultado la búsqueda de soluciones, ya que parece que cada solución no tiene relación alguna con la siguiente. Con eso dicho...

El método actualmente recomendado, recomendado en http://pm-utils.freedesktop.org/wiki/ , debería estar disponible para las distribuciones más recientes. Primero verificaría si ha pm-utilsinstalado, y si los comandos incluidos están funcionando como se esperaba.

Ver si el paquete está instalado, ingrese este comando en la terminal

rpm -qa | grep pm-utils

Esto debería mostrar la versión que ha instalado. Si no obtiene el resultado esperado, debe instalar el paquete.

sudo yum install pm-utils

Una vez que lo verifique, pruebe su capacidad de suspender.

sudo pm-suspend

Si no suspende, y no obtiene salida por qué, verifique su salida dmesg reciente

dmesg | tail -50

Esto debería ayudarlo a comenzar, una vez que obtenga algunas pistas, es mucho más fácil avanzar por el camino. Regrese con comentarios sobre sus resultados, puedo ayudarlo con el resto.

JM Becker
fuente
Incluso instalé pm-utils-devel. pm-suspend con usuario root hace lo mismo que con un usuario normal cuando hace clic en GNOME / menu-> suspend-> nothing, la máquina solo dice "la red está apagada", luego solo espera y espera, etc. No empiezo nada después de que estoy tratando de suspender. Veré el dmesg más tarde, ¡gracias!
LanceBaynes
La dmesgsalida le dirá lo que está sucediendo detrás de escena. Más importante aún, lo que en particular podría estar fallando. O y, por cierto, no necesita el paquete de desarrollo. Solo los necesita al compilar código, así que no dude en purgarlos. Hay muchas direcciones a seguir desde aquí, solo que no debo enviarte ladrando al árbol equivocado.
JM Becker
1
@LanceBaynes, ¿intentó ejecutar los pm-suspendcomandos desde un shell y no a través del menú GNOME? Prueba echo -n "mem" >/sys/power/statecomo root. Además, si está utilizando acpi, puede acpi_listenver qué eventos se generan, por ejemplo, al cerrar la tapa.
WOW, wtf? ¡"Echo -n" mem "> / sys / power / state" con el usuario root, y mi realmente suspendido !!!! GUAU. El único problema ahora es que cuando estoy haciendo este tipo de suspensión, gnome-screensaver no se inicia y me deja una PC desbloqueada. Cómo evitar esto? ¿Cómo puedo hacer un script / cualquier cosa para que un usuario normal pueda usar este tipo de suspensión también? no solo el usuario root? - Y una cosa más: ¡GRACIAS!
LanceBaynes
2
@LanceBaynes: ¿Ahora funciona? ... Solía ​​creer que este tipo de ruptura / reparación "sorpresa" solo ocurrió con Widoze. Desafortunadamente, dejé de creer eso por un tiempo. Pero ... por el lado positivo, ¡sucede con menos frecuencia! Y su suspensión está funcionando, así que ¡son buenas noticias!
JM Becker
8

Prueba esto como root:

PM_DEBUG=true pm-suspend

Luego revise /var/log/pm-suspend.logsi hay pistas sobre lo que podría salir mal.

Si puede suspender, pero no reanudar, hay un buen artículo en el wiki de Ubuntu sobre cómo depurar este problema.

Mika Fischer
fuente
2

Si solo desea obtener cuando suspendió / reanudó el sistema, puede intentar esto:

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.
dmatej
fuente
1

Como lo sugiere Mika, como raíz:

PM_DEBUG=true pm-suspend

Detalles dentro de:

/var/log/pm-suspend.log

En este caso estás buscando dónde

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

termina y

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

comienza En algún punto intermedio puede encontrar llamadas que devuelven un error, en cuyo punto se suspende la suspensión. En este caso, es posible que tenga que suspender los cambios revertidos. Averigua qué llamada de servicio arroja el error, ábrelo en vi y échale un vistazo.

Tuve el mismo problema cuando, después de instalar xboxdrven un Ubuntu 12.04, una llamada realizada en una regla en /etc/pm/sleep.d/estaba tratando de detener un servicio que nunca se inició o que no existe, en este caso xboxdrv,. Resulta que nunca podría iniciarse en primer lugar, porque no había ningún /lib/modules/uinput.komódulo, porque ese módulo está fusionado con el núcleo. Esto provocó que la declaración del caso /etc/pm/sleep.d/xboxdrvarroje un error cuando el caso coincide con "suspender" a la llamada service xboxdrv stop. Al anteponer la línea, se #omite la declaración, a expensas de tener que desconectar y volver a enchufar el controlador al suspender y luego reanudar.

SYANiDE
fuente
No tengo errores en el registro de depuración después de ejecutar esto, pero mágicamente comenzó a funcionar nuevamente ;-) Me pregunto si es una solución permanente ...
Wirone