Create swapfile

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

  1. 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ámetro count. Ejecutamos los comandos como root. dd if=/dev/zero of=/swapfile bs=1M count=8k status=progress

  2. Modificamos los permisos de la swapfile creada: chmod 0600 /swapfile

  3. Le damos formato: mkswap -U clear /swapfile

  4. 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.

  1. Modificamos /etc/fstab para incluir el swapfile añadiendo la siguiente línea /swapfile none swap defaults 0 0

    1. 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

  1. 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

  2. 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.

  3. 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ámetros resume y resume_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.

Top