ACPI
ACPI es el acrónimo inglés de Interfaz Avanzada de Configuración y Energía,
lo que suena estupendamente hasta que miras un poco más allá. Está diseñado
para independizar al sistema operativo respecto del BIOS, pero al final
obtienes una dependencia más, puesto que emplea su propio lenguaje para
manejar los eventos (ACPI Machine Language ó AML
) almacenado en el
--firmaware-- que constituye el BIOS
, y debe interpretarlo el sistema
operativo. Un par de capas más de complejidad añadidas ... y no gratis
precisamente.
Después viene el asunto de las tablas. Tablas que guardan información sobre el hardware y que el sistema operativo puede consultar, pero que pueden incluír errores ó corromperse de varias formas.
Una de las tablas que más menciones obtiene en la red, y que provoca no pocos
problemas es la DSDT
(Differentiated System Description Table).
DSDT
Esta tabla describe los dispositivos del sistema y es la mayor y más importante de todas las que componen este mecanismo.
Está compuesta por una cabecera y un bloque de definición codificado en AML
y, al contrario que otras tablas, no puede ser descargada ya que proporciona
el espacio de nombres básico de ACPI al que todos los demás pueden sumarse.
Accediendo al DSDT
En Debian existen dos paquetes que permiten jugar con estas tablas: iasl y acpidump.
Extraer el contenido del DSDT en la máquina usando cuenta de superusuario:
# cat /proc/acpi/dsdt > acpidump.orig
ó empleando el programa
acpidump
puesto que el acceso a/proc/acpi
está siendo abandonado.Desensamblarlo ya como usuario normal:
$ iasl -d acpidump.orig Intel ACPI Component Architecture AML Disassembler version 20061109 [May 15 2007] Copyright (C) 2000 - 2006 Intel Corporation Supports ACPI Specification Revision 3.0a Loading Acpi table from file acpidump.orig Acpi table [DSDT] successfully installed and loaded Pass 1 parse of [DSDT] Pass 2 parse of [DSDT] Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions) .................................................................. .................................................................. .................................................................. .................................................................. .............. Parsing completed Disassembly completed, written to "acpidump.dsl" $
Ensamblarlo de nuevo y observar la salida:
$ iasl -tc acpidump.dsl Intel ACPI Component Architecture ASL Optimizing Compiler version 20061109 [May 15 2007] Copyright (C) 2000 - 2006 Intel Corporation Supports ACPI Specification Revision 3.0a acpidump.dsl 4793: Acquire (MUT0, 0x0FFF) Warning 1103 - Possible operator timeout is ignored ^ ASL Input: acpidump.dsl - 7499 lines, 281213 bytes, 2917 keywords AML Output: acpidump.aml - 25903 bytes 725 named objects 2192 executable opcodes Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 788 Optimizations $
Enlaces
Información que he ido reuniendo y que puede darme pistas para posteriores encuentros con estos problemas basura: