Cuando ejecuta Linux en una computadora de escritorio o servidor, a veces necesita identificar el hardware en ese sistema. Un comando usado para esto es lspci
. Funciona mostrando todos los dispositivos conectados al bus PCI. Lo proporciona el paquete pciutils y está disponible para una amplia variedad de sistemas operativos basados en Linux y BSD.
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
Uso básico
La información que se muestra cuando un usuario normal ejecuta lspci
puede estar limitado debido a los permisos de acceso. Ejecutando el comando con sudo
proporciona una imagen completa.
Ejecutando lspci
por sí mismo enumera los buses PCI y sus dispositivos conectados. Este es un ejemplo de la PC de mi centro de medios. Es un sistema basado en CPU AMD Phenom, por lo que tiene un chipset AMD. También tiene un controlador inalámbrico Atheros y una tarjeta gráfica Nvidia. Todos los dispositivos de hardware se enumeran con detalles como el proveedor, el nombre y el número de modelo:
$ sudo lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] RS880 Host Bridge
00:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780 PCI to PCI bridge (ext gfx port 0)
00:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 0)
00:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 1)
00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:12.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:13.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 3c)
00:14.1 IDE interface: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 IDE Controller
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 LPC host controller
00:14.4 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 PCI to PCI Bridge
00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Address Map
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Link Control
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)
02:00.0 Network controller: Qualcomm Atheros AR9287 Wireless Network Adapter (PCI-Express) (rev 01)
Salida detallada
Agregando un -v
La opción aumenta la verbosidad o el nivel de detalle de cada dispositivo. Puede usar -vv
o -vvv
para cantidades aún mayores de detalles del dispositivo. En este nivel, lspci
muestra varios subsistemas y direcciones de memoria, números de solicitud de interrupción (IRQ) y otras capacidades para todos los dispositivos. La salida es extremadamente larga. Pruébelo en su sistema.
Buscando con grep
A veces desea limitar su búsqueda. Por ejemplo, el sitio web de RPM Fusion tiene instrucciones para instalar controladores de gráficos Nvidia. Comienzan con la identificación de su tarjeta gráfica usando el grep
dominio. Esto es lo que obtengo en mi computadora portátil:
$ sudo lspci | grep -e VGA
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
$ sudo lspci | grep -e 3D
01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce MX130] (rev a2)
El grep
los comandos anteriores muestran un dispositivo VGA en mi PC con centro de medios pero ningún dispositivo 3D.
$ sudo lspci | grep -e VGA
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
$ sudo lspci | grep -e 3D
$
Búsqueda por ID de proveedor
Hay otra forma que no requiere grep
. Supongamos que quiero determinar si hay otros dispositivos Nvidia presentes. Es necesario saber un poco más. Yo uso el -nn
opción para mostrar los números de identificación del proveedor y del dispositivo. En mi PC de centro de medios, esta opción muestra mi tarjeta VGA, la identificación del proveedor y la identificación del dispositivo:
$ sudo lspci -nn | grep -e VGA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
El conjunto de corchetes con los números separados por dos puntos después del nombre del dispositivo muestra el proveedor y el ID del dispositivo. El resultado indica que el ID de proveedor de un dispositivo fabricado por Nvidia Corporation es 10de .
El -d
La opción muestra todos los dispositivos de un proveedor, dispositivo o ID de clase especificado. Aquí están todos los dispositivos Nvidia en mi sistema (manteniendo el -nn
para incluir los ID de proveedor):
$ sudo lspci -nn -d 10de:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)
En la salida, puede ver que además de una tarjeta gráfica, tengo un dispositivo de audio Nvidia. Ambos son en realidad parte de la misma Nvidia GeForce GTX 650 tarjeta, pero este es un buen ejemplo, no obstante.
Módulos del núcleo
Junto con los dispositivos de hardware PCI, lspci
puede mostrar qué módulos del controlador del kernel están cargados con -k
opción. Agrego esta opción a mi lspci
comandos para ver varios datos sobre mis dispositivos Nvidia.
$ sudo lspci -nn -k -d 10de:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
Subsystem: eVga.com. Corp. GK107 [GeForce GTX 650] [3842:2650]
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)
Subsystem: eVga.com. Corp. GK107 HDMI Audio Controller [3842:2650]
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
Se muestran dos líneas adicionales:Controlador del kernel en uso y módulos del kernel . El segundo enumera los módulos disponibles para admitir el dispositivo.
Mantenerse actualizado
Nuevos dispositivos y proveedores ingresan constantemente al mercado. Si ve un dispositivo listado como desconocido , su base de datos de ID de dispositivo PCI puede estar desactualizada. Hay dos formas de comprobar. El -Q
La opción utiliza DNS para consultar la base de datos central. Esto, por supuesto, requiere conectividad de red.
$ sudo lspci -Q
También puede actualizar su base de datos de PCI ID local ejecutando el comando update-pciids
.
$ sudo update-pciids
Downloaded daily snapshot dated 2021-08-22 03:15:01
Más información sobre su hardware
Por supuesto, lspci
es solo uno de los muchos comandos disponibles para Linux que es útil para consultar el hardware y el software de su sistema. Obtenga más información sobre el hardware en Linux en mi artículo sobre dispositivos USB:reconozca más dispositivos en Linux con este repositorio de ID USB.