viernes, 29 de mayo de 2009

Usar dmidecode para acceder a la tabla de contenidos del SMBIOS

Fuente: Man

dmidecode es una herramienta que permite acceder a los datos de la tabla de contenidos del SMBIOS (DMI) del computador en un formato legible para seres humanos. Esta tabla contiene una descripción del hardware del sistema, además de información útil, como números de serie y revisión del BIOS. Gracias a esta tabla puedes obtener esta información sin tener que verificarlo directamente del hardware. Ahora bien, mientras esto permite obtener información de un modo expedito, al mismo tiempo hace que la información presentada no sea siempre correcta. Los datos especificados en el SMBIOS se clasifican en tipos (types) y a cada uno de ellos se le identifica con un número:

Type Information
----------------------------------------
0 BIOS
1 System
2 Base Board
3 Chassis
4 Processor
5 Memory Controller
6 Memory Module
7 Cache
8 Port Connector
9 System Slots
10 On Board Devices
11 OEM Strings
12 System Configuration Options
13 BIOS Language
14 Group Associations
15 System Event Log
16 Physical Memory Array
17 Memory Device
18 32-bit Memory Error
19 Memory Array Mapped Address
20 Memory Device Mapped Address
21 Built-in Pointing Device
22 Portable Battery
23 System Reset
24 Hardware Security
25 System Power Controls
26 Voltage Probe
27 Cooling Device
28 Temperature Probe
29 Electrical Current Probe
30 Out-of-band Remote Access
31 Boot Integrity Services
32 System Boot
33 64-bit Memory Error
34 Management Device
35 Management Device Component
36 Management Device Threshold Data
37 Memory Channel
38 IPMI Device
39 Power Supply

Una forma de acceder a la información identificada con un tipo específico mediante el parámetro -t, --type (TYPE):
sudo dmidecode -t número_de_type
Es posible acceder a más de un tipo, basta con separarlos mediante comas.
De esta manera, si quiero saber el lenguaje instalado en mi BIOS debo acceder al tipo número 13:
sudo dmidecode -t 13

En mi caso, la información obtenida es la siguiente:
# dmidecode 2.9
SMBIOS 2.3 present.

Handle 0x0021, DMI type 13, 22 bytes
BIOS Language Information
Installable Languages: 1
en|US|iso8859-1
Currently Installed Language: en|US|iso8859-1

Lo que indica que la BIOS soporta sólo un lenguaje y que el lenguaje instalado es el inglés. Esta es una característica de la tabla de datos de SMBIOS, no sólo describe la configuración actual del sistema, sino que además puede indicar su posible evolución, es decir, puedes saber la CPU más rápida soportada o la mayor cantidad de memoria ram que tu equipo puede manejar.

Otra forma útil de acceder a información con dmidecode es mediante el uso de palabras clave, por llamarlas de alguna manera, que en inglés se denominan keywords. Cada keyword agrupa ciertos tipos que están relacionados, por lo que al referirte a un keyword accedes a todos los tipos que él agrupa:

Keyword Types
------------------------------
bios 0, 13
system 1, 12, 15, 23, 32
baseboard 2, 10
chassis 3
processor 4
memory 5, 6, 16, 17
cache 7
connector 8
slot 9

La sintaxis para acceder a información clasificada por cada keyword es la siguiente:
dmidecode --type keyword
Por, ejemplo, si deseas ver la información agrupada en el keyword memory debes escribir:
sudo dmidecode --type memory
lo que sería equivalente a escribir:
sudo dmidecode --type 5, 6, 16, 17
o
sudo dmidecode -t 5, 6, 16, 17
Por último es posible especificar mucho más la información a la que deseas acceder con el uso de grep. Viendo un ejemplo, si accedo al tipo 16, Physical Memory Array, en mi caso obtengo lo siguiente:
# dmidecode 2.9
SMBIOS 2.3 present.

Handle 0x0024, DMI type 16, 15 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 3 GB
Error Information Handle: Not Provided
Number Of Devices: 3

Por lo tanto, si quiero saber la capacidad máxima de memoria ram que aguanta mi sistema escribo:
sudo dmidecode -t 16| grep Maximum

y obtengo lo siguiente:
Maximum Capacity: 3 GB