Jak mogę znaleźć model sprzętu w systemie Linux?

89

Użyłem narzędzia do informacji o systemie, aby wziąć numer modelu systemu, a także płyty głównej.

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

Czy istnieje sposób na uzyskanie numeru modelu, w tym przypadku 2306CTO, w systemie Linux?

Eduard Florinescu
źródło
2
Spójrz na to
Achu
2
Dla jasności wydaje się, że interesuje Cię sprzęt, a nie płyta główna. Na przykład „ThinkPad X230” to rodzaj komputera, a nie płyta główna.
Bratchley,
1
Możesz również uzyskać informacje bez dodatkowych pakietów, uruchamiając polecenie dmesg lub sprawdzając / var / log / dmesg *.
Blake Russo

Odpowiedzi:

114

za pomocą dmidecode | grep -A3 '^System Information'polecenia Znajdziesz tam wszystkie informacje z BIOS-u i sprzętu. Oto przykłady na trzech różnych komputerach (jest to fragment pełnego wyniku):

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
źródło
25
FWIW, prawdopodobnie lepiej jest przyzwyczaić się do filtrowania określonych typów DMI niż do używania grep. To byłby ogólny model sprzętu dmidecode -t1. W ten sposób masz uproszczony sposób wyciągania danych z kodu dmidecode i po prostu musisz pamiętać typowe typy DMI. Przyzwyczajenie staje się naprawdę przydatne podczas sprawdzania instalacji RAM ( dmidecode -t17), gdy grep może mieć naprawdę brzydkie wyjście, jeśli odrzucisz niewłaściwe dane. Co więcej, produkcja -tjest bardziej kompletna
Bratchley
@JelDavis, wcześniej nie znałem tych opcji. Użyję ich. Dzięki.
eppesuig
13
Uwaga: wymaga rootowania. Jeśli chcesz uzyskać wszystkie informacje, do których masz uprawnienia w ramach bieżącego użytkownika, użyj: cat /sys/devices/virtual/dmi/id/*(i pozwala uzyskać nazwę modelu i sortować przy użyciu zwykłego użytkownika)
qwertzguy
Pipingowanie wyjścia dmidecode bez argumentów do grep jest interesujące, ale nie jest najbardziej wydajnym sposobem uzyskania informacji. dmidecode może wydrukować dokładnie to, o co prosi OP, określając ciąg słowa kluczowego „system-product-name”: sudo dmidecode -s nazwa-produktu-
systemowego
Myślę, że warto zauważyć, że starsze systemy nie mają dostępnych flag dmidecode, ani nawet strony podręcznika. Myślę, że powyższa odpowiedź jest najbardziej przenośną odpowiedzią na Linuksa. -tI -sflagi są przydatne w nowszych systemach pewien.
Joshua Detwiler
32

Spróbuj sudo dmidecode -t baseboarddo pełnej informacji na temat DMI t zdolnych treści odpowiednich do płyty bazowej, w postaci czytelnej dla człowieka. W przypadku samej systemowej nazwy produktu możesz użyć jednego z nich (wpisz, dmidecode -saby uzyskać listę słów kluczowych s trings):

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

Inne istotne opcje dotyczące informacji o płycie głównej to

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

Wypróbuj sudo dmidecode -spełną listę dostępnych ciągów DMI systemu.

eToThePiIPower
źródło
24

Dla przypomnienia, wiele z tych informacji jest dostępnych w / sys / devices / virtual / dmi / id na nowoczesnych Linuces (tj. Od co najmniej 2011 r.), A wiele, jeśli w szczególności, nie uwzględniając numerów seryjnych, jest czytelnych dla zwykłych użytkowników . Aby odpowiedzieć na pytanie pierwotnego plakatu, product_nameznajduje się plik zawierający nazwę modelu systemu.

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

Oto przydatny skrypt, który każdy użytkownik może uruchomić, aby wyświetlić dobroć:

#!/bin/bash

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

W nazwach plików nie ma spacji, więc te informacje są łatwo przetwarzane przez narzędzia takie jak awk, do własnych niecnych celów!

Mike S.
źródło
Świetnie, to świetnie w przypadku większości opartych na systemie Linux, jeśli nie znajdziesz narzędzia, którego potrzebujesz (OS, informacje o sprzęcie) gdzieś w /syslub /proc. Dzięki
Eduard Florinescu,
2
Niesamowite! Rozwiązanie, które działa dla użytkownika innego niż root!
qwertzguy
1
Pamiętaj, że te informacje o dmi mogą dotyczyć tylko komputerów z procesorami Intel. Mam urządzenie sieciowe, które jest sterowane przez komputer ARM oparty na Linuksie, i nie jest dla niego dostępny ani dmicode, ani ścieżka w / sys.
Mike S
12

W nowoczesnych systemach Linux możesz z łatwością robić takie rzeczy jak każdy użytkownik:

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

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

Działa to również dobrze dla CoreOS, który nie jest dostarczany z dmidecode.

Uwaga : Zostało to wspomniane w innych odpowiedziach / komentarzach, ale mam nadzieję, że jest tutaj bardziej widoczne, ponieważ jest to znacznie łatwiejsza metoda niż używanie dmidecode.

spkane
źródło
6

Próbować:

sudo dmidecode -s baseboard-product-name
Stéphane Chazelas
źródło
4

Wszyscy tutaj mówią o doskonałej dmidecodekomendzie i -tparametrze, ale z sudo lshw -shorttobą również łatwo uzyskać nazwę i model produktu:

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

Inne świetne polecenia do uzyskiwania informacji o sprzęcie:

  • lscpu # Lepsze niż / proc / cpuinfo
  • lsusb [-v]
  • lsblk[-a] # Lepsze niż df -h. Zablokuj informacje o urządzeniu.
  • sudo hdparm /dev/sda1
Pablo A.
źródło
Oprócz lshw, żadne z tych poleceń nie odpowiada na pytanie zadane przez OP. Są to bardzo przydatne narzędzia, tak, ale nie dokładnie w zakresie pytania ...
Shadur
@shadur, dlaczego mnie głosujesz? Odpowiadam na pytanie w taki sam sposób, jak każda inna odpowiedź, a następnie po prostu oferuję dodatkowe przydatne informacje, co jest ładnym poleceniem w każdym świetnym poście.
Pablo A
2

Narzędzie informacji o systemie inxi pokazuje informacje w przejrzysty sposób i bez konieczności ręcznego sprawdzania wszystkich kodów dmidecode / / sys. Zobacz stronę podręcznika, aby zobaczyć pełną listę funkcji.

Obsługuje systemy z / bez / sys, chociaż z danymi / sys nie trzeba być rootem, aby uzyskać pełne wyjście sprzętowe, z kodem dmidecode.

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

Możesz, jako root, również wymusić, aby dane pochodziły z 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 jest dostępny w repozytoriach większości dystrybucji GNU / Linux lub można go zainstalować bezpośrednio, chwytając skrypt i instalując go.

Przykład podstawowego trybu wyjściowego (-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

Nowy format wyjściowy w 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
źródło
Wygląda dobrze. Zastanawiam się, czy istnieje sposób, aby to narzędzie zwróciło numery seryjne systemu lub płyty? Zatem nie potrzebujesz roota do jakiejkolwiek introspekcji systemu takiej jak ta. (Zgaduję, że odpowiedź brzmi „nie”).
Mike S
Przed zmianą jądra Linuksa, która tworzy system plików / sys, można uzyskać numery seryjne tych rzeczy bez rootowania, ale po zmianie, która jest całkowicie poza kontrolą INXI, musisz być rootem, i nie ma sposobu na obejście tego. Oczywiście była to głupia decyzja i regresja oparta na złym pomyśle, jaki ktoś miał, ale nic nie może zrobić, aby rozwiązać ten problem. sudo inxi -Mxxx zawsze zwraca seriale. W niektórych systemach sudo nie jest wymagane, zależy od wersji jądra.
Lizardx,
Pamiętaj, że w wersji 3.0 i nowszych nie używaj -! 33 już używają --dmidecode
Lizardx
1

Możesz użyć:

dmidecode -t 1

Które generuje coś takiego:

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
źródło
1
# dmidecode -t baseboard

jeśli jest obsługiwany przez producenta, poda informacje.

dmidecode to narzędzie do usuwania zawartości tabeli DMI komputera (niektórzy twierdzą, że SMBIOS) w formacie czytelnym dla człowieka. Ta tabela zawiera opis komponentów sprzętowych systemu, a także inne przydatne informacje, takie jak numery seryjne i wersja systemu BIOS. Dzięki tej tabeli możesz pobrać te informacje bez konieczności sprawdzania rzeczywistego sprzętu. Chociaż jest to dobra kwestia pod względem szybkości i bezpieczeństwa raportu, powoduje to również, że przedstawione informacje mogą być niewiarygodne.

Krawat
źródło
greppotrzebuje cytatów.
Joshua Detwiler
1

Albo to

lshw -short | grep system
DimiDak
źródło