Как я могу найти аппаратную модель в 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
eppesuig
источник
25
FWIW, вероятно, лучше использовать фильтрацию для определенных типов DMI, чем использовать grep. Для общей аппаратной модели это было бы dmidecode -t1. Таким образом, у вас есть упрощенный способ извлечения данных из dmidecode, и вам просто нужно помнить общие типы DMI. Привычка становится действительно полезной при проверке оперативной памяти installs ( dmidecode -t17), когда grep может сделать действительно ужасный вывод, если вы отключите неправильные данные. Плюс, выход -tболее полон
Братчли
@JoelDavis, я не знал об этих вариантах раньше. Я буду использовать их. Благодарю.
eppesuig
13
Примечание: нужен рут. Если вам нужна вся информация, на которую у вас есть права доступа для текущего пользователя, используйте: cat /sys/devices/virtual/dmi/id/*(и она позволяет вам получить название модели и сортировку с использованием обычного пользователя)
qwertzguy
Передача вывода dmidecode без аргументов grep является интересным, но не самым эффективным способом получения информации. dmidecode может напечатать именно то, что запрашивает OP, указав строку ключевого слова 'system-product-name': sudo dmidecode -s system-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.

eToThePiIPower
источник
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, и для него не доступен ни dmicode, ни путь в / sys.
Майк С
12

В современных системах Linux вы можете легко делать такие вещи, как любой пользователь:

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

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

Это также хорошо работает для CoreOS, которая не поставляется с dmidecode.

Примечание : Это было упомянуто в других ответов / комментариев, но мы надеемся , виднее здесь, так как это намного проще , чем метод использования dmidecode.

spkane
источник
6

Пытаться:

sudo dmidecode -s baseboard-product-name
Стефан Шазелас
источник
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, ни одна из этих команд не отвечает на вопрос, который задает OP. Это очень полезные утилиты, да, но не совсем в рамках вопроса ...
Шадур
@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
Lizardx
источник
Выглядит хорошо. Мне интересно, есть ли способ, чтобы этот инструмент возвращал серийные номера системы или платы? Тогда вам не нужен root для любого системного самоанализа, подобного этому. (Я предполагаю, что ответ "нет").
Майк С
До изменения в ядре linux, которое создает файловую систему / sys, вы можете получить серийные номера для этих вещей, не будучи root, но после изменения, которое полностью находится вне контроля inxi, вам нужно быть пользователем root, и нет способа обойти это. Очевидно, что это было глупое решение и регресс, основанный на какой-то плохой идее, которую кто-то имел, но нет ничего, что inxi может сделать, чтобы решить эту проблему. sudo inxi -Mxxx всегда возвращает сериалы. В некоторых системах sudo не требуется, зависит от версии ядра, которую я считаю.
Lizardx
Обратите внимание, что 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
Peque
источник
1
# dmidecode -t baseboard

если поддерживается производителем, предоставит вам информацию.

dmidecode - это инструмент для выгрузки содержимого таблицы DMI компьютера (некоторые говорят, SMBIOS) в удобочитаемом формате. Эта таблица содержит описание аппаратных компонентов системы, а также другую полезную информацию, такую ​​как серийные номера и версия BIOS. Благодаря этой таблице вы можете получить эту информацию, не проверяя фактическое оборудование. Хотя это хороший момент с точки зрения скорости и безопасности отчетов, это также делает представленную информацию ненадежной.

Necktwi
источник
grepнужны цитаты.
Джошуа Детвилер