Create swapfile
En esta página
Esta página detalla cómo sustituir o añadir a una partición swap un swapfile manteniendo la hibernación. En mi caso, utilizo Endeavour OS con el gestor de arranque systemd-boot.
Añadir swapfile
Primero debemos crear el swapfile. Para ello utilizamos
dd
. El siguiente comando creará un archivo de 8Gb. Para crearlo con más capacidad, sólo es necesario modificar el parámetrocount
. Ejecutamos los comandos como root.dd if=/dev/zero of=/swapfile bs=1M count=8k status=progress
Modificamos los permisos de la swapfile creada:
chmod 0600 /swapfile
Le damos formato:
mkswap -U clear /swapfile
La habilitamos como swap:
swapon /swapfile
Llegados a este punto, si ejecutamos swapon -s
tendremos lo siguiente:
Nomfich. Tipo Tam. Util. Prioridad
/swapfile file 16777212 801652 -2
Puede que exista alguna otra entrada si tenemos una partición swap. Podemos desactivarla con swapoff <ruta de la partición>
si lo deseamos.
Modificamos /etc/fstab para incluir el swapfile añadiendo la siguiente línea
/swapfile none swap defaults 0 0
- Si no deseamos seguir utilizando la partición swap existente, podemos eliminar la línea que hace referencia a ella.
Configurar swapfile para hibernación
Para configurar la swapfile para que funcione con la hibernación, primero es necesario obtener la UUID de esta. Podemos hacerlo con el siguiente comando:
findmnt -no UUID -T /swapfile
Además, como se detalla en la Arch Wiki, para usar la swapfile en hibernación debemos calcular los offsets. Podemos encontrarlos con la siguiente línea:
filefrag -v /swapfile | awk '{ if($1=="0:"){print $4} }'
Esto nos dará un número con dos puntos suspensivos. El número será el offset por el que se empezará a leer la swapfile al restaurar de hibernación.Por último, deberemos modificar los parámetros del kernel para incluir la UUID y el offset de la swapfile. En el caso de systemd-boot, se encuentran en
/efi/loader/entries/
. Debemos añadir (o modificar) los parámetrosresume
yresume_offset
con los valores anteriormente obtenidos, de tal forma que quede tal que así:
resume=UUID=ee2021b7-7860-4512-a849-27d26525a925 resume_offset=41906176
Esto se sobreescribirá una vez se actualice el kernel, así que también debemos modificarlo en /etc/kernel/cmdline
Y con eso ya estaría la swapfile configurada para ser usada con hibernación.