Como posso encontrar o modelo de hardware no Linux?


89

Eu usei um utilitário de informações do sistema para obter o número do modelo de um sistema e também da placa-mãe.

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

Existe uma maneira de obter o número do modelo, neste caso 2306CTO, no Linux?



2
Para maior clareza, parece que você está interessado em produtos de hardware, não especificamente na placa-mãe. Por exemplo, "ThinkPad X230" é um tipo de computador que não é placa-mãe.
Bratchley

1
Você também pode obter algumas informações sem pacotes extras executando o comando dmesg ou verificando / var / log / dmesg *.
Blake Russo

Respostas:


114

usando o dmidecode | grep -A3 '^System Information'comando Lá você encontrará todas as informações do BIOS e do hardware. Estes são exemplos em três máquinas diferentes (este é um trecho da saída 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

25
FWIW, provavelmente é melhor adquirir o hábito de filtrar tipos específicos de DMI em vez de usar grep. Para o modelo geral de hardware que seria dmidecode -t1. Dessa forma, você tem uma maneira simplista de extrair dados do dmidecode e só precisa se lembrar dos tipos comuns de DMI. O hábito se torna realmente útil ao examinar as instalações de RAM ( dmidecode -t17) quando o grep pode gerar uma saída realmente feia se você digitar os dados errados. Além disso, a saída -té mais completo
Bratchley

@ JoelDavis, eu não estava ciente dessas opções antes. Eu vou usá-los. Obrigado.
eppesuig 14/05

13
Nota: precisa de raiz. Se você deseja obter todas as informações para as quais você tem permissão para o usuário atual, use: cat /sys/devices/virtual/dmi/id/*(e ele permite que você obtenha o nome do modelo e a classificação usando um usuário normal)
qwertzguy

A tubulação da saída do dmidecode sem argumentos para grep é interessante, mas não é o meio mais eficiente de obter as informações. O dmidecode pode imprimir exatamente o que o OP está solicitando especificando a cadeia de palavras-chave 'system-product-name': sudo dmidecode -s system-product-name
cjac

Eu acho que vale a pena notar que os sistemas mais antigos não têm sinalizadores disponíveis dmidecode, nem mesmo uma página de manual. A resposta acima é a resposta mais portátil para Linux aqui, eu acho. Os sinalizadores -te -ssão úteis em sistemas mais recentes, com certeza.
precisa

32

Tente sudo dmidecode -t baseboardpara informações completas sobre os DMI t conteúdos capazes relevantes para o seu rodapé, em um formato legível. Apenas para o Nome do produto do sistema , você pode usar um (digite dmidecode -spara obter uma lista de palavras-chave de s trings):

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

Outras opções relevantes para informações da placa-mãe são

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

Tente sudo dmidecode -sobter uma lista completa das seqüências DMI do sistema disponíveis.


24

Para o registro, muitas dessas informações estão disponíveis em / sys / devices / virtual / dmi / id no Linuces moderno (ou seja, desde pelo menos 2011), e muito se - principalmente, sem incluir números de série - é legível para usuários regulares . Para responder à pergunta do pôster original, product_nameé o arquivo que contém o nome do modelo do 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

E aqui estaria um script prático que qualquer usuário poderia executar, para exibir a bondade:

#!/bin/bash

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

Nenhum nome de arquivo possui espaços; portanto, essas informações são facilmente manipuladas por utilitários como o awk, para seus próprios fins nefastos!


Ótimo, isso é ótimo com a maioria dos aplicativos baseados em Linux, se você não encontrar uma ferramenta, o material necessário (SO, informações de hardware) está em algum lugar /sysou /proc. Obrigado
Eduard Florinescu

2
Impressionante! Uma solução que funciona para não-root!
Qwertzguy

1
Observe que essas informações dmi podem ser aplicáveis ​​apenas a PCs baseados em Intel. Eu tenho um dispositivo de rede que é controlado por um computador ARM baseado em Linux e nem o dmicode nem o caminho em / sys estão disponíveis para ele.
Mike S

12

Nos sistemas Linux modernos, você pode fazer coisas facilmente como qualquer usuário:

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

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

Isso também funciona bem para o CoreOS, que não é fornecido com dmidecode.

Nota : Isso foi mencionado em outras respostas / comentários, mas espero que seja mais visível aqui, pois esse é um método muito mais fácil do que usar dmidecode.



4

Todo mundo aqui fala sobre o ótimo dmidecodecomando e o -tparâmetro, mas com sudo lshw -shortvocê também é fácil obter o nome e o modelo do produto:

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

Outros ótimos comandos para obter informações de hardware:

  • lscpu # Melhor que / proc / cpuinfo
  • lsusb [-v]
  • lsblk[-a] # Melhor que df -h. Bloquear informações do dispositivo.
  • sudo hdparm /dev/sda1

Além do lshw, nenhum desses comandos responde à pergunta que o OP faz. São utilitários de grande utilidade, sim, mas não exatamente no escopo da questão ...
Shadur

@shadur por que você me rebaixou? Eu respondo a pergunta de uma maneira que qualquer outra resposta, e então apenas ofereço informações úteis adicionais, o que é um comando bonito em qualquer ótimo post.
Pablo A

2

A ferramenta de informações do sistema inxi mostra as informações de forma limpa e sem a necessidade de fazer todas as verificações do dmidecode / / sys manualmente. Consulte a página do manual para obter a lista completa de recursos.

Ele suporta sistemas com e sem / sys, embora com dados / sys, você não precise ser root para obter a saída completa do hardware, com o dmidecode.

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

Como raiz, você também pode forçar os dados a serem provenientes do 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

O inxi está disponível nos repositórios da maioria das distribuições GNU / Linux ou é instalável diretamente, basta pegar o script e instalá-lo.

Amostra do modo de saída 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: 1280x1024@60.02hz, 1280x1024@60.02hz
           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

Novo formato de saída no 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

Parece legal. Gostaria de saber se existe uma maneira de que essa ferramenta retorne números de série do sistema ou da placa? Então você não precisa de raiz para praticamente qualquer introspecção do sistema como esta. (Acho que a resposta é "não").
Mike S

Antes de uma alteração no kernel do linux, que cria o sistema de arquivos / sys, você poderia obter os números de série para essas coisas sem ser root, mas após a alteração, que está totalmente fora do controle da inxi, você precisa ser root e não há como contornar isso. Obviamente, essa foi uma decisão boba e uma regressão baseada em alguma má idéia que alguém teve, mas não há nada que o inxi possa fazer para resolver esse problema. sudo inxi -Mxxx retorna sempre seriados. Em alguns sistemas, nenhum sudo é necessário, depende da versão do kernel, eu acho.
Lizardx

Observe que o inxi 3.0 e mais recentes não usam -! 33 mais, eles usam --dmidecode
Lizardx

1

Você pode usar:

dmidecode -t 1

Que gera 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

1
# dmidecode -t baseboard

se suportado pelo fabricante, fornecerá as informações.

O dmidecode é uma ferramenta para descarregar o conteúdo da tabela DMI de um computador (alguns dizem SMBIOS) em um formato legível por humanos. Esta tabela contém uma descrição dos componentes de hardware do sistema, além de outras informações úteis, como números de série e revisão do BIOS. Graças a esta tabela, você pode recuperar essas informações sem precisar pesquisar o hardware real. Embora esse seja um bom ponto em termos de velocidade e segurança do relatório, isso também torna as informações apresentadas possivelmente não confiáveis.


grepprecisa de aspas.
precisa

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.