Toda esta historia empezó cuando, al pasar de Mandrake 10.0 a 10.1, dejó de funcionarme el control de energía en el portátil. Ya no podía ver la energía restante ni tampoco el ordenador se paraba al final de un shutdown. Fue entonces cuando empecé a interesarme por el tema.
Básicamente podemos dividir el control de energía en dos grandes categorías:
- Acceso a los parámetros de la batería: carga, descarga, tiempo restante, estado, etc...
- Suspensión a disco: Permite volcar el estado de la memoria al disco duro, de manera que el arranque es casi inmediato y nos permite recuperar la "sesión" en apenas unos segundos.
Podría también añadirse el control de la velocidad del procesador así como de las revoluciones del ventilador, pero si las anteriores categorías ya presentan problemas incluso en portátiles relativamente modernos, un control tan fino se me antoja casi de ciencia ficción.
Antes que nada adelantar que no soy un experto en el tema, así que mis apreciaciones no son ni mucho menos para sentar cátedra y lo que intento es que hagamos un buen listado de las opciones que hay sobre el tema a día de hoy.
Para empezar, decir que la gestión de energía en el portátil corre a cargo de APM y ACPI. APM son las siglas de Advanced Power Management, mientras que ACPI corresponde a Advanced Configuration and Power Interface.
ACPI es, exactamente, una especificación abierta desarrollada por HP, Intel, Microsoft, Phoenix y Toshiba. Establece los mecanismos por los cuales el sistema operativo gestiona la energía, no sólo de los portátiles, sino también de equipos de sobremesa y servidores. Se supone que ACPI es la evolución de APM, y las principales distribuciones lo incluyen ya desde hace algunas versiones.
Por su parte, APM también puede hacer unas cuantas cabriolas. En principio, y si tu BIOS es "APM-complaint", puedes acceder a todos los datos sobre el estado de la batería, así como incluso suspender el sistema. Como siempre, el primer paso es incluir el soporte APM en el kernel. Creo que este es el fallo del kernel que viene con la Mdk 10.1, ya que un "apm -v" responde:
No APM support in kernel
Una vez nos hemos asegurado de que nuestro kernel contiene soporte para APM o ACPI, estaremos en condiciones de acceder al control de energía. Hay que tener en cuenta que APM y ACPI son mutuamente excluyentes, así que podemos tomar las medidas pertinentes en el kernel mismo o bien añadir los parámetros apropiados al arranque en el LILO (por ej. "append="apm=on acpi=off"). Comentar que desde la Mdk 10.1 tengo que utilizar esta línea para desactivar el ACPI, ya que si no el portátil se queda tieso al enchufarle cualquier cosa por un puerto USB. Algún tipo de problema con el sistema de archivos USB, me temo.
Una vez tenemos el driver preferido funcionando correctamente, existen numerosas opciones para comprobar el estado de la batería. Podemos desde tirar a pelo de los ficheros correspondientes en /proc hasta echar mano del kcontrol y la soberbias herramientas que el KDE pone a nuestra disposición.
La suspensión a disco es una de las características a las que me gustaría acceder y que nunca he conseguido hacer funcionar. El principio de funcionamiento es el siguiente: Al ejecutar el comando correspondiente, el estado de la memoria se vuelca en forma de imagen en una de las particiones swap activas. En el siguiente arranque, el kernel detecta la imagen que hemos guardado, la recupera y continúa con el funcionamiento como si aquí no hubiera pasado nada. Desde los kernels de la serie 2.5.x, de esta característica mágica se encarga "Software Suspend".
Para hacer sitio en el disco o en nuestra partición de swap, ya que necesitaremos un espacio algo más grande que nuestra memoria física, tenemos dos opciones: crear una nueva partición ad-hoc ---lo cual no es siempre posible--- o crear una partición de swap en un fichero. Esta segunda opción nos permite más flexibilidad y siempre se puede echar mano de ella, aún cuando no haya más espacio en el disco duro para hacer más particiones.
El problema de la suspensión no es la suspensión en sí, sino la recuperación. Puede funcionar en alguna ocasión, pero la mayor parte de las veces falla estrepitosamente. Al menos esa fue mi impresión la última vez que me eché la manta a la cabeza.
Desde entonces he leído que han aparecido diferentes soluciones en el tema de suspensión a disco, pero no me he animado a porbar ninguna y por tanto no conozco su estado actual. A ver si alguien puede comentar sus logros al respecto.
Y eso es todo. Dejo aquí esta suerte de introducción para que el artículo se enriquezca con las aportaciones de los libertonianos más versados en la materia. Yo permanecerá agazapado a ver lo que puedo aprender, como siempre :)