Skip to content
Hardmaniacos

Conociendo los componentes de tu máquina

11/11/2011
Imagen del visor de dispositivos de KDE

En esta ocasión quiero mostraros algunas herramientas de GNU/Linux que os ayudarán a conocer qué componentes tiene instalado el PC, qué detecta y qué opciones tiene cada componente. Esto es muy importante para saber qué hacer cuando instalas un nuevo componente, o simplemente tras instalar el SO. En la mayor parte de las ocasiones usaremos la terminal, también llamada ventana de comandos, o Shell.

Una de las herramientas más importantes de Linux es cat
No es específicamente un comando de diagnóstico, de control de hardware, etc. cat simplemente muestra el contenido de un fichero en la terminal. Un ejemplo de su uso es comprobar las características de tu procesador. Veamos el mío:


zalo@maquina:~$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz
stepping : 6
cpu MHz : 1000.000
cache size : 2048 KB
...
cpu cores : 2
....
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
zalo@maquina:~$

Este fichero lo crea el SO, concretamente el kernel Linux, cuando arranca. Se puede ver que en este caso tiene 2 CPUs:
cpu cores : 2
además del modelo:
model name : Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz
el tamaño de palabra:
clflush size : 64
indica si es de 32 o 64 bits. Ojo! la opción cpu MHz indica la frecuencia del procesador en el momento de ver el fichero, en este caso 1GHz, que no coincide con el máximo, 1,8GHZ, simplemente porque se reduce para ahorrar batería, variando según la necesidad.

Ahora toca un comando específico de hardware
Para comprobar qué dispositivos PCI están instalados en nuestro equipo usamos lspci. Tiene muchas opciones a usar, algunas muy avanzadas. Usaremos la opción verbose (-v) para ver detalles del hardware . Por ejemplo:

zalo@maquina:~$ lspci
00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller (rev 10)
...
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
04:00.0 VGA compatible controller: ATI Technologies Inc Cedar PRO [Radeon HD 5450]
04:00.1 Audio device: ATI Technologies Inc Manhattan HDMI Audio [Mobility Radeon HD 5000 Series]
zalo@maquina:~$

Realmente muestra muchos datos, pero no siempre lo que interesa es ver todo lo que está disponible. A veces quieres ver detalles muy específicos sobre un solo dispositivo. En ese caso usamos directamente lspci para ver los dispositivos de que disponemos (como arriba), y luego, para centrarnos en uno solo, filtraremos por su ID de slot o conexión. Por ejemplo me centraré en la conexión Ethernet, la tarjeta de red, ID= 01:00.0 (arriba en rojo)

zalo@maquina:~$ lspci -vvs 01:00.0
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
Subsystem: ASRock Incorporation Motherboard (one of many)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- Latency: 0, Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 43
Region 0: I/O ports at d800 [size=256]
Region 2: Memory at cfeff000 (64-bit, prefetchable) [size=4K]
Region 4: Memory at cfef8000 (64-bit, prefetchable) [size=16K]
Expansion ROM at feae0000 [disabled] [size=128K]
Capabilities:
Kernel driver in use: r8169
Kernel modules: r8169

En este caso, -vv fuerza a mostrar muchos detalles (-v muestra algunos) y -s filtra para mostrar solo lo relacionado con el dispositivo con el ID especificado. Fijaos en la línea «Capabilities«, ¿no deja acceso?, simplemente son datos ocultos a los usuario, si se ejecuta el comando con permisos de superusuario cambia y da unas cuantas líneas más (en mi caso unas 30) de capacidades relativas al bus PCI. Lo más interesante de este comando (lspci -vs ID) es poder ver qué módulo se encarga de manejar ese dispositivo (Kernel modules). Si hay algún módulo encargado entonces está disponible. En caso contrario hay que solucionarlo.

¿Qué es un módulo?

Los módulos del kernel son lo mismo que los drivers o controladores de windows. Todo dispositivo necesita un módulo que lo maneje y haga algo útil con él.

Qué hay de los dispositivos USB? Bien si, para PCI tenemos lspci, para USB tenemos lsusb:
zalo@maquina:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
Bus 001 Device 003: ID 0ac8:c002 Z-Star Microelectronics Corp. Visual Communication Camera VGP-VCC1
Bus 004 Device 002: ID 044e:300c Alps Electric Co., Ltd Bluetooth Controller (ALPS/UGPZ6)

Como casi cualquier comando de Linux, también tiene modificadores, si bien en este caso los datos mostrados son muy avanzados. Con este comando sabrás en todo momento si cualquier dispositivo está reconocido por el sistema o hay algún problema que impide que funcione de modo correcto. Pero es posible saber más. Quizás te interese ver mensajes cada vez que se desconecta/desconecta algún dispositivo en el PC, para comprobar que reconoce o que lo reconoce correctamente el sistema.

Para este trabajo está el comando udevadm que permite administrar el descubrimiento y configuración de dispositivos. Usaremos el modificador monitor para monitorizar el funcionamiento del servicio udev.

Con udevadm monitor tendrás mensajes en el mismo momento de conectar/desconectar cada dispositivo a tu PC

Como ejemplo se muestra lo que sucede al conectar una webcam USB:
zalo@PC-Zalo:~$ udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
.
KERNEL[250068.687119] add /devices/pci0000:00/0000:00:1d.7/usb1/1-3 (usb)
KERNEL[250068.691144] add /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0 (usb)
KERNEL[250068.691280] add /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.1 (usb)
UDEV [250068.843578] add /devices/pci0000:00/0000:00:1d.7/usb1/1-3 (usb)
KERNEL[250068.886143] add /module/uvcvideo (module)
...
UDEV [250068.950366] add /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0/video4linux/video1 (video4linux)
UDEV [250068.967044] add /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0/input/input10/event9 (input)

Algo similar se mostraría al desconectarla. Pruébalo tu mismo!. Para detener el funcionamiento del comando simplemente presiona al mismo tiempo CONTROL+C

Nada más por ahora, os animo a que probéis en vuestro propio PC los comandos que os he mostrado y que os ayude.Evidentemente en las distribuciones actuales también existen aplicaciones gráficas con las que realizar este tipo de comprobaciones. En mi caso, usando Kubuntu dispongo de KInfocenter que muestra algo así:

Imagen del visor de dispositivos de KDE