Forçar hibernação usando hibernação em vez de pm-hibernação


15

Estou executando o 18.04 e tentando fazer com que meu sistema use o hibernate em vez do pm-hibernate quando a tampa do meu laptop se fechar.

Eu tenho uma partição de swap de 20 GB em 16 GB de RAM, espaço suficiente.

Quando uso pm-hibernate, recebo um pequeno erro apci que aparece muito rapidamente ao hibernar e restaurar que não consigo ler. Embora o hibernate funcione no sentido em que parece despejar no disco e restaurá-lo, parece ser um estado de suspensão, pois usa a bateria a uma taxa normal, em vez de desligar completamente e interromper o uso da bateria.

No entanto, quando eu uso o hibernate instalado por:

sudo apt-get install hibernate

E corra:

sudo hibernate

E, restaurando a partir disso, percebo que minha máquina de fato desliga - os LEDs param de pulsar etc. - e o uso da bateria fica em zero. Esse é o comportamento que eu gostaria de ver quando minha tampa se fecha, não o comportamento do sono que usa a bateria como se eu estivesse fazendo uso ativo do computador.

Eu segui estes guias:

modificado

/etc/systemd/logind.conf

incluir:

#HandleLidSwitch=suspend
HandlelidSwitch=hibernate

E adicionei minha alteração da partição swap em:

/etc/default/grub

Para incluir o resumo correto = link e o s2disk solicitado especificamente com:

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

Eu li o seguinte askubuntus relacionado:

Também li esses links nos fóruns da Lenovo e do Arch:

Como posso garantir que o hibernate chamado por tampa-fechamento seja hibernado e não pm-hibernado?

Atualizar

Isso ainda é um problema e ainda torna a 6ª geração do Carbon X1 fundamentalmente inútil no ubuntu. Quaisquer soluções que possam corrigir isso e talvez adicionar adicionalmente um prompt de login podem ser quase tão boas quanto uma máquina Windows de 4 anos atrás ...;)


@Mittenchops Eu poderia resolver esse problema para mim, por favor, dê uma olhada no askubuntu.com/questions/1028947/…
Christopher Will

11
Você pode adicionar os dados do log de um ciclo completo de retomada de hibernação à sua pergunta? Ele deve estar em /var/log/pm-suspend.log. Obrigado.
David Foerster

@ Mittenchops não tenho certeza, mas talvez meu problema esteja relacionado ao seu. o meu também é um hardware da Lenovo.
ViBE

11
Eu não uso a hibernação, mas você pode tentar renomear /usr/sbin/pm-hibernatepara /usr/sbin/pm-hibernate.OLD. Em seguida, crie /usr/sbin/pm-hibernatebash scxript que contém o hibernatecomando. Use type -a hibernatepara encontrar o caminho exato para o comando. Não existe no meu sistema porque não o instalei.
WinEunuuchs2Unix

Atualizei minha resposta com o script de wrapper proposto em 14 de julho de 2018.
WinEunuuchs2Unix

Respostas:


1

Eu também odeio ter que passar um URL para copiar e colar as informações e anexar a página da web na parte inferior. Eu não vejo isso no seu link.

Ao ler isso, notei que a hibernação pode não funcionar se você tiver formatado com o sistema de arquivos btrfs? Então, como a hibernação está permanentemente ativada no Ubuntu 16.04?

Para tornar o processo de hibernação do Ubuntu permanente, você precisa criar um novo arquivo usando um editor de texto na linha de comando:

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

O sistema requer privilégios de root para ativar a opção de hibernação; portanto, o comando sudo deve ser adicionado. Você pode usar outros editores de texto como vi, gedit, emacs etc.

Agora, copie e cole o seguinte texto em um arquivo (use o mouse; os atalhos de teclado não funcionarão):

[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

Pressione CTRL+ Opara salvar e CTRL+ Xpara sair do nano editor.

Agora, efetue logout do seu sistema e efetue login novamente. Agora você verá uma opção de hibernação, juntamente com as opções Desligar e Suspender.

O link para sua conveniência é: https://fossbytes.com/enable-disable-hibernate-option-ubuntu-power-menu/


2
Isto não parece funcionar em 18.04
Mittenchops

1

Duas opções

A primeira opção (listada em segundo) é revisar journalctlpossíveis mensagens de erro relacionadas à hibernação. Se a primeira opção não produzir resultados, a segunda opção é criar um script de wrapper que substitua pm-hibernatepor `hibernate.

Criar script Wrapper

Criar um script de wrapper permite hibernatesubstituir pm-hibernate.

Os comandos Localizar diretórios estão localizados em

Antes de criar o script do wrapper, você precisa saber em quais diretórios os comandos hibernatee pm-hibernateresidem. Use estes dois 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

O script do wrapper que você deseja criar será /usr/sbin/pm-hibernate. Como não tenho o hibernatepacote instalado, a primeira pesquisa encontra apenas um utilitário do Windows. De acordo com a lista de arquivos do pacote , ele deve ser revelado /usr/sbin/hibernatejunto com alguns outros arquivos.

Arquivo original de backup

Primeiro, queremos fazer uma cópia de backup on-line do arquivo original:

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

Em seguida, exclua o arquivo original:

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

Criar script de wrapper

Nota: em vez de um muitos acham script wrapper que seja mais fácil para criar um link simbólico para pm-hibernatea hibernate: Como criar um soft ou link simbólico?

Eu gosto de usar geditpara editar, mas você pode substituí-lo por nanoou pelo vimeditor que preferir:

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

Um arquivo vazio aparecerá. Cole nas seguintes linhas

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

Converter script de wrapper em executável

Atualmente, o script do wrapper é um arquivo regular. Precisamos convertê-lo em um objeto executável:

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

Agora temos um script de wrapper operacional, portanto, toda vez que pm-hibernateé chamado de hibernateexecução. Conforme mencionado na parte superior, porém, você deve revisar journalctlprimeiro (descrito a seguir) antes de criar um script de wrapper.

Reveja journalctl

Você pode grepenviar as mensagens de hibernação journalctlpara possíveis problemas.

Eu não uso o hibernate, mas uso o suspend. O comando a seguir me permite ver todas as mensagens pertencentes às suspendquais você substituiria 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

Como sudo -H /usr/sbin/pm-hibernateabre um editor? Estou tentando seguir as instruções, não quero fazer suposições
Stewart

11
@ Stewart Boa captura. Deve ler sudo -H gedit /usr/sbin/pm-hibernatecomo eu acabei de mudar.
WinEunuuchs2Unix

11
@ Stewart Você está hibernando com a tampa fechada, botão liga / desliga ou opção de menu?
WinEunuuchs2Unix

11
Finalmente consertei! Sua sugestão me deu pistas suficientes, de que, com algum google-fu, eu acabei em unix.stackexchange.com/a/386837
Stewart

11
@ Stewart Fico feliz em ouvir. Obrigado por apontar a resposta para Unix e Linux. Eu votei para cima.
WinEunuuchs2Unix
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.