A verificação de troca do systemctl pode ser desativada configurando SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1
para o serviço systemd-logind
. Isso pode ser feito da seguinte forma:
# systemctl edit systemd-logind.service
[Service]
Environment=SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1
Agora, para realmente trocar / trocar quando necessário, você pode adicionar este serviço:
# vim /etc/systemd/system/swap-to-hibernate.service
[Unit]
Description=Swapon/off when hibernating or resuming
DefaultDependencies=no
Before=systemd-hibernate.service systemd-hybrid-sleep.service
StopWhenUnneeded=yes
RefuseManualStart=yes
RefuseManualStop=yes
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/swapon /dev/sda7 # <--- can be file, too
ExecStop=/usr/bin/swapoff /dev/sda7
[Install]
RequiredBy=systemd-hibernate.service systemd-hybrid-sleep.service
Depois, basta ativá-lo via # systemctl enable swap-to-hibernate.service
.
Você pode ter que reinicializar para que o logind env tenha efeito (talvez # systemctl daemon-reexec && systemctl reload systemd-logind
seja suficiente, não tenho certeza).
Para mais informações, consulte solicitação de pull e este readme .