Як знайти апаратну модель в Linux?


89

Я використав системну інформаційну утиліту, щоб взяти номер моделі системи, а також материнської плати.

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

Чи є спосіб отримати номер моделі, в даному випадку 2306CTO, в Linux?



2
Для наочності здається, що вас цікавить апаратний продукт, а не конкретна материнська плата. Наприклад, "ThinkPad X230" - це тип комп'ютера, а не материнська плата.
Братчлі

1
Ви також можете отримати деяку інформацію без додаткових пакетів, виконавши команду dmesg або перевіривши / var / log / dmesg *.
Блейк Руссо,

Відповіді:


114

за допомогою dmidecode | grep -A3 '^System Information'команди. Там ви знайдете всю інформацію з BIOS та обладнання. Це приклади на трьох різних машинах (це уривок повного виводу):

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, мабуть, краще скористатися звичкою фільтрувати для конкретних типів DMI, а не використовувати grep. Для загальної апаратної моделі, яка б була dmidecode -t1. Таким чином, у вас є спрощений спосіб витягнути дані з dmidecode і просто потрібно запам’ятати поширені типи DMI. Звичка стає дуже корисною при вивченні встановлення оперативної пам’яті ( dmidecode -t17), коли grep може зробити справді некрасивий вихід, якщо відключити неправильні дані. Плюс, результат -tбільш повний
Bratchley

@JoelDavis, я раніше не знав про ці варіанти. Я буду їх використовувати. Дякую.
eppesuig

13
Примітка: потребує корінь. Якщо ви хочете, щоб уся інформація, на яку ви маєте дозволи для поточного користувача, використовуйте: cat /sys/devices/virtual/dmi/id/*(і це дозволяє вам отримати ім’я моделі та сортування за допомогою звичайного користувача)
qwertzguy

Передача виводу dmidecode без аргументів grep є цікавим, але не найефективнішим засобом отримання інформації. dmidecode може надрукувати саме те, що вимагає операційна програма, вказавши рядок ключового слова 'system-product-name': sudo dmidecode -s system-name-product-name
cjac

Я думаю, що варто відзначити, що в старих системах немає прапорів dmidecode, ані навіть чоловічої сторінки. Відповідь, наведена вище, - це, на мою думку, найбільш портативна Linux відповідь. -tІ -sпрапори можуть бути використані в нових системах напевно.
Джошуа Детвейлер

32

Спробуйте sudo dmidecode -t baseboardдля отримання повної інформації про DMI т , здатному змісті відповідного вашого плінтуса, в читається вигляді. Для тільки системи Назва продукту , ви можете використовувати або (тип , dmidecode -sщоб отримати список и trings ключових слів):

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

Інші відповідні варіанти інформації про материнську плату є

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

Спробуйте sudo dmidecode -sотримати повний перелік доступних системних рядків DMI.


24

Для запису, значна частина цієї інформації доступна в / sys / devices / virtual / dmi / id на сучасних Linuces (тобто, щонайменше, з 2011 року), і багато, якщо вона, зокрема, не включає серійні номери, читається звичайними користувачами . Щоб відповісти на питання оригінального плаката, product_nameце файл, який містить назву моделі системи.

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

І ось тут буде зручний сценарій, який можна запустити будь-якому користувачеві, щоб відобразити доброту:

#!/bin/bash

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

Жодні імена файлів не мають в них пробілів, тому цією інформацією легко маніпулювати утиліти, такі як awk, для ваших власних нечесних цілей!


Чудово, це чудово для більшості з Linux, якщо ви не знайдете інструмент, потрібні вам речі (ОС, інформація про обладнання) десь знаходяться в /sysабо /proc. Спасибі
Едуарду Флоринеску

2
Дивовижно! Рішення, яке працює для не-root!
qwertzguy

1
Зауважте, що ця інформація про dmi може застосовуватися лише до ПК на базі Intel. У мене є мережевий пристрій, керований комп'ютером ARM на базі Linux, і йому не доступні ні дмікод, ні шлях в / sys.
Майк S

12

У сучасних системах Linux ви можете легко робити такі речі, як будь-який користувач:

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

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

Це також добре працює для CoreOS, з яким не постачається dmidecode.

Примітка . Про це згадувалося в інших відповідях / коментарях, але, сподіваємось, тут помітніше, оскільки це набагато простіший метод, ніж використання dmidecode.



4

Усі тут говорять про чудову dmidecodeкоманду та -tпараметр, але з sudo lshw -shortвами також легко отримуєте назву продукту та модель:

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

Інші чудові команди для отримання інформації про обладнання:

  • lscpu # Краще, ніж / proc / cpuinfo
  • lsusb [-v]
  • lsblk[-a] # Краще, ніж df -h. Блокувати інформацію про пристрій.
  • sudo hdparm /dev/sda1

Крім lshw, жодна з цих команд не відповідає на питання, яке задає ОП. Вони є дуже корисними утилітами, так, але не точно в межах питання ...
Шадур

@shadur, чому ти мене порушуєш? Я відповідаю на питання так, як це робить будь-яка інша відповідь, а потім просто пропоную додаткову корисну інформацію, що є гарною командою на будь-якому чудовому пості.
Пабло А

2

Інструмент системної інформації inxi показує інформацію чисто і без необхідності робити всі перевірки dmidecode / / sys вручну. Повний список функцій див. На сторінці чоловіка .

Він підтримує системи з і без / sys, хоча з / sys даними, вам не потрібно мати root, щоб отримати повний вихід обладнання, з dmidecode, який ви робите.

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

Ви можете, як root, також змусити дані надходити з 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 доступний у репозиціях більшості дистрибутивів GNU / Linux, або встановлюється безпосередньо, просто захопивши сценарій та встановивши його.

Зразок основного вихідного режиму (-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

Новий вихідний формат в 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

Виглядає добре. Мені цікаво, чи існує спосіб, щоб цей інструмент повернув серійні номери системи чи плати? Тоді вам не потрібен корінь для майже будь-якої самоаналізу системи, як це. (Я здогадуюсь, відповідь - «ні»).
Майк S

Перед зміною ядра Linux, яке створює файлову систему / sys, ви могли отримати серійні номери цих речей без кореня, але після зміни, яка повністю перебуває під контролем inxi, ви повинні мати root, і немає способу обійти це. Очевидно, це було дурним рішенням і регресом, заснованим на поганій ідеї, яку хтось мав, але нічого не може зробити, щоб вирішити цю проблему. sudo inxi -Mxxx завжди повертає серіали. У деяких системах судо не потрібно, залежить від версії ядра, на яку я думаю.
Лізардкс

Зауважте, що inxi 3.0 та новіші не використовуються -! 33 більше, вони використовують --dmidecode
Lizardx

1

Ви можете використовувати:

dmidecode -t 1

Що виводить щось на кшталт:

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

якщо він підтримується виробником, дасть вам інформацію.

dmidecode - це інструмент для завантаження вмісту таблиць DMI комп'ютера (деякі кажуть, SMBIOS) у читаному для людини форматі. Ця таблиця містить опис апаратних компонентів системи, а також іншу корисну інформацію, таку як серійні номери та перегляд BIOS. Завдяки цій таблиці ви можете отримати цю інформацію без необхідності перевірити фактичне обладнання. Хоча це є сприятливим моментом з точки зору швидкості та безпеки звіту, це також робить подану інформацію, можливо, недостовірною.


grepпотребує цитат.
Джошуа Детвейлер

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.