lshw
Los elementos del hardware de tu sistema, al ser detectados por el nucleo y sus modulos siempre dejaran rastros, ya sea en algunos logs, o en carpetas como /proc y /sys. Mediante la recopilacion y analisis de esta informacion, lshw nos entrega un output completisimo, claro, conciso y sencillo de interpretar.
lshw (Hardware Lister) es una pequena herramienta desarrollada solo para Linux, que provee informacion detallada sobre la configuracion de hardware de tu maquina. Puede reportar la configuracion exacta de la memoria, version del firmware, configuracion de la placa madre, version y velocidad del CPU, configuracion del cache, velocidad del bus, dispositivos conectados a interfaces PCI, USB o IDE, etc.
Con lshw puedes obtener informacion detalladisima de tu maquina, sin siquiera sacar un tornillo. Ademas es sumamente util en caso de que trabajes con un servidor alojado en un data center al que no tengas acceso fisico.
lshw es una herramienta desarrollada para utilizar mediante linea de comando, sin embargo existe una herramienta grafica. Esta herramienta grafica, si bien facilita el uso al usuario, no es tan completa como utilizarla desde la linea de comando. El nombre de la herramienta grafica es lshw-gtk, y para instalarla, utilicen su getsor de paquetes preferido, dado que probablemente , o adecuado a su distro. En mi caso:
apt-get install lshw-gtk
Como interpretar el output de lshw
Un ejemplo de output para lshw seria asi (en un Dell OptiPlex GXa, Pentium II 266MHz, Memoria de 192 MB):
dell product: OptiPlex GXa 266L EM+ vendor: Dell Computer Corporation serial: NL2SC capabilities: smbios-2.2 dmi-2.2 *-core *-firmware description: BIOS vendor: Dell Computer Corporation version: A10 (06/23/00) size: 64KB capacity: 192KB capabilities: isa pci pnp apm upgrade shadowing escd cdboot bootselect edd int13floppytoshiba int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer int10video *-cpu product: Pentium II (Klamath) vendor: GenuineIntel slot: Microprocessor size: 266MHz capacity: 333MHz clock: 66MHz capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov mmx *-cache:0 description: Internal L1 Cache size: 32KB capacity: 32KB *-cache:1 description: Pipeline burst Synchronous External L2 write-back Cache size: 512KB capacity: 512KB *-memory description: System Memory slot: System board or motherboard size: 192MB capacity: 384MB *-bank:0 description: DIMM DRAM Synchronous 64 bits slot: DIMM_A size: 64MB *-bank:1 description: DIMM DRAM Synchronous 64 bits slot: DIMM_B size: 64MB *-bank:2 description: DIMM DRAM Synchronous 64 bits slot: DIMM_C size: 64MB
Entonces, podemos ver que lshw nos entrega su output dividido en nodos con atributos desplegados en la siguiente estructura de arbol:
system information motherboard information cpu information cache, logical cpu memory capacity, total size, individual bank information pci slot information ide slot information disk information total size, partition, usb slot information network
- Un nodo sera marcado como CLAIMED si ha sido cargado un driver para el nodo.
- Un nodo sera marcado como UNCLAIMED si no se ha cargado soporte especifico para el.
- Un nodo sera marcado como ENABLED si se ha cargado un nodo para el, y esta funcionando completamente.
- Un nodo sera marcado como DISABLED si el nodo ha sido deshabilitado por la configuracion, algun fallo del hardware, etc.
Cada nodo puede contener subnodos y pueden tener diferentes attribute (atributos), capabilities (capacidades), resources (recursos) y valores de configuracion:
Attributes (Atributos)
Atributo | Significado | Ejemplo 1 | Ejemplo 2 | Ejemplo 3 | Ejemplo 4 |
id | identificador interno usado por lshw | cpu:2 | network:1 | cdrom:0 | disk:2 |
class | clase del dispositivo | processor | network | disk | disk |
description | descripcion del nodo de hardware | CPU | Ethernet interface | DVD reader | SCSI disk |
vendor | fabricante del dispositivo | Intel Corp. | Advanced Micro Devices [AMD] | QUANTUM | |
product | nombre de producto del dispositivo | Intel(R) Pentium(R) 4 CPU 1.90GHz | 79c970 [PCnet32 LANCE] | Hewlett-Packard DVD Writer 100 | ATLAS IV 9 WLS |
version | version del dispositivo | 15.1.2 | 25 | 1.37 | 0707 |
serial | numero de serie del dispositivo | 00:60:b0:87:86:22 | CN1AA0786J | 369914632368 | |
capacity | capacidad maxima reportada por del dispositivo | 100000000 (100MB/s) | 9167634432(8742MB) | ||
size | tamano del dispositivo | 1900000000(1.9GHz) | 10000000 (10MB/s) | 9105018880(8683MB) | |
clock | Reloj del bus (en Hz) del dispositivo | 100000000(100MHz) | 33000000 (33MHz) | ||
width | address width del dispositivo (32 or 64 bits) (Nada que ver con tener un driver 32-64) | 32 | 32 | ||
slot | slot en el cual el dispositivo es conectado | Processor 1 | |||
logicalname | nombre logico bajo el cual el nodo es mostrado en el sistema | eth0 | /dev/hdc | /dev/sdc | |
dev | numero del dispositovo (mayor.menor) | 22d:0d | 8d:32d | ||
businfo | informacion de bus | cpu@0 | pci@02:0a.0 | ide@1.0 | scsi@0:0.12.0 |
physid | id fisica | 4 | a | 0 | 0.c.0 |
Capabilities (Capacidades)
Las capacidades se usan para reportar las caracteristicas de un nodo determinado. El significado exacto de cada caracteristica depende del tipo de nodo. Puede ser la presencia de un coprocesador aritmetico para un CPU, la capacidad para correr a 1GB/s de una determinada interfaz de red, etc. En la mayoria de los casos, las capacidades reportadas por lshw son autodocumentadas.
Resources (Recursos)
Resource type | Descripcion | Ejemplos |
irq | IRQ | irq:16 |
ioport | I/O ports | ioport:1f0(size=8) ioport:3f6 ioport:170(size=8) ioport:376 ioport:50c0(size=16) |
iomem | I/O window | iomem:00006000-000060ff iomem:00006400-000064ff |
memory | memory window (prefetchable or not) | memory:88000000-8bfff000(prefetchable) memory:90000000-93fff000 |
Clases de dispositivo
Si quieres saber el estado, descripcion o detalles de algun tipo de hardware especifico, por ejemplo, relacionado al almacenamiento, a la red, al sistema, al procesador, los dispositivos usb, pci, etcetera, lshw puede darte un reporte especifico, si usas la opcion -class, -C o -c. mas la clase de dispositivo de la que quieras saber. Asi es la sintaxix del comando:
lshw -class clase lshw -C clase lshw -c clase
Classe | Descripcion | Ejemplos |
system | Se refiere a toda la maquina | laptop, server, desktop computer |
bridge | convertidor de bus interno | PCI-to-PCI brige, AGP bridge, PCMCIA controler, host bridge |
memory | banco de memoria que puede contener info, codigo ejecutable, etc. | RAM, BIOS, firmware, extension ROM |
processor | procesador | CPUs, RAID controller on a SCSI bus |
address | memory address range | extension ROM, video memory |
storage | controlador de almcenamiento | SCSI controller, IDE controller |
disk | dispositivo de almacenamiento de acceso remoto | discs, optical storage (CD-ROM, DVD±RW...) |
tape | dispositivo de almacenamiento de acceso secuencial | DAT, DDS |
bus | device-connecting bus | USB, SCSI, Firewire |
network | interfaz de red | Ethernet, FDDI, WiFi, Bluetooth |
display | adaptador de display | EGA/VGA, UGA... |
input | dispositivo de input de usuario | keyboards, mice, joysticks... |
printer | dispositivo de impresion | printer, all-in-one |
multimedia | dispositivo de audio/video | sound card, TV-output card, video acquisition card |
communication | dispositivo de comunicacion de linea | serial ports, modem |
power | fuente de energia | power supply, internal battery |
volume | volumen de disco | filesystem, swap, etc. |
generic | dispositivo generico (se usa cuando no hay una clase predefinida) |
Aca encontre la misma tabla, pero for dummies:
Opciones y uso de lshw
lshw necesita correr con privilegios de usuario root para poder acceder a toda la informacion disponible.
Si pides ayuda al programa (usuario@computador:~# lshw -help ; usuario@computador:~# lshw -h), el output es el siguiente:
usage: lshw [-format] [-options ...]
lshw -version
-version print program version (B.02.15)
format can be
-html output hardware tree as HTML
-xml output hardware tree as XML
-short output hardware paths
-businfo output bus information
options can be
-class CLASS only show a certain class of hardware
-C CLASS same as '-class CLASS'
-c CLASS same as '-class CLASS'
-disable TEST disable a test (like pci, isapnp, cpuid, etc. )
-enable TEST enable a test (like pci, isapnp, cpuid, etc. )
-quiet don't display status
-sanitize sanitize output (remove sensitive information like serial numbers, etc.)
-numeric output numeric IDs (for PCI, USB, etc.)
Entonces. lshw tiene opciones de formato, en las que puedes escoger que el output salga en archivos HTML o xml:
# lshw [-html | -xml] [resto de opciones] > /ruta/donde/alojarlo/archivo.html
# lshw -html > hwinfo.html # lshw -xml > hwinfo.xml
Puedes "pedir" que te de un reporte mas corto (-short), que te muestra los paths del hardware, y puedes pedir un reporte que presente la informacion de bus (-businfo)
La forma general de la informacion de bus es tipo_de_bus@direccion.hexadecimal.punteada
Bus | Descripcion | Formato | Ejemplo |
cpu | CPUs | cpu@id[,logicalcpu] | cpu@0 cpu@0,1 |
firewire | FireWire (IEEE1394) | firewire@GUID | firewire@0030e0f4e020ca8c |
ide | ATA/ATAPI/IDE | ide@controler.id | ide@0.0 (master) ide@0.1 (slave) |
pci | PCI (or AGP) bus | pci@bus:slot.function | pci@02:0a.0 |
scsi | SCSI bus | scsi@controler:target.id.lun | scsi@0:0.12.0 |
usb | Universal Serial Bus | usb@controler:slot.id | usb@1:2.2 |
Si quieres saber la version de lshw, simplemente: lshw -version
Si tienes la version GUI, la puedes lanzar con lshw -X
Hay otro grupo de opciones, las que no son de formato.
Ya sabemos que para acotar el output de lshw a un tipo de dispositivos, ya sea, disco, memoria, red, etc, hacemos:
lshw -C clase_de_dispositivo
lshw -c clase_de_dispositivo
lshw -C clase_de_dispositivo
Estas tres maneras otorgan el mismo output.
Si quieres deshabilitar el output de algun dispositivo, lshw -disable test, donde test es el dispositivo
Si quieres habilitar el output de algun dispositivo, lshw -enable test, donde test es el dispositivo
La opcion -quiet no muestra el estado del dispositivo en cuestion
Con -numeric, lshw te otorga un output numerico para los IDs de los dispositivos
Y finalmente, una opcion interesantisima si quieres hacer preguntas en foros, mailing lists, etc es -sanitize, que oculta datos que debieran ser privados, ya que identifican tu HW, o incluso te podrian identificar a ti (como numeros seriales, ips, etc)
Fuentes:
Wiki del proyecto
Articulo en Linux Magazine
Post en The Geek Stuff
Wiki en esdebian