Após hibernar com systemctl hibernate
, o sistema inicializa normalmente como se tivesse sido desligado. Eu tenho o parâmetro resume na linha do kernel e o gancho resume em mkinitcpio.conf
Estas são as mensagens relevantes do kernel:
$ dmesg | grep -i swap
[ 0.000000] Command line: initrd=\initramfs-linux.img root=/dev/sda2 rw resume=/dev/sda4
[ 0.000000] Kernel command line: initrd=\initramfs-linux.img root=/dev/sda2 rw resume=/dev/sda4
[ 0.350295] PM: Checking hibernation image partition /dev/sda4
[ 8.776686] Adding 8191996k swap on /dev/sda4. Priority:-1 extents:1 across:8191996k FS
$ dmesg | grep -i hibern
[ 0.350295] PM: Checking hibernation image partition /dev/sda4
[ 0.350301] PM: Hibernation image not present or could not be loaded.
Então a única possibilidade restante é quesystemctl
não gravou no disco. Na verdade, quando executo o comando, a tela primeiro fica em branco por alguns segundos, depois posso ver meu terminal novamente e, finalmente, ele desliga sozinho.
Eu li que os pm-utils não funcionam muito bem com o systemd, então não gostaria de mudar para eles. Alguma sugestão?
Obrigado!
Responder1
Para elaborar o comentário de @AdrianRatnapala, você deve:
Encontre o uuid da sua partição swap. Suponha que a partição seja sdb3, então
$ ls -l /dev/disk/by-uuid/ | grep sdb3 lrwxrwxrwx 1 root root 10 окт. 9 08:59 1dd7e123-1f82-45f0-a202-0ff3ea6f081a -> ../../sdb3
Abra
/etc/default/grub
e encontre a linha que começa comGRUB_CMDLINE_LINUX_DEFAULT="
. Adicione aí entre as aspasresume=/dev/disk/by-uuid/your-swap-uuid
. Como um exemplo:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/disk/by-uuid/1dd7e123-1f82-45f0-a202-0ff3ea6f081a"
- Execute como root
update-grub
- É necessária uma reinicialização para usar a nova linha de comando do kernel.
Responder2
Quero compartilhar meu sucesso aqui porque pode ajudar outras pessoas com esse problema. Resumindo, para quem deseja pular os detalhes: Depois de alterar a linha GRUB_CMDLINE_LINUX_DEFAULT no arquivo /etc/default/grub e fazer update-grub, desligue e reinicie completamente a máquina antes de tentar a hibernação.
Os detalhes: Acabei de implementar com sucesso a hibernação na instalação Linux do meu Lenovo ThinkPad T480 (dual boot Debian 9 e Windows) seguindo o conselho acima para adicionar um parâmetro resume=UUID= à linha GRUB_CMDLINE_LINUX_DEFAULT em /etc/default/grub. Mas não funcionou da primeira vez. Adicionei o parâmetro, executei update-grub e tentei hibernar (systemctl-hibernate). O sistema parecia hibernar, mas quando ligado novamente, a imagem da tela anterior aparecia e permanecia por vários segundos antes de a máquina entrar na tela de login que normalmente aparece na inicialização; todo o trabalho presente antes do fim da hibernação. Finalmente notei (syslog grep 'linha de comando') que a linha GRUB_CMDLINE_LINUX_DEFAULT alterada NÃO foi passada para o kernel. Depois de mais esforço, descobri que um desligamento completo e uma reinicialização resultariam na passagem da linha alterada (grep 'linha de comando' syslog novamente). Depois disso, o systemctl hibernate induziu a hibernação como antes, mas ao ligar o estado anterior da máquina foi restaurado corretamente.