Habilitando a hibernação no Linux

Desativado por padrão em várias distros Linux, o recurso de hibernação despeja o conteúdo da RAM no disco, desligando completamente a máquina e agilizando o processo de boot ao reabrir tudo que estava em execução!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


Introdução

O Hibernate, modo de hibernação ou simplesmente hibernar, é uma opção que permite que você salve o estado do sistema diretamente no seu disco rígido, de modo que quando você liga-lo de volta, todos os programas podem ser restaurados de onde parou e você pode começar a trabalhar com o mesmo estado do sistema que estava antes de desligar, sem perder nenhum dado.

Estava usando o Chrome com 15 abas abertas e música tocando? Tudo será retirado da RAM e despejado no disco ao desligar. Quando ligar novamente, o sistema estará logado, com o Chrome aberto e a musica tocando novamente.

No Ubuntu, o Hibernate costuma vir habilitado porém “indisponível” mas é simples ativá-lo. Em sistemas em que ele está desativado, ensino como habilitá-lo!

Antes de continuarmos, há algumas coisas importantes que você precisa saber para ativar o Hibernate.

Por que o Hibernate não está ativado?

Bem, o Hibernate não funciona perfeitamente em diversas configurações de software de diversas distros Linux. Se o modo de hibernação não funcionar corretamente, isso pode causar perda de dados após o início do sistema.

Pelo risco de perder dados, os desenvolvedores preferiram deixar sua ativação á gosto do usuário – infelizmente isso não contempla a todos, sendo algo pouco amigável.

Suspender ou Hibernar?

Há uma bela diferença aqui!
Provavelmente seu sistema possui a opção nativamente de Suspender.
A suspensão do sistema apenas paralisa ele, mantendo todos os dados na RAM e diminuindo absurdamente o estado de funcionamento do processador e desligando componentes não-vitais, como placa de vídeo e parte do processador.
Como a RAM opera com baixa tensão, em torno de 1.2 volts, o consumo de energia é bem menor.

Porém a desvantagem do modo Suspensão é que se acabar a energia, tudo que você estava fazendo será perdido, e digo mais: Dependendo do que você estava fazendo, poderá corromper o sistema.

Aqui, vou ensinar como Hibernar o sistema, que é despejar as coisas da RAM no HD, permitindo que você tire o sistema da energia e continua com seus dados íntegros, tal qual o Windows 10 suporta.

Meu sistema é capaz de hibernar?

Uma forma de descobrir se o seu sistema possui o modo de hibernação ativo ou não, salve seu trabalho e prepare-se para desligar o computador. Porém, em vez de desligá-lo, rode este comando no terminal:

$ sudo pm-hibernate

Ao executar o comando, seu computador será desligado. Volte a liga-lo e veja se todos os seus programas que estavam em execução antes de desligar ainda estão em execução, se voltam normalmente. Se todos os programas voltarem ao normal, o Hibernate está funcionando corretamente.

Erro?

OBS: É possivel que neste ponto você veja um erro semelhante a esse na tela:

hibernate swap header not found

Então seu sistema utiliza Swap Files em vez de Partição Swap e esta Swap File não está configurada apropriadamente para hibernar. Você terá que desligar o sistema pelo power forçadamente; Mas não se preocupe, se salvou seu trabalho, não há risco de corrompê-lo aqui.

Continuemos a publicação, logo explicarei como resolver este pequeno infortúnio.

Mais uma observação

Existe mais um problema que não posso deixar de citar. Como eu disse acima, o hibernate salva todos os seus dados que estão na RAM na partição swap que você configurou quando instalou o sistema. É por isso que para fazer uso da hibernação, a partição swap deve ser igual ou maior que a RAM! – Válido também para sistemas que usam Swap Files.

Normalmente somente partições swap são suportadas para a hibernação de forma nativa!

  • “Êpa pera lá, muita calma ladrão”, o Windows tem hibernação e até usa um arquivo para tal.
    O Linux não tem esse recurso?

Relaxa, tem sim. Desça a publicação até o título “SWAP File”, onde explico como ativar a hibernação em sistemas que usam Swap Files em vez de Partições. Se você usa Partição Swap, continue lendo.

Partição Swap

Verifique se sua Swap foi criada e está ativa com:

$ free -h

Se não estiver nada na linha “Swap”, ou ela não existir, você precisa criar uma partição swap usando o Gparted ou outro particionador via LiveUSB.

Também veja se você tem a mesma quantidade de espaço na Swap = a capacidade da sua RAM.
Se tem 8Gb de RAM, teremos 8Gb de Swap.
Se tem 16 Gb de RAM, serão 16Gb de Swap.

O problema é: Você precisa garantir que o sistema permita salvar tudo que está na RAM, ou terá problemas de sistema corrompendo! Caso a Swap não acomode todos os dados da RAM no disco, você também verá um travamento anormal do sistema.

Ativar o Hibernate em Partição Swap

Execute estes comandos para ativar a hibernação:

$ sudo -i

Vá até a pasta:

# cd /var/lib/polkit-1/localauthority/50-local.d/

Edite o arquivo:

# nano com.ubuntu.enable-hibernate.pkla

Se não funcionar ou não existir, tente pelo caminho /etc em vez de /var/lib!

Copie e cole as linhas abaixo no arquivo usando seu editor de textos favorito e salve-o:

[Reative o hibernate por padrão em upower]
Identity = unix-user: *
Ação = org.freedesktop.upower.hibernate
ResultActive = yes

[Reative o hibernate por padrão no logind]
Identity = unix-user: *
Action = org. freedesktop.login1.hibernate
ResultActive = yes

Dê logout ou reinicie seu sistema.
Depois de fazer o login, você verá a opção de hibernação no menu de energia do sistema.

Swap File

Pois bem. Os sistemas mais modernos, como a exemplo o Ubuntu 18.04 LTS, não fazem mais uso de partição SWAP, e sim de Swap File. – Abordamos como gerenciar e expandir seu Swap File nesta publicação! Será importante para poder hibernar com segurança.

Para fazer uso da Swap File, proceda da seguinte maneira:

Primeiro, crie um arquivo swap:

# fallocate -l 256m /swap
# mkswap /swap

256: refere-se ao tamanho em MBs (‘m’ depois disso). Defina isso por pelo menos metade do tamanho da sua RAM.
/swap: é uma localização do seu arquivo swap. Pode estar localizado em qualquer partição (raiz ou home, por exemplo).

Adicione isto ao final do arquivo /etc/fstab:

/swap swap swap defaults 0 0

Agora pare o uso de swap:

# sysctl -w vm.swappiness = 1

Crie um arquivo chamado local.conf em /etc/sysctl.d e adicione a variável kernel lá para que ele fique:

vm.swappiness = 1

Ative o arquivo de troca:

swapon /swap

Agora use uswsusp, que é um método de suspensão alternativo para o kernel do Linux que pode usar swap file em vez de uma partição swap e também suporta recursos como compressão e criptografia.

Instalação

Instale-o do repositório:

# sudo apt install uswsusp

Configure o uswsusp:

# dpkg-reconfigure -pmedium uswsusp

Na pergunta “continuar sem um swap válido?”, resposta sim.

Na pergunta “Trocar espaço para continuar de:”, selecione a partição em que o arquivo acima foi criado, por padrão costuma ser na raíz.

Responda a “Encrypt snapshot”? e “Mostrar tela inicial?” como você quiser, a primeira criptografa o conteúdo do arquivo de hibernação, a segunda pergunta se quer mostrar a tela inicial (sim) ou ir direto para a área de trabalho (nao).

Você pode ter que adicionar seu usuário ao grupo powerdev:

# sudo usermod -a -G powerdev $USER

Normalmente, um arquivo uswsusp.conf se parece com isto:

# /etc/uswsusp.conf(8) -- Configuration file for s2disk/s2both
resume device = /dev/sda1
compress = y
early writeout = y
image size = 238941634
RSA key file = /etc/uswsusp.key
shutdown method = platform
resume offset = 8288

O “resume offset = 8288” é onde o swapfile realmente está. Você pode obter este valor executando:

# swap-offset /swap

O “resume device” deve ser a partição onde está / e não o arquivo de troca.

Note que depois de editar o arquivo /etc/uswsusp.conf , você pode precisar executar:

# update-initramfs -u

Para testar a hibernação:

s2disk

Isso gravará o conteúdo da RAM no arquivo de troca e encerrará o sistema. Pressione o botão de energia para acorda-lo. Para ativar este método como o sistema padrão para hibernação, edite /usr/lib/hal/scripts/linux/hal-system-power-hibernate. Existe um bug neste script e ele irá procurar por s2disk no lugar errado, você terá que editá-lo para que fique assim:

/sbin/s2disk

Este script está no pacote HAL, o que significa que ele será interrompido se o HAL for atualizado. Se o hibernate não funcionar após uma atualização, você terá que reeditar o /usr/lib/hal/scripts/linux/hal-system-power-hibernate. Uma boa ideia seria fazer um backup do arquivo para reinserção rápida após uma quebra de atualização.

Se o s2disk hibernar, mas o initramfs falhar ao ver o seu arquivo de troca na inicialização e o sistema continuar a inicializar normalmente como se o arquivo de swap não estivesse lá, você precisará adicionar o gancho “resume” ao seu/etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sda1 quiet splash"

Onde “/dev/sda1” é uma partição onde seu arquivo de swap está localizado.

Depois disso, execute “update-grub2” para recriar o initramfs.

Se você quiser bloquear a tela, salve a troca em disco (caso seu sistema fique sem energia) e suspenda para RAM (para reiniciar rapidamente se ainda tiver energia), crie um script chamado /usr/local/bin/gotosleep contendo:

/usr/bin/xscreensaver-command -lock
sleep 2
sudo /usr/sbin/s2both

Certifique-se de que o sudo não lhe pedirá uma senha:

sudo visudo -f /etc/sudoers.d/local
%powerdev ALL=NOPASSWD: /usr/sbin/s2both, /usr/sbin/s2ram

Conclusão

Com a hibernação ativada, você terá o mesmo suporte que o Windows 10 no aspecto de hibernar e ter bom desempenho para acordar o sistema rapidamente.

#UrbanCompassPony

Fontes:
linuxandubuntu
vadim-kirilchuk-linux
wiki.debian

Deixe um comentário