ACPID: Ni halt, ni shutdown ni hostias

Autor: Armonth | El jueves 28 de diciembre del 2006 @ 07:00.

Originalmente escrito en Enero del 2005, reescrito desde cero y guardado en el disco duro un 30 de Marzo del 2006.

Si Skyhusker escribía hace poco un artículo titulado Como apagar sin ser root pues hoy yo propongo una receta con un objetivo idéntico pero desde mi punto de vista bastante más práctico.

Usaremos ACPI y ACPID. Para apagar el ordenador solo tendremos que pulsar el botón de "power" sin miedo alguno a cargarnos nada.

¿ACPI?

Lo primero es que nuestro ordenador debe soportar ACPI, el texto de la Wikipedia nos viene que ni pintado:

Wikipedia::ACPI

Es un estándar resultado de la actualización del APM, a nivel de hardware, que controla el funcionamiento de la BIOS y proporciona mecanismos avanzados para la gestión (ahorro) de la energía.

Va más allá de lo que podía hacer o manejar la APM. Así, por ejemplo, convierte la pulsación del botón de apagado en un simple evento, de tal forma que cuando el sistema operativo lo detecta, hace un apagado ordenado de la máquina y no una simple desconexión. Se encarga de asignar IRQ a los dispositivos.

Para saber si nuestro ordenador soporta ACPI existen muchas maneras, una de ellas es mirar en las opciones de la BIOS en el apartado de gestión de energía y debería salirnos algo parecido a ACPI Support ON.

Otro método bastante fiable es hacer un cat /proc/cpuinfo y mirar donde pone flags, debería salir escrito "acpi".

También puede darse el caso de que la placa base soporte ACPI pero la BIOS la tenga deshabilitada, si existen dudas tocara mirarse el manual de la placa.

Dando soporte ACPI al kernel linux

Si tenemos soporte ACPI tenemos el 99% hecho, todos los kernels linux de las distribuciones modernas vienen con el ACPI correctamente configurado, este paso es solo para kernels personalizados: al compilar comprobar que tenéis estas opciones:

Power management options (ACPI, APM) ->  
  [*] Power management support

ACPI Support ->
  [*] ACPI support
  [M] Button (imprescindible)

Por último, cargamos el módulo button (insmod button).

¿ACPID?

Ahora toca instalar el demonio que se encarga de "recoger" los eventos que envía ACPI para que si pulsas el botón de apagado el ordenador se apague "ordenadamente". Otra vez, la mayoría de distribuciones vienen con este programa llamado acpid:

apt-cache show acpid | grep Descript
Description: Utilities for using ACPI power management

En Debian con un apt-get install acpid ya estará configurado todo y en /etc/acpi se guardara un script llamado powerbtn.sh que gestionara el apagar el equipo cuando pulses el boton de power.

La sintaxis no parece muy difícil, un event y un action. No se donde encontrar una lista de eventos, pero no seria muy difícil implementar (por ejemplo) que al pulsar el reset haga un reboot y cosas por el estilo.

De momento, desde que lo implemente, las pocas veces que apago el PC me ahorro el su + password + halt (sí, no me gusta el sudo). Por último añadir que esto no me ha dado problema alguno ni siquiera con drivers privativos como nVidia.

Comentarios