Hibernar con archivo de intercambio usando uswusp
Aunque es posible hibernar para intercambiar archivos y supuestamente funciona con systemd hibernate configurando los parámetros del kernel. Sin embargo, no pude reanudarlo, así que en lugar de eso usé uswsusp (suspensión del software del espacio de usuario) . Estos son los pasos que utilicé en Ubuntu 17.04 / 17.10.
Crear el archivo de intercambio
Los comandos para crear un archivo de intercambio 4GiB formateado, montado y agregado 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
Verifique la partición del archivo de intercambio
sudo findmnt -no SOURCE,UUID -T /swapfile
> /dev/sda1 11cc33ee-1234-abcd-1234-ddeeff112233
Instalar suspensión de software de espacio de usuario (uswsusp)
sudo apt install uswsusp
Configurar uswsusp
Para crear /etc/uswsusp.conf
y recrear initramfs
:
sudo dpkg-reconfigure -pmedium uswsusp
Yes
¿ Continuar sin un espacio de intercambio válido? ' (El asistente aún no establece el archivo de intercambio).
- Seleccione la partición en la que reside el archivo de intercambio, haga una referencia cruzada con los detalles de
findmnt
arriba. ( Nota: no el archivo de intercambio en sí )
Nota: Cualquier cambio realizado manualmente /etc/uswsusp.conf
requerirá volver a initramfs
crearse luego con este comando:
sudo update-initramfs -u
Prueba uswusp hibernate
sudo s2disk
Debería haber snapshot
mensajes en la pantalla sobre hibernar y reanudar.
Utilice s2disk con systemd hibernate
Por defecto, systemd usará sus propios comandos de hibernación, así que reemplácelos con los comandos uswusp anulando systemd-hibernate.service
:
sudo systemctl edit systemd-hibernate.service
En el editor de texto que se abre, coloque el siguiente texto (se requiere ExecStart en blanco). Luego guarde y salga:
[Service]
ExecStart=
ExecStart=/usr/sbin/s2disk
ExecStartPost=/bin/run-parts -a post /lib/systemd/system-sleep
Esto creará un /etc/systemd/system/systemd-hibernate.service.d/override.conf
archivo con detalles de anulación.
Prueba systemd hibernate:
systemctl hibernate
Nota: Para verificar que el systemd override.conf
ha sido creado, cargado y sin errores, ejecute:
systemctl status systemd-hibernate.service
Referencias
ExceStart=run-parts -a post /lib/systemd/system-sleep
fuera asíExceStartPost=run-parts -a post /lib/systemd/system-sleep
enable
opción desystemctl
enlaces simbólicos de/etc/systemd/system/
a/lib/systemd/system/
. Nunca debe copiar directamente en/etc/systemd/system/
sudo s2disk
solo registraSaving snapshot
, que apaga la pantalla, se cuelga durante ~ 5 min y luego apaga la computadora. Sin embargo, después de encenderlo, arranca normalmente como si no hubiera habido hibernación.sudo findmnt -no SOURCE,UUID -T /mnt/4GiB.swap
debería cambiarse asudo findmnt -no SOURCE,UUID -T /swapfile
Esto es lo que hice para que funcione con Ubuntu 18.04.
Haga que
/swapfile
tenga al menos el tamaño de su RAMTenga en cuenta el UUID de la partición que contiene su
/swapfile
:Reconfigure el paquete
uswsusp
para usar correctamente el archivo de intercambio:Edite el servicio de hibernación SystemD usando
sudo systemctl edit systemd-hibernate.service
y complételo con el siguiente contenido:Tenga en cuenta la compensación de reanudación de su
/swapfile
:Configure Grub para reanudar desde el archivo de intercambio editando
/etc/default/grub
y modifique la siguiente línea:Actualizar Grub:
Crea lo siguiente
/etc/initramfs-tools/conf.d/resume
:Actualizar initramfs:
Ahora puedes hibernar con
sudo systemctl hibernate
.También se pueden crear esos scripts:
Para que pueda dormir
gotosleep
o hibernar congotohibernation
.Debe poder ejecutar
sudo s2both
,sudo s2ram
ysudo systemctl hibernate
sin tener que ingresar su contraseña para que los scripts anteriores funcionen.Podría hacerlo, por ejemplo, creando un
powerdev
grupo, agregue su usuario actual y configure la siguiente configuración de sudoers (edítela consudo visudo -f /etc/sudoers.d/powerdev
):Documentación utilizada:
fuente
Leí rápidamente el tutorial y, si lo he entendido correctamente, solo necesita especificar las
resume
opciones en la línea de comandos de Linux. Con Grub2 es realmente simple, y sus cambios siempre se conservarán. Necesita editar el/etc/default/grub
archivo, específicamente esta línea:Después de eso, corre
sudo update-grub
para que los cambios surtan efecto.El cambio
GRUB_CMDLINE_LINUX
no afectará a otras instalaciones de Linux que tenga (porque/etc/grub.d/30_os-prober
no usa esta variable).Sobre el problema que tiene: ¿está encriptada la partición del archivo de intercambio? Si es así, la hibernación no funcionará. Si no, entonces la salida de
filefrag -v /swapfile
puede ser útil.fuente
/etc/default/grub
debes correrupdate-grub
.