25 julio 2011

Hibernando en Debian

Desde hace algún tiempo he estado tratando de asimilarme a Debian, pues hay varias cosas que hace tiempo que me hastían de Ubuntu, pese a que aún no he encontrado una distribución con unos repositorios tan completos sin tener que añadir externos; es por eso que últimamente ando usando Linux Mint en vez de Ubuntu.

Sin embargo, decidí actualizar de Linux Mint 10 a 11 haciendo un cambio de repositorios (cosas que desaconsejaban desde Linux Mint, pero es que quería intentar ahorrarme la configuración e instalación de programas una vez reinstalado el sistema operativo), lo cuál me ha llevado a tener un problema con dependencias y demás con el propio kernel.

Por suerte, contaba con una instalación de Linux Mint Debian Edition (LMDE), con lo cuál he aprovechado para pasar un par de días instalado en él, a ver si consigo no echar a faltar demasiado los repositorios de Ubuntu, desde Linux Mint, pues usa los repositorios d Ubuntu como base.

Una vez actualizado, he recordado uno de los escollos que tenía con Debian (además de unos cuantos detalles que en Ubuntu te los dejan hechos), y era la hibernación: si quiero reiniciar para pasar un rato jugando en Windows, me gusta poder hacerlo sin preocuparme de lo que dejo a medias; sin embargo, en Debian no conseguía que funcionase correctamente. Tras analizar algunos logs y mensajes del kernel y buscar en diversas fuentes, he encontrado la manera de arreglarlo.

Para poneros en contexto sobre mi situación, diré que tras analizar los registros de /var/log/pm-powersave.log y /var/log/pm-suspend.log, y leer el siguiente mensaje durante el inicio del sistema (boot): Invalidating stale software suspend images, me dí cuenta de que el problema estaba en la restauración; es decir, que el sistema hibernaba bien (guardaba la imagen en disco), pero al iniciar, no la restauraba.

Para solucionar este problema, basta con añadir en la línea de kernel de grub del archivo /boot/grub/grub.cfg (en mi caso, grub2) la opción resume:

linux /boot/vmlinuz-2.6.39-2-amd64 root=UUID=root ro resume=UUID=swap quiet

Donde root es el UUID de la partición del sistema y swap es el UUID de la partición de swap.

Cabe decir que, si se actualiza el grub, el archivo volverá a cambiar y la opción de restaurar desaparecerá; para evitar esto, la opción de resum podéis añadirla al archivo /etc/default/grub, en la variable GRUB_CMDLINE_LINUX:

GRUB_CMDLINE_LINUX="resume=UUID=swap"

Una vez hecho esto último, ejecutáis como usuario root:

# update-grub

A partir de ahora, cada vez que hibernes, Debian restaurará la imagen del sistema, dejando el pc como cuando lo hibernaste.

Espero que a alguien le sirva de ayuda, al igual que a mí.

Actualización 16 de marzo de 2012: Como método alternativo al del grub, podéis poner la misma línea en /etc/initramfs-tools/conf.d/resume; tened en cuenta las mayúsculas:

RESUME=UUID=swap

Después de esto, ejecutáis el siguiente comando como root:

# update-initramfs -u

Un saludo,
Morpheus