Hibernar com arquivo de permuta usando uswusp
Embora seja possível hibernar para trocar arquivos, ele supostamente funciona com a hibernação do systemd definindo parâmetros do kernel. No entanto, como não consegui retomar, mudei para o uswsusp (suspensão do software userspace) . Aqui estão as etapas que eu usei no Ubuntu 17.04 / 17.10.
Crie o arquivo de permuta
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 partição de arquivo de permuta
sudo findmnt -no SOURCE,UUID -T /swapfile
> /dev/sda1 11cc33ee-1234-abcd-1234-ddeeff112233
Instalar a suspensão do software do espaço do usuário (uswsusp)
sudo apt install uswsusp
Configurar 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 troca reside, faça referência cruzada com detalhes
findmnt
acima. ( Nota: não o próprio arquivo de troca )
Nota: Qualquer alteração feita manualmente /etc/uswsusp.conf
exigirá a recriação initramfs
posterior com este comando:
sudo update-initramfs -u
Teste o hibernate do uswusp
sudo s2disk
Deve haver snapshot
mensagens na tela em hibernação e retomada.
Use s2disk com hibernação systemd
Por padrão, o systemd usará seus próprios comandos de hibernação, portanto, substitua-os pelos comandos uswusp, substituindo o systemd-hibernate.service
:
sudo systemctl edit systemd-hibernate.service
No editor de texto que é aberto, coloque o seguinte texto (o ExecStart em branco é necessário). Em seguida, salve e saia:
[Service]
ExecStart=
ExecStart=/usr/sbin/s2disk
ExecStartPost=/bin/run-parts -a post /lib/systemd/system-sleep
Isso criará um /etc/systemd/system/systemd-hibernate.service.d/override.conf
arquivo com detalhes de substituição.
Teste o sistema hibernar:
systemctl hibernate
Nota: Para verificar se o systemd override.conf
foi criado, carregado e sem erros, execute:
systemctl status systemd-hibernate.service
Referências:
ExceStart=run-parts -a post /lib/systemd/system-sleep
sejaExceStartPost=run-parts -a post /lib/systemd/system-sleep
enable
opção desystemctl
links simbólicos de/etc/systemd/system/
para/lib/systemd/system/
. Você nunca deve ser copiando diretamente/etc/systemd/system/
sudo s2disk
apenas os logsSaving snapshot
, que desligam a tela, travam por ~ 5 minutos e, em seguida, desligam o computador. No entanto, depois que eu o ligo, ele inicializa normalmente como se não houvesse hibernação.sudo findmnt -no SOURCE,UUID -T /mnt/4GiB.swap
deve ser alterada parasudo findmnt -no SOURCE,UUID -T /swapfile
Aqui está o que eu fiz para fazê-lo funcionar com o Ubuntu 18.04.
Faça com que você
/swapfile
tenha pelo menos o tamanho da sua RAMObserve o UUID da partição que contém o seu
/swapfile
:Reconfigure o pacote
uswsusp
para usar corretamente o arquivo de troca:Edite o serviço de hibernação do SystemD usando
sudo systemctl edit systemd-hibernate.service
e preencha-o com o seguinte conteúdo:Observe o deslocamento do currículo
/swapfile
:Configure o Grub para continuar a partir do arquivo de swap editando
/etc/default/grub
e modificando a seguinte linha:Atualizar o Grub:
Crie o seguinte
/etc/initramfs-tools/conf.d/resume
:Atualize initramfs:
Agora você pode hibernar com
sudo systemctl hibernate
.Pode-se também criar esses scripts:
Para que você possa dormir
gotosleep
ou hibernar com elegotohibernation
.Você deve ser capaz de executar
sudo s2both
,sudo s2ram
esudo systemctl hibernate
sem ter de introduzir a palavra-passe para os scripts anteriores ao trabalho.Você pode fazer isso, por exemplo, criando um
powerdev
grupo, adicione seu usuário atual e configure a seguinte configuração de sudoers (edite-o comsudo visudo -f /etc/sudoers.d/powerdev
):Documentação utilizada:
fonte
Fiz uma rápida leitura do tutorial e, se entendi corretamente, você só precisa especificar as
resume
opções para a linha de comando do Linux. Com o Grub2 é realmente simples, e suas alterações serão sempre preservadas. Você precisa editar o/etc/default/grub
arquivo, especificamente esta linha:Depois disso, execute
sudo update-grub
as alterações entrarem em vigor.A alteração
GRUB_CMDLINE_LINUX
não afetará outras instalações Linux que você possui (porque/etc/grub.d/30_os-prober
não usa essa variável).Sobre o problema que você está tendo: a partição do arquivo de troca é criptografada? Nesse caso, a hibernação não funcionará. Caso contrário, a saída de
filefrag -v /swapfile
pode ser útil.fonte
/etc/default/grub
você precisa executarupdate-grub
.