¿Cómo depurar la suspensión?

29

He estado usando Ubuntu durante unos cinco años y todavía no puedo suspenderlo cuando quiero. Es bastante irritante que pueda programar una tormenta, piratear la máquina de muchas otras maneras y, sin embargo, y cuando trato de hacer que se suspenda o depure la suspensión, fallo miserablemente.

Necesito ayuda.

¿Dónde empiezo a encontrar el problema? ¿Qué hago para arreglarlo? Estoy haciendo una recompensa por esto, porque literalmente he perdido horas de mi vida por este problema, y ​​dejar mi computadora encendida TODO el tiempo es terrible.

Los síntomas:

  • Al presionar suspender, mi computadora llega a un estado donde tiene un cursor parpadeante, los ventiladores están funcionando, parece que la HD se apagó (creo) y no puedo hacer nada para recuperarla de este estado (menos un reinicio duro).
  • Posiblemente relacionado: mis ventiladores permanecen encendidos incluso después de un apagado, e incluso entonces, tengo que presionar el botón de encendido durante cinco segundos antes de poder volver a encenderlo.
  • No sé qué registros mirar para depurar el problema, e imagino que de todos modos serían destruidos al reiniciar.

Por favor, por favor ayuda. Esto me vuelve completamente loco, y he estado viviendo con eso por más de un año.

mlissner
fuente
¿Has tenido suerte con esto? Personalmente estoy atascado inicializando el hardware de gráficos. Probablemente podría programar mi salida con el tiempo suficiente ... pero sería mucho más fácil tener algún método para solucionar el problema directamente.
Henrik
Si no hay suerte Aparentemente no hay ningún método para depurar la suspensión, lo cual es un poco impactante.
mlissner
1
¿Cómo estás suspendiendo? ¿Estás corriendo desde la línea de comando pm-suspend? ¿Estás usando una tecla de suspensión en tu teclado? ¿Estás haciendo una llamada a acpi (p. Ej. /Etc/acpi/sleep.sh o /etc/acpi/sleepbtn.sh)?
M. Tibbits
1
Para los cazarrecompensas: estoy buscando principalmente recetas generales de depuración, es decir, recopilación de información, para instalaciones de Ubuntu más recientes que usan systemd. Espero que podamos usar esta pregunta como un duplicado canónico para preguntas amplias de problemas de suspensión por parte de usuarios sin experiencia.
David Foerster
2
@pbhj: De cualquier manera, uno necesita un diagnóstico de problema adecuado como primer paso en el camino hacia una solución.
David Foerster

Respuestas:

22

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

  • El mayor problema es el hardware de gráficos
  • intente suspender sin dispositivos restringidos (nvidia, fglrx)
  • kernel no sabe cómo manejar dispositivos gráficos
  • El BIOS sabe cómo restaurar el estado de los gráficos
    • a través del modo segmentado de 16 bits, C000: xxxx contiene la ROM de video visible de 64k.
    • iniciando la ejecución en C000: 0003, normalmente vuelve a publicar el BIOS del video (/ usr / sbin / vbetool post)
      • más difícil en el modo de 64 bits, ya que las llamadas de 16 bits deben emularse.
      • parte de la memoria está en el rango de 3-4G, lo que requiere una reasignación al emular para evitar golpear el núcleo que se asigna en el mismo espacio. o el BIOS del video puede haber paginado el código POST desde la ventana de C000 o nvidia BIOS reescribe la ROM para simplemente regresar para detener el re-POSTing, intente suspender desde la consola (a través de /etc/acpi/sleep.sh)
    • asegúrese de haber cerrado sesión en Xorg (o ejecute sleep.sh con el argumento "force")
    • si el BIOS de video no se deja en un estado sano, regresar a Xorg puede bloquear el hardware
    • prueba el bloqueo de mayúsculas en el currículum (si no hay bloqueo de mayúsculas, el núcleo se colgó)
    • Si la luz de fondo no se vuelve a encender, el BIOS del video probablemente no se reinició
    • si la pantalla está en blanco, pero tiene luz de fondo, intente presionar enter o cambiar entre terminales virtuales
    • intente en modo de usuario único (agregando "single" a las opciones de arranque del núcleo de grub)
    • Para obtener detalles sobre las acciones, intente bash -x /etc/acpi/sleep.sh> /root/sleep.log 2> & 1
    • mire la información de dmidecode que coincide con la configuración en /usr/share/acpi-support/*.config
    • si la consola de modo de usuario único suspende o reanuda falla
    • Seguimiento de PM (echo "1"> / sys / power / pm_trace) que escribirá hashes del dispositivo en el temporizador del sistema
    • intento de suspender
    • después de la falla, al reiniciar, examine la salida dmesg para las entradas de "hash del dispositivo" para rastrear el dispositivo que colgó el sistema durante la reanudación.
    • consciente de que esto restablecerá el reloj del sistema y fsck se asustará ("ha estado sin fsck durante 31337 días"). considere tune2fs -c 0 / dev / your / filesystems.
Henrik
fuente
2
¿Cómo apago los dispositivos restringidos?
Owen
1
¿Hay algún enlace a secuencias de comandos de trabajo para sanar marque una casilla cuando falla la suspensión? ... este tipo de problema es la ruina de Linux y bloquea el uso masivo ...
Scott Stensland
4

Puede encontrar muchas pautas / consejos aquí y aquí .

Según su descripción, parece que su ACPI no funciona correctamente o que los controladores del núcleo impiden una suspensión completa. El segundo enlace muestra cómo lidiar con ese tipo de problema.

evgeny
fuente
2
Lo leí de nuevo, pero no llegan a la información realmente útil para mi problema. Necesita más ayuda y mejores detalles. He creado una recompensa por esta pregunta.
mlissner
44
Mala respuesta: solo enlaces. El objetivo de los sitios de Stack * es proporcionar un lugar de referencia para todas las preguntas, no enviar a los usuarios a una persecución sin fin o decir 'solo f * google it'. Inserte su respuesta en la pregunta y actualícela de acuerdo con el comentario de mlissner.
Henrik
Gracias: ¡A veces es útil leer la página de inicio original!
abu_bua 01 de
4

Los síntomas:

  • Al presionar suspender, mi computadora llega a un estado donde tiene un cursor parpadeante, los ventiladores están funcionando, parece que la HD se apagó (creo) y no puedo hacer nada para recuperarla de este estado (menos un reinicio duro).
  • Posiblemente relacionado: mis ventiladores permanecen encendidos incluso después de un apagado, e incluso entonces, tengo que presionar el botón de encendido durante cinco segundos antes de poder volver a encenderlo.
  • No sé qué registros mirar para depurar el problema, e imagino que de todos modos serían destruidos al reiniciar.

Mi sitio para muchos problemas de Linux es Arch Linux. Esto es lo que se publica sobre problemas de suspensión / reanudación similares a los suyos:

Despertadores instantáneos de suspensión

Para algunos sistemas Intel Haswell con el conjunto de chips LynxPoint y LynxPoint-LP, se informan reactivaciones instantáneas después de la suspensión. Están vinculados a implementaciones erróneas de BIOS ACPI y cómo el xhci_hcdmódulo lo interpreta durante el arranque. Como una solución alternativa, los sistemas afectados se agregan a una lista negra (nombrada XHCI_SPURIOUS_WAKEUP) por el núcleo caso por caso. [ 2 ]

Puede suceder un reinicio instantáneo, por ejemplo, si un dispositivo USB está conectado durante la suspensión y se activan los activadores de activación de ACPI. Una solución viable para dicho sistema, si todavía no está en la lista negra, es desactivar los activadores de activación. A continuación se describe un ejemplo para deshabilitar la activación mediante USB. [ 3 ]

Para ver la configuración actual:

$ 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

...

Los dispositivos relevantes son EHC1, EHC2y XHC(para USB 3.0). Para alternar su estado, debe hacer eco del nombre del dispositivo en el archivo como raíz.

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

Esto debería provocar que la suspensión vuelva a funcionar. Sin embargo, esta configuración es solo temporal y debería establecerse en cada reinicio. Para automatizar esto, eche un vistazo a systemd # Escritura de archivos de unidad . Vea el hilo de BBS para una posible solución y más información.


El artículo completo de Arch Linux sobre Suspender / Reanudar es una gran referencia para muchas áreas:

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
fuente
¡Se ve bien! Esperaré otro día o dos para darles a otros la oportunidad de responder. Quizás alguien se sienta inspirado por el tuyo. :-)
David Foerster
@DavidFoerster Gracias. Es difícil responder una pregunta de 8 años. También hay un problema de suspensión / reanudación con las SSD NVMe M.2 PCIe que agregaré esta noche. Estos tipos de SSD no existían en 2010 y requieren un argumento especial de kernel grub.
WinEunuuchs2Unix
Estaba buscando menos soluciones para problemas de suspensión específicos y más para recetas generales de depuración para instalaciones de Ubuntu más recientes usando systemd.
David Foerster
@DavidFoerster En ese caso, dejaré la respuesta como está :)
WinEunuuchs2Unix