Hibernar com arquivo de troca usando uswusp
Embora seja possível hibernar a troca de arquivos e supostamente funciona com o systemd hibernate, configurando os parâmetros do kernel. No entanto, não consegui recuperá-lo, então, ao invés disso, mudei para uswsusp (userspace software suspend) . Aqui estão os passos que usei no Ubuntu 17.04 / 17.10.
Crie o arquivo de troca
Os comandos para criar um arquivo de troca 4GiB formatado, montado e adicionado a /etc/fstab
:
sudo fallocate -l 4g /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
Verificar a partição do arquivo de troca
sudo findmnt -no SOURCE,UUID -T /mnt/4GiB.swap
> /dev/sda1 11cc33ee-1234-abcd-1234-ddeeff112233
Instalar o software suspenso do espaço do usuário (uswsusp)
sudo apt install uswsusp
Configurar o uswsusp
Para criar /etc/uswsusp.conf
e recriar initramfs
:
sudo dpkg-reconfigure -pmedium uswsusp
-
Yes
para ' Continuar sem um espaço de troca válido? ' (O assistente ainda não definiu o arquivo de troca.)
- Selecione a partição em que o arquivo de permuta reside, faça referência cruzada com detalhes de
findmnt
acima. ( Nota: não o próprio arquivo swap )
Observação: todas as alterações feitas manualmente em /etc/uswsusp.conf
exigirão a recriação de initramfs
com este comando:
sudo update-initramfs -u
Teste o uso do hibernate
sudo s2disk
Deve haver snapshot
mensagens na tela em hibernação e retomada.
Use s2disk com systemd hibernate
Por padrão, o systemd usará seus próprios comandos de hibernação, então substitua-os pelos comandos uswusp, sobrescrevendo o systemd-hibernate.service
:
sudo systemctl edit systemd-hibernate.service
No editor de texto que é aberto, coloque o seguinte texto (o ExecStart em branco é obrigatório). Em seguida, salve e saia:
[Service]
ExecStart=
ExecStart=/usr/sbin/s2disk
ExecStartPost=/bin/run-parts -a post /lib/systemd/system-sleep
Isso criará /etc/systemd/system/systemd-hibernate.service.d/override.conf
arquivo com detalhes sobre substituição.
Testar sistema de hibernação:
systemctl hibernate
Nota: Para verificar se o systemd override.conf
foi criado, carregado e sem erros, execute:
systemctl status systemd-hibernate.service
Referências: