Come posso trovare il modello hardware in Linux?


89

Ho usato un'utilità di informazioni di sistema per prendere il numero di modello di un sistema e anche della scheda madre.

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

C'è un modo per ottenere il numero di modello, in questo caso 2306CTO, in Linux?



2
Per chiarezza sembra che tu sia interessato al prodotto hardware, non specificamente alla scheda madre. Ad esempio, "ThinkPad X230" è un tipo di computer non una scheda madre.
Bratchley

1
Puoi anche ottenere alcune informazioni senza pacchetti extra eseguendo il comando dmesg o selezionando / var / log / dmesg *.
Blake Russo,

Risposte:


114

usando il dmidecode | grep -A3 '^System Information'comando Lì troverai tutte le informazioni dal BIOS e dall'hardware. Questi sono esempi su tre macchine diverse (questo è un estratto dell'output completo):

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, probabilmente è meglio prendere l'abitudine di filtrare per particolari tipi di DMI piuttosto che usarli grep. Per il modello hardware complessivo sarebbe dmidecode -t1. In questo modo hai un modo semplicistico di estrarre i dati da dmidecode e devi solo ricordare i tipi di DMI più comuni. L'abitudine diventa davvero utile quando si esaminano installazioni RAM ( dmidecode -t17) quando grep può produrre output davvero brutti se si cancellano i dati errati. Inoltre, l'output di -tè più completo
Bratchley

@JoelDavis, non ero a conoscenza di quelle opzioni prima. Li userò. Grazie.
eppesuig

13
Nota: necessita di root. Se desideri tutte le informazioni per le quali disponi delle autorizzazioni per l'utente corrente, utilizza: cat /sys/devices/virtual/dmi/id/*(e ti consente di ottenere il nome del modello e l'ordinamento utilizzando un utente normale)
qwertzguy

Pipare l'output di dmidecode senza argomenti su grep è interessante, ma non è il mezzo più efficiente per ottenere le informazioni. dmidecode può stampare esattamente ciò che l'OP sta chiedendo specificando la stringa della parola chiave "nome-prodotto-sistema": sudo dmidecode -s nome-prodotto-sistema
cjac

Penso che valga la pena notare che i sistemi più vecchi non hanno flag disponibili su dmidecode, né nemmeno una pagina man. La risposta sopra è la risposta più portatile per Linux qui, penso. I flag -te -ssono utili su sistemi più recenti di sicuro.
Joshua Detwiler,

32

Provare sudo dmidecode -t baseboardper informazioni complete sulle DMI t contenuti capaci rilevanti per il battiscopa, in una forma leggibile. Solo per il nome del prodotto di sistema , è possibile utilizzare uno dei due (digitare dmidecode -sper ottenere un elenco di parole chiave di s trings):

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

Altre opzioni rilevanti per le informazioni sulla scheda madre sono

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

Prova sudo dmidecode -sun elenco completo di stringhe DMI di sistema disponibili.


24

Per la cronaca, gran parte di queste informazioni sono disponibili in / sys / devices / virtual / dmi / id sui moderni Linuces (vale a dire, almeno dal 2011), e molto se, in particolare, esclusi i numeri di serie, è leggibile dagli utenti regolari . Per rispondere alla domanda del poster originale, product_nameè il file che contiene il nome del modello 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

E qui ci sarebbe uno script a portata di mano che qualsiasi utente potrebbe eseguire, per mostrare la bontà:

#!/bin/bash

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

Nessun nome di file contiene spazi, quindi queste informazioni sono facilmente manipolabili da utility come awk, per i tuoi scopi malvagi!


Fantastico, è fantastico con la maggior parte di Linux se non trovi uno strumento le cose di cui hai bisogno (sistema operativo, informazioni sull'hardware) sono da qualche parte in /syso /proc. Grazie
Eduard Florinescu il

2
Eccezionale! Una soluzione che funziona per non root!
qwertzguy,

1
Si noti che queste informazioni dmi potrebbero essere applicabili solo ai PC basati su Intel. Ho un dispositivo di rete che è guidato da un computer ARM basato su Linux e non è disponibile né dmicode né il percorso in / sys.
Mike S,

12

Sui moderni sistemi Linux, puoi facilmente fare cose come questa come qualsiasi utente:

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

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

Questo funziona bene anche con CoreOS, che non viene fornito con dmidecode.

Nota : questo è stato menzionato in altre risposte / commenti, ma si spera sia più visibile qui, in quanto si tratta di un metodo molto più semplice rispetto all'utilizzo dmidecode.



4

Tutti qui parlano del grande dmidecodecomando e del -tparametro, ma con sudo lshw -shortte ottieni anche facilmente il nome e il modello del prodotto:

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

Altri ottimi comandi per ottenere informazioni sull'hardware:

  • lscpu # Meglio di / proc / cpuinfo
  • lsusb [-V]
  • lsblk[-a] # Meglio di df -h. Blocca le informazioni sul dispositivo.
  • sudo hdparm /dev/sda1

A parte lshw, nessuno di questi comandi risponde alla domanda posta dall'OP. Sono utility molto utili, sì, ma non esattamente nell'ambito della domanda ...
Shadur,

@shadur perché mi hai votato? Rispondo alla domanda in un modo qualsiasi altra risposta, e poi offro solo informazioni extra utili, che cosa è piuttosto utile su qualsiasi grande post.
Pablo A

2

Lo strumento di informazioni di sistema inxi mostra le informazioni in modo pulito e senza dover eseguire manualmente tutti i controlli di dmidecode / / sys. Vedi la pagina man per l'elenco completo delle funzionalità.

Supporta sistemi con e senza / sys, sebbene con i dati / sys, non è necessario essere root per ottenere l'output hardware completo, con dmidecode.

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

Puoi anche forzare i dati a provenire da dmidecode come root:

#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 è disponibile nei repository della maggior parte delle distribuzioni GNU / Linux, oppure è installabile direttamente semplicemente prendendo lo script e installandolo.

Esempio di modalità di output di base (-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

Nuovo formato di output 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

Sembra bello. Mi chiedo se c'è un modo in cui questo strumento restituirà i numeri di serie del sistema o della scheda? Quindi non hai bisogno di root per qualsiasi introspezione di sistema come questa. (Immagino che la risposta sia "no").
Mike S,

Prima di un cambiamento nel kernel di Linux, che crea il file system / sys, potresti ottenere i numeri seriali per queste cose senza essere root, ma dopo il cambiamento, che è totalmente al di fuori del controllo di inxi, devi essere root, e non c'è modo di aggirare questo. Ovviamente quella è stata una decisione sciocca e una regressione basata su una cattiva idea che qualcuno aveva, ma non c'è niente che inxi possa fare per risolvere quel problema. sudo inxi -Mxxx restituisce sempre i periodici. Su alcuni sistemi non è richiesto alcun sudo, dipende dalla versione del kernel che penso.
Lizardx,

Si noti che inxi 3.0 e successivi non usano -! 33 più, usano --dmidecode
Lizardx il

1

Puoi usare:

dmidecode -t 1

Che produce qualcosa di simile:

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 supportato dal produttore, ti fornirà le informazioni.

dmidecode è uno strumento per scaricare i contenuti della tabella DMI di un computer (alcuni dicono SMBIOS) in un formato leggibile dall'uomo. Questa tabella contiene una descrizione dei componenti hardware del sistema, nonché altre informazioni utili come numeri di serie e revisione del BIOS. Grazie a questa tabella, è possibile recuperare queste informazioni senza dover cercare l'hardware effettivo. Sebbene questo sia un buon punto in termini di velocità e sicurezza dei report, ciò rende anche le informazioni presentate probabilmente inaffidabili.


grepnecessita di preventivi.
Joshua Detwiler,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.