- La hibernación en GNU/Linux guarda el estado completo de la RAM en la swap y apaga el equipo, mientras que la suspensión mantiene la memoria en RAM con bajo consumo.
- Para que la hibernación funcione de forma fiable se necesita soporte en el kernel y un espacio de intercambio suficiente, ya sea partición swap o archivo swapfile bien configurado.
- Distintas herramientas (systemd, pm-utils, uswsusp y PolicyKit) permiten activar, controlar o desactivar hibernación y suspensión según la distribución y el escenario de uso.
- Elegir entre suspender, hibernar o reiniciar con restauración de sesión depende del equilibrio que busques entre ahorro de energía, velocidad de vuelta al trabajo y estabilidad del sistema.
La hibernación en GNU/Linux sigue siendo una de esas funciones que todo el mundo ha oído nombrar, pero que no siempre se entiende bien ni se configura correctamente. Muchos usuarios vienen rebotados de problemas con Windows o de portátiles que se apagan «a su bola» y quieren saber qué hace exactamente cada modo de energía y cómo controlarlo en su distro Linux.
En las últimas versiones del kernel y de las principales distribuciones, la cosa ha mejorado muchísimo, pero siguen existiendo matices importantes entre hibernar, suspender y apagar con reapertura de documentos, además de detalles técnicos como el uso de la swap (en partición o en archivo) que conviene tener claros. Vamos a desgranar todo esto con calma, pero con un lenguaje cercano y práctico.
Hibernación, suspensión y reinicio con sesión restaurada: en qué se diferencian
Antes de tocar nada en la configuración, es clave entender qué hace realmente cada modo de ahorro de energía, porque se suelen mezclar conceptos y luego vienen los sustos con datos perdidos o baterías vacías.
Cuando hablamos de hibernación en sistemas operativos nos referimos a un proceso mediante el cual se congela el estado completo del sistema: programas abiertos, documentos, servicios, configuración de escritorio, búferes, etc. Todo ese contenido de la RAM se guarda en un medio de almacenamiento persistente (normalmente la swap en disco) y la máquina se apaga por completo.
Esto implica que hibernar no es lo mismo que simplemente dejar archivos abiertos y apagar el equipo, ni tampoco es lo mismo que suspender. Es más lenta que la suspensión a RAM, pero ahorra mucha más energía porque el ordenador queda totalmente apagado, sin consumo eléctrico.
Por otro lado, algunos sistemas ofrecen algo parecido a un «reinicio con reapertura de documentos», donde el sistema se apaga de forma normal, pero al volver a encender se relanzan automáticamente las aplicaciones que estaban abiertas. En GNU/Linux muchas distros imitan este comportamiento del entorno de escritorio, pero esto no es hibernar: sigue siendo un arranque frío con todos los servicios iniciados desde cero.
La ventaja de la hibernación frente a ese reinicio con restauración de apps es que el kernel y el espacio de usuario no vuelven a arrancar desde cero, sino que se restaura una imagen completa del estado anterior. Por eso, cuando todo va bien, retomas el trabajo exactamente por donde lo dejaste, sin reabrir documentos ni reconfigurar ventanas.
Qué es la suspensión en Linux y para qué compensa usarla
En modo suspensión, el sistema operativo genera una imagen viva del estado actual (tus programas, tus documentos, el escritorio) pero, en lugar de escribirla en disco, la deja en la memoria RAM, que es volátil.
Al suspender, el kernel apaga prácticamente todos los dispositivos de hardware: disco, pantalla, gran parte del chipset… El único componente que se mantiene alimentado es la memoria RAM y lo mínimo de la placa base para poder «despertar» cuando pulses una tecla, muevas el ratón o abras la tapa del portátil.
Este modo es genial cuando quieres un regreso casi instantáneo al escritorio y no te preocupa tanto el consumo energético mientras el equipo está en reposo. Un portátil moderno puede aguantar suspendido entre uno y tres días con la batería, pero todo ese tiempo está consumiendo algo de energía para mantener viva la RAM.
La suspensión normal es especialmente recomendable si tienes más de 2 GB de RAM y poco espacio en disco (por ejemplo, en SSD pequeños) o si vas a volver a usar el equipo en muy poco tiempo. Es el típico caso de cerrar la tapa unos minutos entre clase y clase o parar a comer.
Suspensión híbrida: mezcla de RAM y disco
Hay un tercer modo menos conocido: la suspensión híbrida. En este caso, el sistema hace todo el proceso de hibernación (vuelca el contenido de la memoria al disco, normalmente a la swap) pero, en lugar de apagarse del todo, entra en suspensión a RAM.
Esto da un escenario mixto: si la batería aguanta, levantarás el sistema tan rápido como una suspensión normal; pero si se agota la energía, la imagen guardada en disco permitirá restaurar la sesión como si se hubiera hibernado.
La cara B de este modo es que tarda más en entrar y salir que una suspensión pura, porque escribe en disco y además mantiene la RAM alimentada. Por eso suele usarse en servidores o estaciones que necesitan un nivel extra de seguridad respecto a la pérdida de estado.
Cómo funciona internamente la hibernación en GNU/Linux
Cuando hibernas un sistema GNU/Linux, el kernel ejecuta una serie de pasos bastante bien definidos para capturar y restaurar el estado completo de la máquina. No es simplemente «guardar la RAM en un archivo» y listo.
El proceso típico de suspensión a disco (suspend-to-disk) sigue esta secuencia general:
- Se detienen los procesos de usuario para congelar su estado y que no sigan modificando memoria mientras se hace la captura.
- Se congelan o detienen los dispositivos de hardware para evitar cambios en memoria asociados a controladores y DMA.
- Se crea la imagen de hibernación: se copia el contenido completo de la RAM con las interrupciones desactivadas.
- Se reactivan los dispositivos de hardware de forma controlada.
- La imagen se escribe en el espacio de intercambio (swap), que pasa a considerarse un área de suspensión (swsusp o linux-suspend).
- Finalmente, se suspenden todos los dispositivos y el equipo se apaga por completo.
Al volver a encender, el sistema de arranque comprueba si hay una imagen de hibernación válida:
- Si la hay, no hace un arranque normal, sino que lee la imagen desde la swap.
- De nuevo se congelan los dispositivos para que no interfieran.
- Se vuelca la imagen de la swap a la RAM y se reactivan procesos y dispositivos como estaban antes de hibernar.
Un detalle curioso que se ha observado en pruebas reales: tras hibernar, la antigua «partición linux-swap» aparece etiquetada como linux-suspend o swsusp en herramientas como GParted o parted. Ese cambio de tipo es una de las pistas que usa el sistema para saber si debe restaurar una hibernación o iniciar desde cero.
La importancia de la swap en la hibernación
Todo este mecanismo implica un requisito clave: para hibernar en Linux necesitas un espacio de intercambio (swap) adecuado, tanto en tamaño como en configuración. Sin swap, el sistema no tendrá dónde guardar la imagen de RAM.
La swap puede ser:
- Una partición dedicada con tipo de sistema linux-swap.
- Un archivo de intercambio (swapfile) ubicado en un sistema de archivos normal (por ejemplo, en /swapfile).
A efectos prácticos, el kernel trata ambos como espacio de intercambio de forma transparente. Sin embargo, para usar un swapfile como destino de hibernación hay que indicarle al kernel, a través del gestor de arranque, parámetros como resume= (dispositivo) y resume_offset= (desplazamiento dentro del archivo). Si no se hace, el sistema arrancará de cero y no restaurará la imagen, aunque esté escrita en disco.
En cuanto al tamaño, la recomendación clásica para hibernar con garantías es que la swap tenga al menos el tamaño de la RAM física. Es cierto que, si el sistema está muy descargado, a veces puedes hibernar con una swap algo menor, pero no es una apuesta segura y no se puede generalizar. En equipos con 32 GB o 64 GB de RAM o más, muchos administradores desaconsejan directamente la hibernación por pura cuestión de tiempos y espacio.
También conviene recordar que existen mecanismos como zram o zswap, que crean un área de intercambio comprimida en la propia RAM. Son fantásticos para mejorar el rendimiento en equipos con poca memoria, pero no sirven como destino de hibernación: al ser volátiles, la imagen desaparecería al cortar la alimentación.
Hibernación en partición swap frente a archivo swapfile
Durante años se consideró casi obligatorio tener una partición swap dedicada si querías hibernar sin complicaciones. El comportamiento del kernel y de herramientas como initramfs estaba muy centrado en ese modelo clásico.
Sin embargo, muchas distribuciones modernas, como Ubuntu en versiones recientes, han pasado a usar por defecto un archivo swapfile en lugar de una partición. Esto no significa que se pierda la capacidad de hibernar, simplemente cambia dónde se guarda el estado.
En ambos casos, el proceso de fondo es el mismo: la imagen de la RAM va a un espacio de intercambio persistente. La diferencia es que, con un swapfile, el sistema necesita saber en qué bloque exacto del disco empieza el archivo (de ahí el parámetro resume_offset) para poder leer la imagen de forma temprana durante el arranque.
Experimentos prácticos en máquinas Debian y derivadas han demostrado que, si se formatea o borra la partición swap donde se almacenó la imagen de hibernación, el siguiente arranque será limpio, como si nunca se hubiera hibernado. Esto confirma que la imagen se guarda realmente en la swap y no en otra parte del disco.
Requisitos del kernel y soporte en las distribuciones
Además del espacio de intercambio, hace falta que el kernel de Linux tenga activado el soporte de hibernación. Si compilas tu propio kernel y deshabilitas esta opción, por mucho que toques configuración en la distro, no podrás hibernar.
En la práctica, en la mayoría de distribuciones se utiliza el kernel empaquetado por el propio proyecto, y en esos casos la hibernación suele venir habilitada de serie junto con el resto de funciones de gestión de energía y drivers habituales.
Aun así, no todas las distros muestran siempre el botón de «Hibernar» en los menús gráficos. Algunas, como Ubuntu en ciertas versiones, ocultan la opción en el escritorio por defecto aunque el kernel y la infraestructura de hibernación estén totalmente operativos.
Cómo activar la hibernación en Ubuntu mediante PolicyKit
En sistemas Ubuntu donde no aparece la opción de hibernar en el menú de apagado, se puede re-habilitar de forma relativamente sencilla tocando unas reglas de PolicyKit. La idea es autorizar a los usuarios normales a invocar las acciones de hibernación de upower y logind.
El procedimiento típico consiste en crear un archivo de configuración, por ejemplo com.ubuntu.enable-hibernate.pkla, con un contenido similar a este (adaptado a la sintaxis que usen tus herramientas):
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=yes
Una vez creado el archivo, hay que colocarlo en /etc/polkit-1/localauthority/50-local.d/. Para ello puedes abrir tu gestor de archivos como administrador (por ejemplo con gksudo nautilus en entornos que todavía lo soporten) y pegarlo en ese directorio.
Tras reiniciar el sistema, el escritorio de Ubuntu mostrará la opción de hibernar junto a las de apagar, reiniciar o suspender. Obviamente, sigue haciendo falta una swap suficientemente grande y un kernel con soporte de hibernación.

Comandos de hibernación y suspensión desde la terminal
Si prefieres la terminal o utilizas entornos ligeros (Fluxbox, IceWM, Openbox, JWM, etc.) donde no existen botones preconfigurados de energía, puedes controlar hibernación y suspensión directamente con comandos.
Usando pm-utils
En muchas distros clásicas de Debian/Ubuntu, el paquete pm-utils proporciona varios comandos sencillos:
- pm-suspend: suspende la máquina a RAM. Se apagan la mayoría de dispositivos y el estado se mantiene en memoria. El consumo baja mucho, pero sigue habiendo gasto energético.
- pm-hibernate: hiberna el sistema guardando la RAM en disco (swap) y apagando por completo el equipo.
- pm-suspend-hybrid: realiza la hibernación al disco y, en lugar de apagar, entra en modo suspensión a RAM, logrando así una «suspensión híbrida».
El uso básico sería:
sudo pm-suspend
sudo pm-hibernate
sudo pm-suspend-hybrid
En sistemas derivados de Arch Linux y otros que lo mantengan en sus repositorios, también puedes usar estos comandos, aunque pm-utils se ha ido abandonando en favor de systemd en muchas distribuciones modernas.
Usando systemd (systemctl)
En distribuciones con systemd (OpenSUSE, muchas versiones de Arch y derivados, Debian modernos, etc.), la forma recomendada es tirar de systemctl:
- systemctl suspend: suspende a RAM.
- systemctl hibernate: hiberna a disco.
- systemctl hybrid-sleep: activa la suspensión híbrida.
Por ejemplo, en OpenSUSE o cualquier sistema systemd típico, puedes llamar directamente a:
sudo systemctl hibernate
En muchas distros, si prefieres mantener compatibilidad con herramientas antiguas, pm-hibernate sigue estando disponible y simplemente delega o convive con systemd según la configuración.
Usando uswsusp: s2ram, s2disk y s2both
Otra familia de herramientas, hoy en día menos habitual, es uswsusp, que proporciona los comandos s2ram, s2disk y s2both. En Debian y Ubuntu estuvo disponible hasta ciertas versiones (Debian 10, Ubuntu 20.04 en adelante ha ido deprecándolo).
- s2ram: suspende el sistema a RAM (modo S3). Viene a ser un equivalente de pm-suspend o systemctl suspend.
- s2disk: guarda el estado completo en disco y apaga la máquina (hibernación clásica).
- s2both: combina ambas cosas: escribe la imagen en disco y luego suspende a RAM, logrando un comportamiento híbrido.
Los comandos serían:
sudo s2ram
sudo s2disk
sudo s2both
Estas utilidades requieren una configuración adecuada del initramfs para que, al arrancar, se llame al mecanismo de reanudación (resume) y se restaure la imagen si existe.
Cómo desactivar suspensión e hibernación en sistemas GNU/Linux
En algunos entornos, como aulas, ordenadores compartidos o puestos públicos, la suspensión y la hibernación pueden causar cierres inesperados, problemas de red o bloqueos difíciles de explicar a los usuarios. En esos casos, a veces lo más práctico es deshabilitar por completo estas funciones.
Desactivar mediante systemd (mask de targets)
Si tu sistema usa systemd, basta con enmascarar los targets relacionados con sueño e hibernación para que no puedan activarse ni desde menús gráficos ni desde la terminal:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Esto redirige esos targets a /dev/null, es decir, los manda simbólicamente «al cubo de la basura». Tras un reinicio, cualquier intento de suspender o hibernar fallará de forma limpia.
Si más adelante quieres restaurar el comportamiento normal, solo tendrás que usar:
sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
Desactivar botones de hibernar y suspender con PolicyKit
Otra opción más fina es usar PolicyKit para retirar permisos de suspensión/hibernación a todos los usuarios. Por ejemplo, puedes crear archivos en /etc/polkit-1/localauthority/90-mandatory.d/ como:
/etc/polkit-1/localauthority/90-mandatory.d/disable-suspend.pkla
Identity=unix-user:*
Action=org.freedesktop.upower.suspend
ResultActive=no
ResultInactive=no
ResultAny=no
Identity=unix-user:*
Action=org.freedesktop.login1.suspend
ResultActive=no
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-multiple-sessions
ResultActive=no
Y para la hibernación:
/etc/polkit-1/localauthority/90-mandatory.d/disable-hibernate.pkla
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=no
ResultInactive=no
ResultAny=no
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate
ResultActive=no
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=no
Tras reiniciar, desaparecerán los botones de suspender e hibernar de los menús gráficos, evitando que el usuario los active sin querer.
Bloquear atajos de teclado y comandos directos
Aunque ocultes los botones, algunos escritorios y teclados traen teclas especiales de suspensión/hibernación que pueden seguir funcionando. En entornos antiguos con GNOME clásico se podía ajustar con comandos tipo:
gconftool -s /apps/gnome-power-manager/buttons/hibernate -t string interactive
Además, puedes crear scripts en /etc/pm/sleep.d/, como /etc/pm/sleep.d/000cancel-hibernate-suspend, que simplemente cancelen cualquier intento de suspensión o hibernación devolviendo control al sistema. Un esqueleto típico sería:
#!/bin/sh
# prevents hibernation and suspend
. «$PM_FUNCTIONS»
case «${1}» in
suspend|hibernate)
inhibit
;;
resume|thaw)
exit 0
;;
esac
No olvides darle permisos de ejecución:
chmod 0755 /etc/pm/sleep.d/000cancel-hibernate-suspend
Cuándo conviene hibernar y cuándo no
Con toda esta teoría sobre la mesa, queda la parte práctica: ¿cuándo interesa realmente hibernar en GNU/Linux? No hay una respuesta única, pero sí algunas pautas razonables.
Si tu prioridad absoluta es ahorrar energía (por ejemplo, en un portátil que dejas muchas horas sin usar) y tienes espacio de sobra en disco para la imagen de memoria, la hibernación es una opción muy atractiva; puedes leer cómo elegir entre apagar, suspender o hibernar el PC. El consumo energético en estado hibernado es nulo, y al volver arrancas bastante más rápido que desde un arranque en frío.
Si lo que quieres es velocidad pura al volver al escritorio y vas a dejar el equipo inactivo solo un rato corto, la suspensión a RAM puede ser más cómoda. La máquina seguirá gastando algo de batería, pero la reanudación será casi instantánea.
En equipos con muchísima RAM, o en sistemas donde la estabilidad al reanudar no está garantizada (cierto hardware raro, drivers exóticos, etc.), muchas veces merece la pena renunciar a la hibernación y apostar por una buena suspensión y un reinicio limpio con restauración de documentos cuando haga falta.
Al final, conocer bien cómo se apoyan en la swap, qué hace el kernel por debajo y cómo controlarlas con herramientas como systemd, pm-utils, uswsusp o PolicyKit te permite tratar la hibernación y la suspensión como herramientas a tu favor, y no como funciones misteriosas que a veces funcionan y a veces dejan el portátil «tieso» sin explicación aparente.
Tabla de Contenidos
- Hibernación, suspensión y reinicio con sesión restaurada: en qué se diferencian
- Qué es la suspensión en Linux y para qué compensa usarla
- Suspensión híbrida: mezcla de RAM y disco
- Cómo funciona internamente la hibernación en GNU/Linux
- La importancia de la swap en la hibernación
- Hibernación en partición swap frente a archivo swapfile
- Requisitos del kernel y soporte en las distribuciones
- Cómo activar la hibernación en Ubuntu mediante PolicyKit
- Comandos de hibernación y suspensión desde la terminal
- Cómo desactivar suspensión e hibernación en sistemas GNU/Linux
- Cuándo conviene hibernar y cuándo no
