Ubuntu botón para hibernar.

Habilitar hibernación en Ubuntu

No, no estamos de osos e hibernación sino de la metáfora entre el comportamiento animal y las computadoras: se trata de “dormir” a la computadora escribiendo todo lo que está en memoria RAM a un área especial en nuestro disco duro, tras lo cual podemos hasta desenchufar nuestro equipo y cuando de nuevo lo necesitemos quedaremos exactamente con los mismos programas y documentos abiertos justo donde los dejamos.

Antecedentes.

En los lejanos tiempos cuando no teníamos interfaz gráfica (podéis saber -o recordar- más en nuestros anteriores artículos sobre bash y sobre ingeniería social) pues tenía poco sentido el hablar de este proceso de hibernación. Pero es que hay más: los equipos XT tenían un simple interruptor que cortaba la energía, apagando de golpe a la computadora y perdiendo datos (ni hablaremos que los discos duros tipo IDE tenían que “parquear” el cabezal para no dañar los platos). Pero con el advenimiento de los equipos AT se incorporó más bien un botón lógico que cuando uno lo presiona el BIOS de la tarjeta madre se comunica con el sistema operativo -moderno- para entonces así poder apagar, cerrando y guardando debidamente los documentos y programas abiertos. Adicionalmente -y esto aplica a los monitores también- se les colocó una función de “dormir” lo cual hace que la máquina trabaje a una velocidad mínima a la espera de un evento determinado -pulso de tecla, movimiento de ratón, mensaje por tarjeta de red, etc.- logrando ahorrar energía. Dicha función se activa automáticamente cada cierto tiempo predeterminado y así se ahorra, a nivel mundial, de muchísima energía eléctrica.

Pero fueron las computadoras portátiles las que más se beneficiaron pues permite alargar el tiempo que trabajan con una sola carga de batería e incluso hay planes más detallados y específicos que poner a “dormir” al equipo: disminuye el brillo en pantalla, deshabilita uno o más núcleos en el CPU (ahora casi todos los equipos son doble núcleo de 64 bits), apagar la red inalámbrica, apagar el disco duro, etc.

En el caso de la hibernación es el ahorro máximo de energía: apagar el equipo para luego encenderlo muy rápidamente y justo donde estabamos trabajando, de paso ahorrando tiempo y como dijimos, se trata de escribir todo lo que está en memoria al disco duro.

¿Por qué Ubuntu no trae la opción de hibernación activada?

Pues ya saben la historia, a las computadoras se les agregó las opciones de “dormir” e “hibernar” para cumplir normas medioambientales (y ahorro en nuestros bolsillos en nuestra factura por consumo de electricidad) pero resulta ser que cada fabricante impuso sus propios “chips” integrados en las tarjetas madres para cumplir dichas funciones. Ellos, para proteger sus “secretos industriales y de manufactura”, no explican a ciencia cierta cómo funcionan y son pocos los fabricantes que se dedican a trabajar de la mano con los desarrolladores de sistemas operativos. En el caso de Ubuntu fue a partir de la versión 12.04 que tomaron la salomónica decisión de deshabilitarlo (en Debian viene por defecto activado): son pocos los hardwares que son certificados para trabajar con Ubuntu y la base de datos para llevar cuenta de ellos es gigantesca y engorrosa, un trabajo a todas luces de evitar.

¿Y qué es un hardware certificado para trabajar con Ubuntu?

Pues son ordenadores que garantizan que al hibernar no perderemos absolutamente ninguno de nuestros datos, recordemos que todos los GNU/Linux son sistemas operativos estables y confiables y no se arriesgan a perder su reputación simplemente porque la mayoría de los fabricantes de niegan a vender hardware libre (aunque esto también desaliente a las empresas que trabajen por cerificar su hardware con Ubuntu).

¿Y quienes se benefician del proceso de hibernación?

Pues obviamente los equipos de escritorio y portátiles porque las versiones Ubuntu Server para nada ahorran energía: son equipos que trabajan las 24 horas del día. No obstante el software libre nos permite sin ningún problema el convertir nuestros ordenadores de uso diario como servidores de bases de datos, servidores web, etcétera y si éste es vuestro caso pues olvidad la opción de hibernar.

Requisitos para la hibernación.

Pues antes de entrar más en detalles debemos asegurarnos no sólo que tenemos espacio libre en disco duro del mismo tamaño de nuestra memoria RAM, sino que incluso contemos con una partición de intercambio especialmente hecha para ello, y en inglés recibe el nombre “swap” (no confundir con la partición para archivos temporales). Generalmente si escogimos que nuestra distribución Linux ocupe todo nuestro disco entonces habrá particionado nuestro disco duro con los valores adecuado a nuestro hardware.

Pero si fuimos nosotros quienes decidimos los valores de partición debemos revisar, en todo caso nunca está demás consultar dichos valores así que nos arremangamos las mangas de la camisa y abrimos una venta terminal y escribimos lo siguiente:

cat /proc/swaps

Como ya sabemos el comando cat sirve para visualizar el contenido de un archivo y en GNU/Linux todo es un archivo (sin caer en el tema de systemd) y la partición de intercambio tiene su archivo que lo representa. El que consultemos un archivo, ya sea por pantalla, impresora, terminal remota, etc. no representa ningún problema para nuestro ordenador, es decir no desconfiguramos nada (lo peor que nos puede pasar es que no tengamos derecho de lectura del archivo en cuestión).

Pero si queremos ir más allá podemos usar el comando swapon el cual está disponible desde 1995 (apareció en 4.0BSD) y forma parte de las utilerías de Linux. Dicho comando ofrece opciones de reporte y la primera que usaremos es:

swapon -s

o en su versión “larga” -que nos permite memorizarla mejor-:

swapon --summary

Esta opción hace exactamente el mismo trabajo de cat que indicamos al principio y así explícitamente lo indica la ayuda de swap (tecleamos “man swap” -y podemos usar el comando man para obetener ayuda de cualquier otro comando de Linux-). Con el comando swapon también podemos activar o descativar el área de intercambio pero exige conocimientos exactos de nuestro hardware para poderlo ejecutar correctamente, recomendamos mucha precaución si se deciden a ir más allá.

Hay muchos otras muchas herramientas (mirad los enlaces consutlados para hacer esta entrada) pero con 3 creemos es más que suficiente en nuestra labor didáctica, dicho tercer comando es free que nos permite ver tanto en Gigabytes, Kilobytes o Megabytes (las letras iniciales son los parámetros del comando) de nuestra memoria física y el área de intercambio -en realidad sirve para la memoria RAM pero como están intimamente relacionadas con el área de intercambio pues se incluye en los resultados-:

free -g
free -k
free -m

Acá mostramos una captura de nuestra ventana terminal:

cat swapon free
“cat”, “swapon” y “free”.

Otra alternativa es utilizar la interfaz gráfica pulsando la tecla ALT+F2 y escribimos (en Ubuntu) “disco” y automáticamente nos listará las aplicaciones debajo de la linea de comandos -si usan Debian escriban palimpsest – y hacemos click en la utilidad de discos, verán algo parecido a esto:

Ubuntu partición de intercambio.
Ubuntu partición de intercambio.

Como vemos también nos informa del estado del disco duro, temperatura etc.

Probando si nuestro equipo es compatible con hibernación.

La manera pragmática de determinar si nuestro equipo soporta el proceso de hibernación es tener unas cuantas aplicaciones abiertas con datos sin importancia (navegador web, gedit editando una nota, algún reproductor de música) tras lo cual ejecutamos en nuestra línea de comandos lo siguiente:

sudo pm-hibernate

Al presionar la tecla intro nuestro ordenador, según la cantidad de aplicaciones abiertas, la cantidad de memoria RAM y tipo de disco duro, tomará de unos cuantos segundos hasta un minuto. Luego de que se hayan apagado todas las luces y ventiladores esperamos unos 10 segundos y procedemos a encender por su correpondiente botón.

Una vez haya arrancado de nuevo verificamos si nuestras aplicaciones de prueba están en pantalla, si suena la música, el estado de conexión de red; puede ser que parpadee la pantalla una o varias veces, movemos el ratón y observamos cuánto tarda en responder.

Si hemos llegado hasta aquí sin problemas…

Pues ¡enhorabuena! Nuestro ordenador es compatible con la hibernación ahora procederemos a habilitarlo y describiremos el proceso general pero cambiaremos los valores de acuerdo a la versión de Ubuntu que tengamos instalado:

  1. Vamos a crear un archivo llamado “com.ubuntu.enable-hibernate.pkla“.
  2. Dicho archivo lo guardaremos en la siguiente ubicación: ” /etc/polkit-1/localauthority/50-local.d
  3. Debemos hacerlo con derechos de usuario raíz o “root” con “sudo su“.
  4. Reinciamos el equipo y verificamos que nos aparezca la opción correspondiente, veremos algo como esto:
Ubuntu botón para hibernar.
Ubuntu botón para hibernar.

Si usamos Ubuntu 13 o anterior:

Procedemos a abrir una ventana terminal y ejecutamos lo siguiente:

sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

y luego rellenamos con esto (sientanse libres de copiar y pegar):

[Re-enable hibernate by default]
  Identity=unix-user:*
  Action=org.freedesktop.upower.hibernate
  ResultActive=yes

Si usamos Ubuntu 14:

Deberemos rellenar el archivo con esto:

[Re-enable hibernate by default in upower]
  Identity=unix-user:*
  Action=org.freedesktop.upower.hibernate
  ResultActive=yes

[Re-enable hibernate by default in logind]
  Identity=unix-user:*
  Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
  ResultActive=yes

Si tenemos Ubuntu 16:

[Re-enable hibernate by default for login1]
 Identity=unix-user:*
 Action=org.freedesktop.login1.hibernate
 ResultActive=yes

[Re-enable hibernate for multiple users by default in logind]
 Identity=unix-user:*
 Action=org.freedesktop.login1.hibernate-multiple-sessions
 ResultActive=yes

Observaciones importantes del archivo de marras:

Advertencia imagen pequeña

Ahora que conocemos el archivo que permite la hibernación hemos de considerar lo siguiente: las lineas que comienzan por “Identity”, “Action” y “ResultActive” como bien pueden observar son las mismas para las versiones de Ubuntu lo que si que es diferente son las etiquetas que las encabezan. Es de notar también que el identado es importante para dichas líneas pues son en jerarquía “hijas” de las etiquetas. Además los nombres de las etiquetas son muy específicas para cada versión de Ubuntu, bueno cada cabeza es un mundo e imaginamos que son muchos y diferentes programadores que han trabajado sobre Ubuntu y que siempre debemos tener siempre en mente que en el campo del software libre nada está escrito sobre piedra, es decir: ¿nos molesta que cada versión de Ubuntu tenga sus diferencias particulares de una a otra según las liberan? El software libre nos permite descargar el código fuente, modificarlo y compilarlo para nuestra propia metadistribución, es decir, es el mismo Ubuntu con pequeñas variaciones (pero si dichas variaciones afectan de algún modo o manera a las aplicaciones que se ejecutan debemos compilar también dichas aplicaciones adaptadas y publicar nuestro propio repositorio para nuesta metadistribución ¿A ver quién se anima a trabajar en ello? Hay gente que conozco que lo hacen, ¡tienen mucho esfuerzo y tenacidad en sus convicciones!).

Si tenemos un ordenador portátil.

En las computadoras portátiles al cerrar su tapa, el comportamiento predeterminado es “dormir” o suspender pero podemos cambiar ese comportamiento siempre y cuando hayamos probado varias veces que la hibernación funciona correctamente:

  • Abrimos una venta terminal e introducimos lo siguiente:
sudo nano /etc/systemd/logind.conf
  • Buscamos la línea que contiene “#HandleLidSwitch=suspend” y la sustituimos por “HandleLidSwitch=hibernate” (nótese que eliminamos el caracter almohadilla y cambiamos “suspend” por “hibernate”.
  • Guardamos el archivo y reiniciamos.

¿Qué problemas podemos enfrentar?

Actualizado el jueves 10 de noviembre de 2016.

Pues pusimos a hibernar nuestro ordenador y al regresar de nuestro trabajo en la calle encendimos y nos mostraba este mensaje:

Ocurrio un error al montar /boot/efi.
Pulse S para no montar o M para una reparación manual.

Al escoger la opción “no montar” pues acepta contraseña pero al no tener acceso al disco duro pues regresa a la pantalla de inicio de sesión. Al escoger la opción de reparación manual “cae” con credenciales de “root” y al introducir:

sudo apt-get update

no se ejecuta correctamente y sugiere el comando dpkg.

Aplicamos:

sudo dpkg --configure -a

y luego el comando “reboot” tras lo cual arranca correctamente. Suponemos que como tenemos configurada las actualizaciones del sistema operativo como “descargar e instalar automáticamente” pues estaba precisamente en ese proceso cuando la pusimos a hibernar.

Agradecemos a los amables colaboradores de Ubuntu-es.org por proporcionarmos la solución, podéis leer el caso en este enlace web.

Enlaces consultados:

En idioma castellano:

En idioma inglés: