¿Cómo puedo encontrar el modelo de hardware en Linux?

89

Utilicé una utilidad de información del sistema para tomar el número de modelo de un sistema, y ​​también de la placa base.

DMI System Manufacturer     LENOVO
DMI System Product          2306CTO
DMI System Version          ThinkPad X230
DMI Motherboard Product     2306CTO  

¿Hay alguna manera de obtener el número de modelo, en este caso 2306CTO, en Linux?

Eduard Florinescu
fuente
2
Para mayor claridad, parece que le interesa el producto de hardware, no específicamente la placa base. Por ejemplo, "ThinkPad X230" es un tipo de computadora, no una placa base.
Bratchley
1
También puede obtener información sin paquetes adicionales ejecutando el comando dmesg o marcando / var / log / dmesg *.
Blake Russo

Respuestas:

114

utilizando el dmidecode | grep -A3 '^System Information'comando Allí encontrará toda la información del BIOS y el hardware. Estos son ejemplos en tres máquinas diferentes (este es un extracto de la salida completa):

System Information
    Manufacturer: Dell Inc.
    Product Name: Precision M4700

System Information
    Manufacturer: MICRO-STAR INTERANTIONAL CO.,LTD
    Product Name: MS-7368

System Information
    Manufacturer: HP
    Product Name: ProLiant ML330 G6
eppesuig
fuente
25
FWIW, probablemente sea mejor acostumbrarse a filtrar para tipos DMI particulares en lugar de usar grep. Para el modelo de hardware general que sería dmidecode -t1. De esa forma, tiene una forma simplista de extraer datos de dmidecode y solo necesita recordar los tipos comunes de DMI. El hábito se vuelve realmente útil cuando se examinan las instalaciones de RAM ( dmidecode -t17) cuando grep puede generar resultados realmente feos si elimina los datos incorrectos. Además, la salida de -tes más completa
Bratchley,
@JoelDavis, no estaba al tanto de esas opciones antes. Los usaré Gracias.
Eppesuig
13
Nota: necesita root. Si desea toda la información para la que tiene permisos para el usuario actual, use: cat /sys/devices/virtual/dmi/id/*(y le permite obtener el nombre del modelo y la clasificación con un usuario normal)
qwertzguy
Canalizar la salida de dmidecode sin argumentos para grep es interesante, pero no es el medio más eficiente para obtener la información. dmidecode puede imprimir exactamente lo que está solicitando el OP especificando la cadena de palabras clave 'system-product-name': sudo dmidecode -s system-product-name
cjac
Creo que vale la pena señalar que los sistemas más antiguos no tienen banderas disponibles dmidecode, ni siquiera una página de manual. La respuesta anterior es la respuesta más portátil de Linux aquí, creo. Las banderas -ty -sson útiles en sistemas más nuevos con seguridad.
Joshua Detwiler
32

Trate sudo dmidecode -t baseboardde información completa sobre las DMI t contenidos capaces relevantes para su placa base, en un formato legible por humanos. Solo para el Nombre del producto del sistema , puede usar cualquiera (escriba dmidecode -spara obtener una lista de palabras clave s trings):

sudo dmidecode -s system-product-name
sudo dmidecode -s baseboard-product-name

Otras opciones relevantes para la información de la placa base son

sudo dmidecode -s system-version
sudo dmidecode -s baseboard-version
sudo dmidecode -s system-manufacturer
sudo dmidecode -s baseboard-manufacturer

Pruebe sudo dmidecode -spara obtener una lista completa de las cadenas DMI del sistema disponibles.

eToThePiIPower
fuente
24

Para el registro, gran parte de esta información está disponible en / sys / devices / virtual / dmi / id en linuces modernos (es decir, desde al menos 2011), y mucha información si, en particular, sin incluir números de serie, es legible por los usuarios habituales. . Para responder a la pregunta del póster original, product_namees el archivo que contiene el nombre del modelo del sistema.

bios_date
bios_vendor
bios_version
board_asset_tag
board_name
board_serial
board_vendor
board_version
chassis_asset_tag
chassis_serial
chassis_type
chassis_vendor
chassis_version
modalias
power
product_name
product_serial
product_uuid
product_version
smbios_version
subsystem
sys_vendor
uevent

Y aquí habría un script práctico que cualquier usuario podría ejecutar, para mostrar la bondad:

#!/bin/bash

cd /sys/devices/virtual/dmi/id/
for f in *; do
        printf "$f "
        cat $f 2>/dev/null || echo "***_Unavailable_***"
done

Ningún nombre de archivo tiene espacios, por lo que esta información es fácilmente manipulada por utilidades como awk, ¡para tus propios fines nefastos!

Mike S
fuente
Genial, eso es genial con la mayoría de los basados ​​en Linux si no encuentras una herramienta, las cosas que necesitas (sistema operativo, información de hardware) están en algún lugar de /syso /proc. Gracias
Eduard Florinescu
2
¡Increíble! ¡Una solución que funciona para no root!
qwertzguy
1
Tenga en cuenta que esta información dmi solo puede ser aplicable a las PC basadas en Intel. Tengo un dispositivo de red impulsado por una computadora ARM basada en Linux, y ni dmicode ni la ruta en / sys están disponibles.
Mike S
12

En los sistemas Linux modernos, puede hacer cosas como esta fácilmente como cualquier usuario:

cat /sys/devices/virtual/dmi/id/sys_vendor

cat /sys/devices/virtual/dmi/id/product_name

Esto también funciona bien para CoreOS, que no incluye dmidecode.

Nota : Esto se ha mencionado en otras respuestas / comentarios, pero es de esperar que sea más visible aquí, ya que este es un método mucho más fácil que usarlo dmidecode.

spkane
fuente
6

Tratar:

sudo dmidecode -s baseboard-product-name
Stéphane Chazelas
fuente
4

Todos aquí hablan sobre el gran dmidecodecomando y el -tparámetro, pero con sudo lshw -shortustedes también obtienen fácilmente el nombre y modelo del producto:

$ sudo lshw -short
H/W path       Device     Class          Description
====================================================
                          system         UX303UB (ASUS-NotebookSKU)
/0                        bus            UX303UB

Otros excelentes comandos para obtener información de hardware:

  • lscpu # Mejor que / proc / cpuinfo
  • lsusb [-v]
  • lsblk[-a] # Mejor que df -h. Bloquear información del dispositivo.
  • sudo hdparm /dev/sda1
Pablo A
fuente
Aparte de lshw, ninguno de esos comandos responde a la pregunta que hace el OP. Son utilidades muy útiles, sí, pero no exactamente en el alcance de la pregunta ...
Shadur
@shadur, ¿por qué me bajaste el voto? Respondo la pregunta de la misma manera que cualquier otra respuesta, y luego solo ofrezco información adicional útil, lo que es un buen comando en cualquier gran publicación.
Pablo A
2

La herramienta de información del sistema inxi muestra la información de forma limpia y sin tener que hacer todas las comprobaciones de dmidecode / / sys manualmente. Consulte la página del manual para ver la lista completa de funciones.

Admite sistemas con y sin / sys, aunque con datos / sys, no necesita ser root para obtener la salida completa del hardware, con dmidecode que sí.

$inxi -M
Machine:   Device: desktop Mobo: ASRock model: A770DE+
           BIOS: American Megatrends v: P1.70 date: 09/07/2010

Como root, también puede forzar que los datos provengan de dmidecode:

#inxi -! 33 -Mxxx ## inxi 2.3.56 and older
#inxi --dmidecode -Mxxx ## inxi 2.9 and newer
Machine:   Device: desktop Mobo: ASRock model: A770DE+
           BIOS: American Megatrends v: P1.70 rv 8.14 date: 09/07/2010 rom size: 1024 kB

inxi está disponible en los repositorios de la mayoría de las distribuciones de GNU / Linux, o se puede instalar directamente simplemente tomando el script e instalándolo.

Muestra del modo de salida básico (-b)

$inxi -bxx
System:    Host: my-box Kernel: 4.6-6.1-liquorix-686-pae i686 (32 bit gcc: 5.4.1)
           Desktop: Xfce 4.12.3 (Gtk 2.24.30) dm: lightdm
           Distro: Debian GNU/Linux 7.0
Machine:   Device: desktop Mobo: ASRock model: A770DE+
           BIOS: American Megatrends v: P1.70 date: 09/07/2010
CPU:       Dual core AMD Athlon 64 X2 5000+ (-MCP-) speed/max: 1000/2600 MHz
Graphics:  Card: NVIDIA GT218 [GeForce 210] bus-ID: 02:00.0 chip-ID: 10de:0a65
           Display Server: X.Org 1.19.0 driver: nvidia
           Resolution: [email protected], [email protected]
           GLX Renderer: GeForce 210/PCIe/SSE2/3DNOW!
           GLX Version: 3.3.0 NVIDIA 340.101 Direct Rendering: Yes
Network:   Card: Intel 82574L Gigabit Network Connection
           driver: e1000e v: 3.2.6-k port: c800
           bus-ID: 01:00.0 chip-ID: 8086:10d3
Drives:    HDD Total Size: 1080.2GB (36.8% used)
Info:      Processes: 313 Uptime: 26 days Memory: 4457.2/8094.0MB
           Init: systemd v: 232 runlevel: 5 default: 3
           Gcc sys: 6.3.0 alt: 4.0/4.2/4.4/4.5/4.6/4.7/4.8/4.9/5
           Client: Shell (bash 4.4.51 running in xfce4-terminal) inxi: 2.3.8

Nuevo formato de salida en inxi 3.x

inxi -bxxxzy80
System:
  Host: yawn Kernel: 4.17.0-10.1-liquorix-amd64 x86_64 bits: 64 compiler: gcc 
  v: 7.3.0 Desktop: Xfce 4.12.4 tk: Gtk 2.24.31 info: xfce4-panel wm: xfwm4 
  dm: lightdm 1.18.3 Distro: Debian GNU/Linux buster/sid 
Machine:
  Type: Desktop System: Gigabyte product: X470 AORUS ULTRA GAMING v: N/A 
  serial: <filter> 
  Mobo: Gigabyte model: X470 AORUS ULTRA GAMING-CF v: x.x serial: <filter> 
  UEFI [Legacy]: American Megatrends v: F2 date: 03/14/2018 
CPU:
  6-Core: AMD Ryzen 5 2600 type: MT MCP arch: Zen speed: 2300 MHz 
  min/max: 1550/3400 MHz 
Graphics:
  Card-1: NVIDIA GT218 [GeForce 210] vendor: Gigabyte driver: nvidia 
  v: 340.107 bus ID: 09:00.0 chip ID: 10de:0a65 
  Display: x11 server: X.Org 1.20.0 driver: nvidia 
  resolution: 1280x1024~60Hz, 1280x1024~60Hz 
  OpenGL: renderer: GeForce 210/PCIe/SSE2 v: 3.3.0 NVIDIA 340.107 
  direct render: Yes 
Network:
  Card-1: Intel I211 Gigabit Network driver: igb v: 5.4.0-k port: f000 
  bus ID: 06:00 chip ID: 8086:1539 
  Card-2: Apple Ethernet Adapter [A1277] type: USB driver: asix bus ID: 1:13 
  chip ID: 05ac:1402 
Drives:
  Local Storage: total: 1.08 TiB used: 496.05 GiB (45.0%) 
Info:
  Processes: 339 Uptime: 3d 6h 22m Memory: 31.43 GiB used: 4.04 GiB (12.8%) 
  Init: systemd v: 239 runlevel: 5 Compilers: gcc: 8.1.0 alt: 5/6/7/8 
  Shell: bash v: 4.4.23 running in: xfce4-terminal inxi: 3.0.20
Lagarto
fuente
Se ve bien. Me pregunto si hay alguna forma de que esta herramienta devuelva los números de serie del sistema o de la placa. Entonces no necesita root para casi cualquier introspección del sistema como esta. (Supongo que la respuesta es "no").
Mike S
Antes de un cambio en el kernel de Linux, que crea el sistema de archivos / sys, puede obtener los números de serie para estas cosas sin ser root, pero después del cambio, que está totalmente fuera del control de inxi, debe ser root, y no hay forma de evitar eso. Obviamente, fue una decisión tonta y una regresión basada en una mala idea que alguien tenía, pero no hay nada que pueda hacer para resolver ese problema. sudo inxi -Mxxx devuelve series siempre. En algunos sistemas no se requiere sudo, depende de la versión del kernel, creo.
Lizardx
Tenga en cuenta que inxi 3.0 y posteriores no usan -! 33 más, usan --dmidecode
Lizardx
1

Puedes usar:

dmidecode -t 1

Lo que genera algo como:

System Information
    Manufacturer: Dell Inc.
    Product Name: PowerEdge R210 II
    Version: Not Specified
    Serial Number: 1234ABC
    UUID: ABABABAB-0101-2323-5A5A-ABCDEF123456
    Wake-up Type: Power Switch
    SKU Number: Not Specified
    Family: Not Specified
Peque
fuente
1
# dmidecode -t baseboard

si es respaldado por el fabricante, le brindará la información.

dmidecode es una herramienta para descargar el contenido de la tabla DMI de una computadora (algunos dicen SMBIOS) en un formato legible para humanos. Esta tabla contiene una descripción de los componentes de hardware del sistema, así como otros datos útiles, como los números de serie y la revisión del BIOS. Gracias a esta tabla, puede recuperar esta información sin tener que buscar el hardware real. Si bien este es un buen punto en términos de velocidad y seguridad del informe, esto también hace que la información presentada sea posiblemente poco confiable.

Necktwi
fuente
grepNecesita cotizaciones.
Joshua Detwiler
1

O esto

lshw -short | grep system
DimiDak
fuente