La segunda herramienta que nos va a permitir conocer la configuración del hardware de un sistema en producción sin tener que pararlo ni abrirlo es dmidecode
. Al igual que hwinfo
, se trata de una utilidad de línea de comandos. Sin embargo, en vez de sondear el hardware, dmidecode
analiza la información almacenada en la BIOS en las tablas DMI y la muestra en pantalla.
Para instalar dmidecode
en un sistema Debian, basta con seguir el procedimiento habitual:
# apt-get install dmidecode
La forma de utilizar dmidecode
es muy sencilla y similar a la de hwinfo
, es decir, invocamos el comando junto con un argumento que nos permitirá obtener la información concreta deseada. Evidentemente, si ejecutamos dmidecode sin argumentos, obtendremos toda la información disponible:
# dmidecode
SMBIOS 2.7 present.
109 structures occupying 3956 bytes.
Table at 0x000EB6C0.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: American Megatrends Inc.
Version: 0915
Release Date: 07/27/2012
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 8192 kB
Characteristics:
PCI is supported
BIOS is upgradeable
...
dmidecode
tiene dos parámetros para seleccionar la información a mostrar, --string
y --type
. El primero obtiene el valor de la cadena DMI indicado por la palabra clave que hay especificar. Por ejemplo, para conocer la marca del procesador:
# dmidecode --string processor-manufacturer
Intel
Al contrario que hwinfo
, sólo podemos utilizar un valor a la vez. La lista de palabras clave admitidas se puede consultar en el manual electrónico de dmidecode
:
# man dmidecode
El parámetro --type
muestra las entradas en la BIOS del tipo que especifiquemos, donde el tipo es o bien un número (pudiendo indicar más de uno separados por comas) o bien una palabra clave (de una lista que es distinta a la utilizada por --string
). Por ejemplo, para conocer información sobre el sistema y la placa base:
# dmidecode --type 1,2
SMBIOS 2.7 present.
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: System manufacturer
Product Name: System Product Name
Version: System Version
Serial Number: System Serial Number
UUID: XXX
Wake-up Type: Power Switch
SKU Number: SKU
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: ASUSTeK COMPUTER INC.
Product Name: P8H77-M PRO
Version: Rev X.0x
Serial Number: XXX
Features:
Board is a hosting board
Board is replaceable
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
Y para saber más sobre el chasis del servidor:
# dmidecode --type chassis
SMBIOS 2.7 present.
Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
Manufacturer: Chassis Manufacture
Type: Desktop
Lock: Not Present
Version: Chassis Version
Serial Number: Chassis Serial Number
Asset Tag: Asset-1234567890
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: None
OEM Information: 0x00000000
Height: Unspecified
Number Of Power Cords: 1
Contained Elements: 0
Al igual que antes, la lista de tipos numéricos y palabras clave admitidas se puede consultar en el manual electrónico de dmidecode
.
Como curiosidad, el paquete dmidecode
incluye otras herramientas, destacando biosdecode
, que analiza la memoria de la BIOS y muestra las estructuras de las que tiene conocimiento.
Para terminar dos advertencias. La primera es que dmidecode
sólo muestra lo que la BIOS conoce, por lo que si se trata de un sistema de esos en los que la BIOS es muy espartana, es posible que no obtengamos todo lo que queremos conocer (típico de un sistema de marca). La segunda es que hay que tener cuidado al utilizarlo en un sistema en producción (aunque este sea su objetivo). Todo lo que suponga sondear el hardware está sujeto a una probabilidad (mínima) de provocar problemas en la plataforma y su caída.
Se me olvidaba comentar que una de las mayores utilidades de
dmidecode
es descubrir los límites de los recursos hardware de un sistema. El ejemplo que utilicé para justificar esta serie de artículos, la renovación de la RAM de un servidor en producción, me viene muy bien para ilustrar esta posibilidad.El tipo 16 nos informa del máximo de memoria que un sistema soporta, mientras que el 17 nos habla de la RAM ya instalada: tamaño, tipo, bancos ocupados, etc. Por ejemplo:
# dmidecode --type 16,17
SMBIOS 2.4 present.
Handle 0x1000, DMI type 16, 15 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 4 GB
Error Information Handle: Not Provided
Number Of Devices: 2
Handle 0x1100, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 1024 MB
Form Factor: DIMM
Set: None
Locator: DIMM_A
Bank Locator: Not Specified
Type: DDR
Type Detail: Synchronous
Speed: 667 MHz
Manufacturer: 7F7F7F0B00000000
Serial Number: 9306AC15
Asset Tag: 000746
Part Number: NT1GT64U8HB0BN-3C
Handle 0x1101, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 2048 MB
Form Factor: DIMM
Set: None
Locator: DIMM_B
Bank Locator: Not Specified
Type: DDR
Type Detail: Synchronous
Speed: 667 MHz
Manufacturer: 7F98000000000000
Serial Number: B712B00B
Asset Tag: 000B31
Part Number: