¿Cómo puedo desactivar Hibernate completamente en Kubuntu?

11

He visto la respuesta sobre ¿Cómo deshabilitar la hibernación? , pero no tengo ese archivo. Posiblemente porque esa sugerencia fue escrita para Ubuntu, no para Kubuntu (KDE, no Gnome).

No tengo un intercambio en mi SSD encriptada, mi sistema se congela (ni siquiera puede cambiar el bloqueo de mayúsculas) si accidentalmente presiono el botón "Hibernar" en "Administración de energía". Mi teclado tiene un botón de Hibernación ( Fn+ F4) junto a los botones de control de volumen y cada vez que presiono la tecla incorrecta, el sistema se congelará después.

Entonces, ¿cuál es la forma correcta de desactivarlo? Si no hay solución, una solución alternativa también es bienvenida.

Lekensteyn
fuente
+1 Esto (y la desactivación de la suspensión) es una pregunta muy importante para cualquiera que ejecute unidades OCZ Vertex2 ... la suspensión / hibernación puede destruir instantáneamente la unidad sin la esperanza de recuperar un solo byte. :(
Russ

Respuestas:

6

Disparadores para la hibernación:

  • Presione el botón Hibernar en Inicio -> Salir -> Hibernar
  • Presione Hibernate en el icono de Energía en la bandeja del sistema
  • Enviar una señal de dbus: qdbus org.kde.kded /modules/powerdevil suspend 4

Cuando se activa la hibernación, este es el flujo de ejecución:

  1. /usr/lib/hal/scripts/linux/hal-system-power-hibernate-linux se llama
  2. /usr/sbin/pm-hibernate se llama con algunos argumentos
  3. El registro comienza a /var/log/pm-suspend.log
  4. Los ganchos se ejecutan para prepararse para la hibernación. Estos ganchos están ubicados en /usr/lib/pm-utils/sleep.d/y /etc/pm/sleep.d, y ordenados por nombre (primero los números)
  5. performing hibernate se escribe en el registro
  6. Se do_hibernatellama a la función de shell , que indica al sistema que hiberne
  7. Cuando se reanuda el sistema, se ejecutan ganchos para restaurar desde la hibernación
  8. El sistema se está ejecutando nuevamente.

Para deshabilitar la hibernación, cree /etc/pm/sleep.d/000no-hibernationcon el siguiente contenido:

#!/bin/sh
# prevents hibernation
. "$PM_FUNCTIONS"
[ "$1" = "hibernate" ] && inhibit || true

Como 000no-hibernationse llama antes de scripts como 00logging(módulos de salidas e información de memoria en el registro), no se interrumpen ni descargan aplicaciones o módulos. Este nombre fue inspirado por /usr/lib/pm-utils/sleep.d/000kernel-change. Tenga cuidado con el error # 665651 que hace que los valores de retorno distintos de cero de los ganchos no puedan cancelar la suspensión o la hibernación.

Esto soluciona el problema de hibernación para mí. Aunque la pantalla se bloquea, puedo vivir con esto. Es mucho mejor en comparación con un sistema que falla.

Lekensteyn
fuente
He agregado || truepara evitar un código de salida distinto de cero, lo que evita la suspensión. Probado para trabajar para suspender y bloquear la hibernación.
Lekensteyn
¡Gran respuesta! Muy minucioso .. Gracias por publicar lo que encontraste. Extendiéndose en él, este script (del informe de error que ha vinculado) detiene limpiamente tanto la hibernación como la suspensión. Editar para hacer solo uno de ellos también es trivial.
Russ