Làm thế nào tôi có thể tìm thấy mô hình phần cứng trong Linux?


89

Tôi đã sử dụng một tiện ích thông tin hệ thống để lấy số kiểu của một hệ thống, và cả bo mạch chủ.

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

Có cách nào để lấy số mô hình, trong trường hợp này 2306CTO, trong Linux không?



2
Để rõ ràng, có vẻ như bạn quan tâm đến sản phẩm phần cứng, không phải là bo mạch chủ. Ví dụ: "ThinkPad X230" là một loại máy tính không phải bo mạch chủ.
Bratchley

1
Bạn cũng có thể nhận được một số thông tin mà không cần các gói bổ sung bằng cách chạy lệnh dmesg hoặc kiểm tra / var / log / dmesg *.
Blake Russo

Câu trả lời:


114

sử dụng dmidecode | grep -A3 '^System Information'lệnh. Ở đó bạn sẽ tìm thấy tất cả thông tin từ BIOS và phần cứng. Đây là những ví dụ trên ba máy khác nhau (đây là đoạn trích của đầu ra hoàn chỉnh):

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, có lẽ tốt hơn để có thói quen lọc các loại DMI cụ thể hơn là sử dụng grep. Đối với mô hình phần cứng tổng thể đó sẽ là dmidecode -t1. Bằng cách đó, bạn có một cách đơn giản để kéo dữ liệu ra khỏi dmidecode và chỉ cần nhớ các loại DMI phổ biến. Thói quen trở nên thực sự hữu ích khi kiểm tra cài đặt RAM ( dmidecode -t17) khi grep có thể tạo ra một số đầu ra thực sự xấu xí nếu bạn khóa dữ liệu sai. Thêm vào đó, đầu ra -thoàn thiện hơn
Bratchley

@JoelDavis, tôi không biết những lựa chọn đó trước đây. Tôi sẽ sử dụng chúng. Cảm ơn.
eppesuig

13
Lưu ý: cần root. Nếu bạn muốn tất cả thông tin bạn có quyền cho người dùng hiện tại, hãy sử dụng: cat /sys/devices/virtual/dmi/id/*(và nó cho phép bạn lấy tên mô hình và loại bằng cách sử dụng người dùng bình thường)
qwertzguy

Đường ống đầu ra của dmidecode không có đối số đến grep là điều thú vị, nhưng không phải là phương tiện hiệu quả nhất để lấy thông tin. dmidecode có thể in chính xác những gì OP yêu cầu bằng cách chỉ định chuỗi từ khóa 'tên sản phẩm hệ thống': sudo dmidecode -s tên hệ thống sản phẩm
cjac

Tôi nghĩ rằng đáng chú ý là các hệ thống cũ hơn không có cờ dmidecode, thậm chí không có trang nam. Câu trả lời ở trên là câu trả lời di động nhiều nhất ở đây, tôi nghĩ vậy. Các cờ -t-shữu ích trên các hệ thống mới hơn chắc chắn.
Joshua Detwiler

32

Hãy thử sudo dmidecode -t baseboardcho đầy đủ thông tin về DMI t nội dung có thể liên quan đến ván chân tường của bạn, trong một hình thức có thể đọc được của con người. Đối với chỉ Hệ thống Tên sản phẩm , bạn có thể sử dụng một trong hai (loại dmidecode -sđể có được một danh sách các s trings từ khóa):

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

Các tùy chọn liên quan khác cho thông tin bo mạch chủ là

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

Hãy thử sudo dmidecode -sdanh sách đầy đủ các chuỗi DMI hệ thống có sẵn.


24

Đối với bản ghi, phần lớn thông tin này có sẵn dưới / sys / thiết bị / ảo / dmi / id trên Linuces hiện đại (nghĩa là, ít nhất là từ năm 2011), và nhiều nhất là - không bao gồm số sê-ri - người dùng thông thường có thể đọc được . Để trả lời câu hỏi của người gửi ban đầu, product_namelà tệp chứa tên kiểu máy của hệ thống.

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

Và đây sẽ là một kịch bản tiện dụng mà bất kỳ người dùng nào cũng có thể chạy, để hiển thị sự tốt đẹp:

#!/bin/bash

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

Không có tên tệp nào có khoảng trắng trong chúng, vì vậy thông tin này dễ dàng bị thao túng bởi các tiện ích như awk, cho mục đích bất chính của bạn!


Tuyệt vời, điều đó thật tuyệt vời với hầu hết dựa trên linux nếu bạn không tìm thấy một công cụ mà thứ bạn cần (HĐH, thông tin phần cứng) nằm ở đâu đó trong /syshoặc /proc. Cảm ơn
Eduard Florinescu

2
Tuyệt vời! Một giải pháp hoạt động cho không root!
qwertzguy

1
Lưu ý rằng thông tin dmi này chỉ có thể được áp dụng cho các PC dựa trên Intel. Tôi có một thiết bị mạng được điều khiển bởi máy tính ARM dựa trên Linux và không có dmicode hoặc đường dẫn trong / sys có sẵn cho nó.
Mike S

12

Trên các hệ thống Linux hiện đại, bạn có thể dễ dàng thực hiện những việc như thế này với bất kỳ người dùng nào:

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

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

Điều này cũng hoạt động tốt cho CoreOS, không đi kèm dmidecode.

Lưu ý : Điều này đã được đề cập trong các câu trả lời / nhận xét khác, nhưng hy vọng có thể thấy rõ hơn ở đây, vì đây là một phương pháp dễ dàng hơn nhiều so với sử dụng dmidecode.



4

Mọi người ở đây nói về dmidecodelệnh tuyệt vời và -ttham số, nhưng với sudo lshw -shortbạn cũng dễ dàng nhận được tên và kiểu sản phẩm:

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

Các lệnh tuyệt vời khác để nhận thông tin phần cứng:

  • lscpu # Tốt hơn / Proc / cpuinfo
  • lsusb [-v]
  • lsblk[-a] # Tốt hơn df -h. Chặn thông tin thiết bị.
  • sudo hdparm /dev/sda1

Ngoài lshw, không có lệnh nào trong số đó trả lời câu hỏi mà OP yêu cầu. Chúng là những tiện ích rất hữu ích, vâng, nhưng không chính xác trong phạm vi câu hỏi ...
Shadur

@shadur tại sao bạn downvote tôi? Tôi trả lời câu hỏi theo cách mà bất kỳ câu trả lời nào khác làm, và sau đó chỉ cung cấp thêm thông tin hữu ích, đó là lệnh tuyệt vời trên bất kỳ bài đăng tuyệt vời nào.
Pablo A

2

Công cụ thông tin hệ thống inxi hiển thị thông tin rõ ràng và không phải thực hiện tất cả các kiểm tra của dmidecode / / sys bằng tay. Xem trang người đàn ông cho danh sách tính năng đầy đủ.

Nó hỗ trợ các hệ thống có và không có / sys, mặc dù với dữ liệu / sys, bạn không cần phải root để có được đầu ra phần cứng đầy đủ, với dmidecode bạn làm.

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

Bạn có thể, với quyền root, cũng buộc dữ liệu đến từ 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 có sẵn trong kho của hầu hết các bản phân phối GNU / Linux hoặc có thể cài đặt trực tiếp bằng cách chỉ cần lấy tập lệnh và cài đặt nó.

Mẫu của chế độ đầu ra cơ bản (-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

Định dạng đầu ra mới trong 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

Có vẻ tốt đẹp. Tôi tự hỏi liệu có cách nào công cụ này sẽ trả về số sê-ri hệ thống hoặc bảng không? Sau đó, bạn không cần root cho bất kỳ nội quan hệ thống nào như thế này. (Tôi đoán câu trả lời là "không").
Mike S

Trước khi có sự thay đổi trong nhân linux, tạo ra hệ thống tệp / sys, bạn có thể lấy số sê-ri cho những thứ này mà không phải là root, nhưng sau khi thay đổi, hoàn toàn nằm ngoài sự kiểm soát của inxi, bạn cần phải root và không có cách nào để làm việc xung quanh đó Rõ ràng đó là một quyết định ngớ ngẩn và hồi quy dựa trên một số ý tưởng tồi tệ mà ai đó đã có, nhưng không có gì inxi có thể làm để giải quyết vấn đề đó. sudo inxi -Mxxx trả về serial luôn. Trên một số hệ thống không yêu cầu sudo, phụ thuộc vào phiên bản kernel tôi nghĩ.
Lizardx

Lưu ý rằng inxi 3.0 và mới hơn không sử dụng -! 33 nữa, họ sử dụng --dmidecode
Lizardx

1

Bạn có thể dùng:

dmidecode -t 1

Mà xuất ra một cái gì đó như:

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

nếu được nhà sản xuất hỗ trợ, sẽ cung cấp cho bạn thông tin.

dmidecode là một công cụ để loại bỏ nội dung bảng DMI của máy tính (một số người nói là SMBIOS) ở định dạng có thể đọc được. Bảng này chứa mô tả về các thành phần phần cứng của hệ thống, cũng như các mẩu thông tin hữu ích khác như số sê-ri và sửa đổi BIOS. Nhờ có bảng này, bạn có thể truy xuất thông tin này mà không cần phải thăm dò phần cứng thực tế. Mặc dù đây là một điểm tốt về tốc độ báo cáo và độ an toàn, nhưng điều này cũng làm cho thông tin được trình bày có thể không đáng tin cậy.


grepcần báo giá.
Joshua Detwiler

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.