Forzar hibernación usando hibernate en lugar de pm-hibernate

15

Estoy ejecutando 18.04 e intento que mi sistema use hibernate en lugar de pm-hibernate cuando se cierra la tapa de mi computadora portátil.

Tengo una partición de intercambio de 20 GB en 16 GB de RAM, un espacio tan amplio.

Cuando uso pm-hibernate, aparece un pequeño error de apci que aparece muy rápidamente cuando hiberna y restaura que no puedo leer. Si bien la hibernación funciona en el sentido de que parece volcar en el disco y restaurar desde el disco, parece ser un estado de suspensión en el sentido de que usa la batería a una velocidad normal, en lugar de apagarse por completo y dejar de usarla.

Sin embargo, cuando uso la hibernación instalada por:

sudo apt-get install hibernate

Y correr:

sudo hibernate

Y restaurando a partir de eso, noto que mi máquina se apaga, los LED dejan de latir, etc., y el uso de la batería se pone en cero. Este es el comportamiento que me gustaría ver cuando mi tapa se cierra, no el comportamiento de suspensión que usa la batería como si estuviera haciendo un uso activo de la computadora.

He seguido estas guías:

modificado

/etc/systemd/logind.conf

para incluir:

#HandleLidSwitch=suspend
HandlelidSwitch=hibernate

Y agregué mi cambio de partición de intercambio en:

/etc/default/grub

Para incluir el enlace resume = correcto, y solicitó s2disk específicamente con:

sudo cat /etc/pm/config.d/00sleep_module
SLEEP_MODULE="swsusp"

He leído los siguientes askubuntus relacionados:

También he leído estos enlaces en los foros de Lenovo y Arch:

¿Cómo puedo asegurarme de que la hibernación llamada por lid-close sea hibernate no pm-hibernate?

Actualizar

Esto sigue siendo un problema y todavía hace que Carbon X1 6th gen sea básicamente inútil con ubuntu. Cualquier solución que pueda solucionar esto y tal vez agregar un mensaje de inicio de sesión adicional podría ser casi tan buena como una máquina Windows de hace 4 años ...;)

Mittenchops
fuente
@ Mittenchops Podría resolver este problema por mí, eche un vistazo a askubuntu.com/questions/1028947/…
Christopher Will
1
¿Puede agregar los datos de registro de un ciclo completo de reanudación de hibernación a su pregunta? Debería estar adentro /var/log/pm-suspend.log. Gracias.
David Foerster
@Mittenchops no estoy seguro, pero tal vez mi problema está relacionado con el tuyo. el mío también es un hardware de Lenovo.
ViBE
1
Yo no uso la hibernación pero se puede tratar de cambiar el nombre /usr/sbin/pm-hibernatea /usr/sbin/pm-hibernate.OLD. Luego crea /usr/sbin/pm-hibernatebash scxript que contiene el hibernatecomando. Use type -a hibernatepara encontrar la ruta exacta para el comando. No existe en mi sistema porque no lo he instalado.
WinEunuuchs2Unix
He actualizado mi respuesta con el script de envoltura propuesto el 14 de julio de 2018.
WinEunuuchs2Unix

Respuestas:

1

También odio tener que pasar una URL, así que copiaré y pegaré la información y adjuntaré la página web al final. No veo esto en tu enlace.

Mientras leía esto, noté que la hibernación puede no funcionar si formateó con el sistema de archivos btrfs. Entonces, ¿cómo se habilita permanentemente la hibernación en Ubuntu 16.04?

Para hacer que el proceso de hibernación de Ubuntu sea permanente, debe crear un nuevo archivo utilizando un editor de texto en la línea de comando:

sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

El sistema requiere privilegios de root para habilitar la opción de hibernación, por lo tanto, se debe agregar el comando sudo. Puede usar otros editores de texto como vi, gedit, emacs, etc.

Ahora, copie y pegue el siguiente texto en un archivo (use el mouse; los atajos de teclado no funcionarán):

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

Presione CTRL+ Opara guardar y CTRL+ Xpara salir del editor nano.

Ahora, cierre sesión en su sistema y luego vuelva a iniciar sesión. Ahora verá una opción de hibernación, junto con las opciones Apagar y Suspender.

El enlace para su conveniencia es: https://fossbytes.com/enable-disable-hibernate-option-ubuntu-power-menu/

plutesci
fuente
2
Esto no parece funcionar en 18.04
Mittenchops
1

Dos opciones

La primera opción (la segunda lista) es revisar los journalctlposibles mensajes de error relacionados con la hibernación. Si la primera opción no produce resultados, la segunda opción es crear un script de envoltura que reemplace pm-hibernatecon `hibernate.

Crear secuencia de comandos Wrapper

Crear un script de envoltura permite hibernatereemplazar pm-hibernate.

Los comandos de buscar directorios se encuentran en

Antes de crear un script de envoltura, necesita saber en qué directorios residen los comandos hibernatey pm-hibernate. Use estos dos comandos:

$ locate bin/hibernate
/mnt/c/Program Files (x86)/CyberPower PowerPanel Business Edition/bin/hibernate.dll

$ locate bin/pm-hibernate
/mnt/clone/usr/sbin/pm-hibernate
/mnt/old/usr/sbin/pm-hibernate
/usr/sbin/pm-hibernate

El script de contenedor que desea crear será /usr/sbin/pm-hibernate. No tengo el hibernatepaquete instalado, por lo que la primera búsqueda solo encuentra una utilidad de Windows. De acuerdo con la lista de archivos del paquete , debe revelar /usr/sbin/hibernatejunto con un par de otros archivos.

Copia de seguridad del archivo original

Primero queremos hacer una copia de seguridad en línea del archivo original:

sudo cp -a /usr/sbin/pm-hibernate /usr/sbin/pm-hibernate.bak

Luego borre el archivo original:

sudo rm -f /usr/sbin/pm-hibernate

Crear script de envoltura

Nota: en lugar de un guión envoltorio muchos les resulta más fácil crear un enlace simbólico para pm-hibernatea hibernate: Cómo crear un suave o enlace simbólico?

Me gusta usar geditpara editar, pero puede reemplazarlo con nanoo con el vimeditor que prefiera:

sudo -H gedit /usr/sbin/pm-hibernate

Aparecerá un archivo vacío. Pegar en las siguientes líneas

#!/bin/bash
# Wrapper script to replace pm-hibernate with hibernate package
/usr/sbin/hibernate "$@"

Convierta script de envoltura a ejecutable

Actualmente, el script de envoltura es un archivo normal. Necesitamos convertirlo en un objeto ejecutable:

sudo chmod a+x /usr/sbin/pm-hibernate

Ahora tenemos un script de contenedor operativo, por lo que cada vez pm-hibernatese llama hibernateejecuciones en su lugar. Sin embargo, como se menciona en la parte superior, debe revisar journalctlprimero (descrito a continuación) antes de crear un script de envoltura.

revisión journalctl

Puede greplos mensajes de hibernación en journalctlbusca de posibles problemas.

No uso hibernate pero uso suspender. El siguiente comando me permite ver todos los mensajes relacionados con los suspendque reemplazaría hibernate:

$ journalctl -b | grep -i suspend
Oct 09 22:26:33 alien eyesome[21740]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 09 22:26:48 alien systemd[1]: Starting TLP suspend/resume...
Oct 09 22:26:48 alien systemd[1]: Started TLP suspend/resume.
Oct 09 22:26:48 alien systemd[1]: Starting Suspend...
Oct 09 22:26:48 alien systemd-sleep[22938]: /lib/systemd/system-sleep/sound: Going to suspend...
Oct 09 22:26:48 alien eyesome[22952]: Wakeup: Going to suspend.  Creating: /tmp/eyesome-is-suspending
Oct 09 22:26:49 alien systemd-sleep[22938]: Suspending system...
Oct 10 04:26:38 alien kernel: PM: Suspending system (mem)
Oct 10 04:26:38 alien kernel: Suspending console(s) (use no_console_suspend to debug)
Oct 10 04:26:38 alien kernel: PM: suspend of devices complete after 1142.044 msecs
Oct 10 04:26:38 alien kernel: PM: late suspend of devices complete after 19.766 msecs
Oct 10 04:26:38 alien kernel: PM: noirq suspend of devices complete after 61.505 msecs
Oct 10 04:26:38 alien kernel: Suspended for 21583.011 seconds
Oct 10 04:26:38 alien eyesome[23137]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 04:26:38 alien systemd-sleep[22938]: /lib/systemd/system-sleep/sound: Waking up from suspend...
Oct 10 04:26:38 alien eyesome[23168]: Wakeup: Called from suspend.
Oct 10 04:26:41 alien systemd[1]: Started Suspend.
Oct 10 04:26:41 alien systemd[1]: Stopping TLP suspend/resume...
Oct 10 04:26:41 alien systemd[1]: Reached target Suspend.
Oct 10 04:26:41 alien systemd[1]: suspend.target: Unit is bound to inactive unit systemd-suspend.service. Stopping, too.
Oct 10 04:26:41 alien systemd[1]: Stopped target Suspend.
Oct 10 04:26:42 alien systemd[1]: Stopped TLP suspend/resume.
Oct 10 04:26:52 alien eyesome[24459]: Daemon: Removed file: /tmp/eyesome-is-suspending
Oct 10 05:47:09 alien eyesome[12434]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 05:51:43 alien systemd[1]: Starting TLP suspend/resume...
Oct 10 05:51:44 alien systemd[1]: Started TLP suspend/resume.
Oct 10 05:51:44 alien systemd[1]: Starting Suspend...
Oct 10 05:51:44 alien systemd-sleep[28353]: /lib/systemd/system-sleep/sound: Going to suspend...
Oct 10 05:51:44 alien eyesome[28367]: Wakeup: Suspending.  Creating /tmp/eyesome-is-suspending
Oct 10 05:51:45 alien systemd-sleep[28353]: Suspending system...
Oct 10 16:30:59 alien kernel: PM: Suspending system (mem)
Oct 10 16:30:59 alien kernel: Suspending console(s) (use no_console_suspend to debug)
Oct 10 16:30:59 alien kernel: PM: suspend of devices complete after 623.519 msecs
Oct 10 16:30:59 alien kernel: PM: late suspend of devices complete after 19.654 msecs
Oct 10 16:30:59 alien kernel: PM: noirq suspend of devices complete after 61.549 msecs
Oct 10 16:30:59 alien kernel: Suspended for 38348.943 seconds
Oct 10 16:30:59 alien eyesome[28563]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 16:30:59 alien systemd-sleep[28353]: /lib/systemd/system-sleep/sound: Waking up from suspend...
Oct 10 16:30:59 alien eyesome[28599]: Wakeup: Called from suspend.
Oct 10 16:31:02 alien systemd[1]: Started Suspend.
Oct 10 16:31:02 alien systemd[1]: Stopping TLP suspend/resume...
Oct 10 16:31:02 alien systemd[1]: Reached target Suspend.
Oct 10 16:31:02 alien systemd[1]: suspend.target: Unit is bound to inactive unit systemd-suspend.service. Stopping, too.
Oct 10 16:31:02 alien systemd[1]: Stopped target Suspend.
Oct 10 16:31:03 alien systemd[1]: Stopped TLP suspend/resume.
Oct 10 16:31:13 alien eyesome[30020]: Daemon: Removed file: /tmp/eyesome-is-suspending
WinEunuuchs2Unix
fuente
¿Cómo se sudo -H /usr/sbin/pm-hibernateabre un editor? Estoy tratando de seguir las instrucciones, no quiero hacer suposiciones
Stewart
1
@ Stewart Buena captura. Debería leer sudo -H gedit /usr/sbin/pm-hibernatecomo acabo de cambiar.
WinEunuuchs2Unix
1
@Stewart ¿Estás hibernando con el botón de encendido, el botón de encendido o la opción de menú?
WinEunuuchs2Unix
1
Finalmente lo arreglé! Su sugerencia me dio suficiente pista, que con un poco de google-fu, terminé en unix.stackexchange.com/a/386837
Stewart
1
@ Stewart Me alegra saberlo. Gracias por señalar la respuesta de Unix y Linux. Lo voté a favor.
WinEunuuchs2Unix