¿Qué hardware tiene mi PC? Herramientas GNU/Linux (2)

Publicado por Diego Córdoba en

Ya hemos estado analizando algunos aspectos del hardware de nuestra computadora en nuestra entrega anterior.

Ahora veremos otros comandos interesantes para conocer nuestro hardware en sistemas GNU/Linux!

hardware2_banner

lsusb

Este comando nos mostrará los dispositivos usb que disponga nuestro ordenador, por ejemplo:
[die@debian ~]$ lsusb
Bus 005 Device 003: ID 13d3:5702 IMC Networks UVC VGA Webcam
Bus 005 Device 002: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 003: ID 13d3:3315 IMC Networks Bluetooth module
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
También disponemos del modificador -v o –verbose para usa salida más detallada:
Bus 005 Device 003: ID 13d3:5702 IMC Networks UVC VGA Webcam
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x13d3 IMC Networks
  idProduct          0x5702 UVC VGA Webcam
  bcdDevice            3.22
  iManufacturer           3 Azurewave
  iProduct                1 USB2.0 UVC VGA WebCam
  iSerial                 2 200901010001
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          743
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          4 USB Camera

lsmod

Con lsmod podemos listar los módulos que están cargados en nuestro equipo.

En el kernel de Linux las funcionalidades para acceder a diversos elementos de hardware pueden cargarse de dos maneras. Una, directamente compiladas junto con el código del kernel. Otra, compiladas en forma externa, como módulos. Los módulos tienen la ventaja de que pueden cargarse y descargarse a gusto y necesidad, según sean los dispositivos que necesitemos utilizar.

Los módulos del kernel son agregados de funcionalidad que permiten acceder a dispositivos de ciertas y determinadas maneras. Muchas veces para poder, por ejemplo, tener audio, o red wireless en nuestro sistema, deberemos cargar los módulos correspondientes.

Veamos una salida del comando lsmod:

[die@debian ~]$ lsmod
Module                  Size  Used by
michael_mic            12490  12
arc4                   12480  6
ecb                    12649  0
bnep                   17149  2
rfcomm                 32113  0
nfnetlink_queue        17364  0
nfnetlink_log          17033  0
nfnetlink              12853  2 nfnetlink_log,nfnetlink_queue
uinput                 17068  1
nfsd                  224577  2
auth_rpcgss            45794  1 nfsd
oid_registry           12387  1 auth_rpcgss
nfs_acl                12463  1 nfsd
nfs                   167687  0
lockd                  69375  2 nfs,nfsd
fscache                40686  1 nfs
sunrpc                198822  6 nfs,nfsd,auth_rpcgss,lockd,nfs_acl

En la primer columna tenemos el nombre del módulo, en la segunda el tamaño del mismo, luego un contador de la cantidad de módulos que usan al módulo en cuestión. Los módulos pueden tener cierta jerarquía, es decir, módulos que utilizan a módulos. En este caso, en la última columna veremos una serie de dependencias, o qué módulos utilizan al módulo en cuestión, y, por consiguiente, qué módulos deberán estar previamente cargados para poder cargar un módulo en el sistema.

Este comando es una forma simple de mostrar el contenido del archivo /proc/modules

dmesg y los logs de hardware

El kernel mantiene un buffer de mensajes de funcionamiento normal y de logs de errores, que se cargan en el momento de iniciar el equipo, y luego se va nutriendo con cambios de hardware, montaje de dispositivos, etc.

El comando dmesg nos permite acceder a este contenido de mensajes, para analizar y poder, en caso de ser necesario, encontrar errores.

Supongamos que insertamos un pendrive usb en nuestro sistema, y no se monta solo. Una posible causa es que nuestro entorno de escritorio no lo esté montando automáticamente. Otra, que el dispositivo no haya sido reconocido por el kernel, y no haya sabido interpretarlo.

Para salir de dudas, podemos correr un dmesg y analizar las últimas líneas para determinar qué es lo que «vio» el kernel en el momento en el que insertamos el dispositivo.

[die@debian ~]$ dmesg
...
[   40.933906] systemd-logind[3614]: Linked /tmp/.X11-unix/X0 to /run/user/1000/X11-display.
[  134.956132] [drm:intel_enable_lvds] *ERROR* timed out waiting for panel to power on
[  138.554339] systemd-logind[3614]: Removed session c1.
[  141.558627] systemd-logind[3614]: New session 2 of user die.
[  195.310710] perf samples too long (2521 > 2500), lowering kernel.perf_event_max_sample_rate to 50000
[  453.134230] perf samples too long (5003 > 5000), lowering kernel.perf_event_max_sample_rate to 25000
[  454.153442] CE: hpet increased min_delta_ns to 30172 nsec
[  817.294496] hda-codec: out of range cmd 0:20:400:fffff7ff
[ 2442.701599] perf samples too long (14448 > 10000), lowering kernel.perf_event_max_sample_rate to 12500
[ 3128.021400] CE: hpet increased min_delta_ns to 45258 nsec
[ 3128.021808] CE: hpet increased min_delta_ns to 67887 nsec
[ 3128.022270] CE: hpet increased min_delta_ns to 101830 nsec

Los mensajes de log entregados por dmesg se encuentran almacenados en el directorio de log del sistema, en sistemas SysVInit, en el archivo /var/log/dmesg.

En el mismo directorio también encontraremos también los demás archivos de log, de por sí interesantes, sobre los registros de actividad del resto del sistema y sus servicios.

Por ejemplo, en el archivo /var/log/auth.log encontraremos logs de autenticación y seguridad.

En /var/log/syslog tendremos todos los registros del sistema.

En /var/log/apache2/* encontraremos los archivos de log de accesos y errores de sitios cargados en nuestro servidor web.

Por ejemplo, también tenemos /var/log/mail.log con los mensajes de eventos de nuestro servidor de correos.

Estos logs son manejados por un daemon que hace las veces de implementación del protocolo de syslog, y que en Debian, por default en la versión 7 «Wheezy» es rsyslog, que detallaremos en algún otro artículo.

Conociendo al fabricante de nuestro equipo

En nuestro Linux además poseemos algunos comandos para acceder a los datos de fabricante, serial, etc, de nuestro hardware.

El comando dmidecode nos muestra muchísima información detallada, que podremos guardar en algún archivo de texto para facilitarnos el acceso:

[die@debian ~]$ sudo dmidecode
# dmidecode 2.12
SMBIOS 2.6 present.
31 structures occupying 1363 bytes.
Table at 0x000F0760.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
    Vendor: American Megatrends Inc.
    Version: 0401  
    Release Date: 12/30/2010
    Address: 0xF0000
    Runtime Size: 64 kB
    ROM Size: 1024 kB
    Characteristics:
        ISA is supported
        PCI is supported
        PNP is supported
        APM is supported
...

De esta información podremos extraer algunos datos interesantes:

[die@debian ~]$ sudo dmidecode -s system-manufacturer
ASUSTeK Computer INC.

[die@debian ~]$ sudo dmidecode -s system-product-name
1215P

[die@debian ~]$ sudo dmidecode -s system-version
x.x

[die@debian ~]$ sudo dmidecode -s system-serial-number
B2OAAS041665
Espero les resulte interesante el post!
Si conocen alguna otra herramienta interesante para agregar, pueden hacerlo a través de los comentarios en el artículo!
¡GRACIAS!

Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador