# rm-rf.es

Linux hardware info

Vamos a ver como sacar información hardware en Linux por línea de comandos. Mostraremos la info de tarjetas de red, CPUs, memoria, discos duros, controladoras RAID, BUS PCI, USBs, DVDs… En anteriores entradas ya he enseñado algunos trucos para sacar información del hardware en sistemas GNU/Linux, por ejemplo usando el comando dmidecode.

El filesystem proc (/proc) ofrece mucha información del hardware de la máquina en la que se está ejecutando el sistema operativo. La información de hardware se recupera de archivos dinámicos como /proc/cpuinfo ó /proc/meminfo.

Información de CPU en /proc/cpuinfo

El kernel Linux vuelva en este fichero toda la información de cada una de las CPUs del sistema. Estas CPUs pueden ser tanto cores de un procesador (dual core, quad core…), CPUs físicas… lo importante es verificar los valores de CPU Cores y Core ID para verificar estos puntos y localizar cada una de las CPU.

Ejemplo de CPU en /proc/cpuinfo:

$ cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 37
model name	: Intel(R) Core(TM) i5 CPU       M 460  @ 2.53GHz
stepping	: 5
cpu MHz		: 1197.000
cache size	: 3072 KB
physical id	: 0
siblings	: 4
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
 mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
 syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good
 nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl 
 vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm 
 ida arat dts tpr_shadow vnmi flexpriority ept vpid
bogomips	: 5054.13
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

Información de MEMORIA en /proc/meminfo

Toda la información de memoria del sistema se vuelca en este archivos. Como todo lo que hay en /proc, es un archivo dinámico que el kernel actualizará según necesidad:

$ cat /proc/meminfo 
MemTotal:        3853368 kB
MemFree:         2128472 kB
Buffers:          135832 kB
Cached:           693768 kB
SwapCached:            0 kB
Active:           973180 kB
Inactive:         559568 kB
Active(anon):     706460 kB
Inactive(anon):   131452 kB
Active(file):     266720 kB
Inactive(file):   428116 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       3986428 kB
SwapFree:        3986428 kB
Dirty:                16 kB
Writeback:             0 kB
AnonPages:        702964 kB
Mapped:           133204 kB
Shmem:            134776 kB
Slab:              50172 kB
SReclaimable:      29460 kB
SUnreclaim:        20712 kB
KernelStack:        2656 kB
PageTables:        18644 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     5913112 kB
Committed_AS:    2087252 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      572320 kB
VmallocChunk:   34359151204 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       63488 kB
DirectMap2M:     3926016 kB

En la documentación de CentOS explican perfectamente cada uno de los campos. Algunos importantes:

Información de tarjetas de red con lspci y ethtool

El comando lspci muestra un listado de todos los dispositivos PCI del sistema, así que podemos ver la información de las tarjetas de red:

$ lspci | egrep -i 'ethernet|network'
12:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01)
13:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)

Además, con ethtool podemos ver información detallada del estado de la interfaz de red asociada a las tarjetas:

$ ethtool eth0
Settings for eth0:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Link partner advertised link modes:  10baseT/Half 10baseT/Full 
	                                     100baseT/Half 100baseT/Full 
	                                     1000baseT/Full 
	Link partner advertised pause frame use: No
	Link partner advertised auto-negotiation: Yes
	Speed: 1000Mb/s
	Duplex: Full
	Port: MII
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on

Información de tarjetas de discos y controladoras con smartctl

Comandos como fdisk nos muestran información de los discos, pero no indican datos de fabricante o información avanzada como el modelo del disco, la marca, el número de serie, el ID de lun WWN, versión de firmware. Para eso tenemos el comando smartctl. Hay sistemas en los que esta herramienta no está instalada por defecto, su instalación se puede hacer a través del paquete smartmontools:

# apt-cache search smartctl
smartmontools - control and monitor storage systems using S.M.A.R.T.

La cantidad de información que ofrece el comando es brutal, Número de serie, marca y modelo, versión de firmware, capacidad total, tiempo total de uso del disco  y además muestra un log detallado con errores ocurridos en el disco entre otras cosas. Os dejo una parte del output del comando porque es muy extenso:

# smartctl -a /dev/sda
smartctl 5.41 2011-06-09 r3365 [i686-linux-3.2.0-23-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Scorpio Blue Serial ATA
Device Model:     WDC WD1600BEVS-60RST0
Serial Number:    WD-XXXXXXXXX
LU WWN Device Id: 5 0014ee 200b6fd70
Firmware Version: 04.01G04
User Capacity:    160,041,885,696 bytes [160 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Fri Sep  5 18:19:41 2014 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.

Infomación de DMIDECODE ver post

El comando dmidecode es muy potente y nos permite visualizar de una sola vez toda la información de hardware del sistema. dmidecode extrae la información de la BIOS a través del estándar SMBIOS / DMI. Sólo para que veáis toda la información que podemos extraer con el comando, os dejo todos lo que dumpea el comando:

       The SMBIOS specification defines the following DMI types:

       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

         40   Additional Information
         41   Onboard Device

Simplemente ejecutando «dmidecode», sin más, el dump generado muestra toda esa información del sistema. Si queréis filtrar simplemente con el parámetero «-t <type» sacáis la info de algo concreto:

# dmidecode -t system
# dmidecode 2.11
SMBIOS 2.4 present.

Handle 0x0001, DMI type 1, 27 bytes
System Information
	Manufacturer: Hewlett-Packard
	Product Name: HP Pavilion dv6500 Notebook PC    
	Version: Rev 1
	Serial Number: XXXXXXXXXXXX
	UUID: XXXXXXXXXX
	Wake-up Type: Power Switch
	SKU Number: XXXXX#ABE 
	Family: 103C_5335KV

Handle 0x0011, DMI type 32, 20 bytes
System Boot Information
	Status: 

Con estos comandos estáis cubiertos para sacar toda la información de Hardware del sistema que necesitéis a través de la línea de comandos de Linux.

Salir de la versión móvil