如何在Linux中找到硬件模型?


89

我使用了系统信息实用程序来获取系统以及主板的型号。

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

在这种情况下2306CTO,是否可以在Linux中获取型号?



2
为了清楚起见,您似乎对硬件产品感兴趣,而不是对主板感兴趣。例如,“ ThinkPad X230”是一种计算机类型,而不是主板。
布莱奇利2013年

1
您还可以通过运行dmesg命令或检查/ var / log / dmesg *来获得一些信息,而无需额外的软件包。
布雷克·拉索

Answers:


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类型。当检查RAM安装(dmidecode -t17)时,如果您键入错误的数据,grep会产生一些非常难看的输出,则习惯变得非常有用。另外,的输出-t更加完整
Bratchley

@JoelDavis,我之前不知道这些选项。我会用它们。谢谢。
eppesuig

13
注意:需要root。如果您希望所有信息都具有当前用户的权限,请使用:(cat /sys/devices/virtual/dmi/id/*并且它允许您使用普通用户获取模型名称和排序)
qwertzguy 2015年

在没有grep参数的情况下对dmidecode的输出进行配管很有趣,但并不是获取信息的最有效方法。dmidecode可以通过指定'system-product-name'关键字字符串来精确打印OP要求的内容:sudo dmidecode -s system-product-name
cjac

我认为值得指出的是,较旧的系统在上dmidecode甚至没有手册页都没有可用的标志。我认为,以上答案是此处最适合Linux的答案。在-t-s标志对确保新系统是有用的。
Joshua Detwiler

32

尝试sudo dmidecode -t baseboard有关DMI完整信息牛逼有关您的踢脚线能的内容,在人类可读的形式。仅对于System Product Name,您可以使用其中一个(键入dmidecode -s以获得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

作为记录,很多信息可以在现代Linuces上的/ sys / devices / virtual / dmi / id下找到(即,至少从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。谢谢
Eduard Florinescu 2014年

2
太棒了!适用于非root用户的解决方案!
qwertzguy 2015年

1
请注意,此dmi信息可能仅适用于基于Intel的PC。我有一个基于Linux的ARM计算机驱动的网络设备,并且dmicode或/ sys中的路径均不可用。
Mike 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之外,这些命令都无法回答OP提出的问题。它们是非常有用的实用程序,是的,但不完全在问题范围内……
Shadur

@shadur为什么您不赞成我?我以任何其他答案都可以的方式回答问题,然后仅提供额外的有用信息,任何出色的帖子都非常漂亮。
Pablo A

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

看起来不错。我想知道该工具是否可以返回系统或板卡序列号?这样,您几乎不需要像这样的任何系统自检都需要root。(我猜答案是“否”)。
Mike S

在更改创建/ sys文件系统的linux内核之前,您无需root就可以获取这些东西的序列号,但是更改之后(完全不受inxi的控制),您需要是root,并且没有办法解决这个问题。显然,这是一个愚蠢的决定,并且是基于某人的某个坏主意而进行的回归,但是inxi无法解决该问题。sudo inxi -Mxxx总是返回序列号。在某些系统上,不需要sudo,这取决于我认为的内核版本。
蜥蜴人

请注意,inxi 3.0及更高版本不使用-!33了,他们使用--dmidecode
Lizardx '18

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需要报价。
Joshua Detwiler

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.