Se puede hibernar el portátil u ordenador que tengamos sin necesidad de tener una partición swap y como hoy he instalado Debian 8.1 me he puesto manos a la obra para conseguirlo; en vez de tener una partición de X gigas, se crea un fichero de X gigas para hacer la misma función (lógicamente para poder hibernar con éxito el fichero debe ser casi igual en tamaño a la memoria RAM de la máquina).
Empezamos (todo con su o añadid sudo):
- fallocate -l 3,5G /home/swap && mkswap /home/swap
Con eso creará el fichero en la ruta que queramos con el tamaño escrito: se podrían poner 256m o bien GB como está indicado. Añadimos a fstab la dirección del fichero swap:
- /home/swap swap swap defaults 0 0
Ahora indicamos al kernel que deje de usar el área de intercambio como memoria de paginación pues sólo queremos hibernar y no ralentizar el ordenador al tener un disco mecánico:
- sysctl -w vm.swappiness=1
Si queremos que sea permanente, deberemos añadir esa línea en el rc.local o bien en /etc/sysctl.d/local.conf con «vm.swappiness=1».
Ahora deberemos activar el uso de swap con el comando (si nos dice que ya estuviera en uso pues cambiad swapon por swapoff y la ruta):
- swapon /home/swap
En teoría ya estaría listo para que hibernase pero a mi me ha dado un error al hibernar en el dmesg y he tenido que instalar uswsusp, que trae algunas herramientas para solucionarlo:
- apt-get install uswsusp
- dpkg-reconfigure -pmedium uswsusp
Y cuando lo reconfiguremos: damos a Sí, seleccionamos la PARTICIÓN y no la ruta de la swap y si queremos o no cifrarla dependiendo del nivel paranoico que tengamos.Y probamos a hibernar con:
- s2disk
Si se ha apagado en 10-15 segundos eso es buena señal.Ahora quedan dos cosas más: que al encender reanude desde la hibernación y que al cerrar la pantalla del portátil automáticamente hiberne.
Para que reanude, tendremos que editar nuestro /etc/default/grub y añadir en GRUB_CMDLINE_LINUX_DEFAULT lo siguiente:
- GRUB_CMDLINE_LINUX_DEFAULT=»resume=/dev/sdaX quiet»
Donde sdaX es la partición donde tenemos el archivo generado en el primer paso, lo podemos ver con df y mirar en qué partición cae /home, en mi caso /dev/sda6. Después deberemos actualizar el grub con: update-grub2
Para que al cerrar la tapa del portátil hiberne, primero hay que configurar desde el entorno de escritorio las opciones de energía y seleccionar hibernación:
Hacemos una copia de seguridad por si acaso:
- cp /lib/systemd/system/systemd-hibernate.service /lib/systemd/system/systemd-hibernate.service.bak
Y ahora editamos ficho fichero, cambiando el contenido de ExecStart para que funcione bien con s2disk.
# ExecStart=/lib/systemd/systemd-sleep hibernate
ExecStart=/bin/sh -c ‘s2disk’
Y en teoría ya estaría, creo que no me olvido de nada pues lo he estoy escribiendo cuando me ha funcionado.
Fuente: https://wiki.debian.org/Hibernation/Hibernate_Without_Swap_Partition y elaboración propia.