可通过dmidecode、lshw、sysfs/udev、smartctl及cpuid等工具获取Linux硬件唯一标识:dmidecode查主板/BIOS/系统序列号;lshw输出JSON格式硬件详情;sysfs与udevadm读硬盘序列号;smartctl通过SMART获取磁盘序列号;cpuid提取CPU型号与特征(现代CPU无可用唯一序列号)。

如果您需要在Linux系统中获取硬件的唯一标识信息,例如主板序列号、CPU型号与序列号、硬盘序列号等,则可通过命令行工具直接读取系统固件或设备接口提供的原始数据。以下是多种可行的方法:
一、使用dmidecode命令获取主板与BIOS序列号
dmidecode工具可解析系统DMI(Desktop Management Interface)表,其中包含主板制造商、型号、序列号及BIOS版本等关键信息。该命令需root权限运行,且仅适用于x86/x64平台。
1、以root用户身份执行:sudo dmidecode -t baseboard,查看主板信息,重点关注“Serial Number”字段。
2、执行:sudo dmidecode -t bios,提取BIOS序列号(“Serial Number”行)与发布日期。
3、执行:sudo dmidecode -t system,获取整机系统信息,包括制造商、产品名称及系统序列号(“Serial Number”)。
二、使用lshw命令获取综合硬件标识
lshw通过访问/proc、/sys及DMI数据生成详细硬件清单,支持主板、CPU、存储控制器与磁盘的层级识别,并可输出序列号、版本、总线地址等属性。
1、安装lshw(如未预装):sudo apt install lshw(Debian/Ubuntu)或sudo yum install lshw(RHEL/CentOS)。
2、以简明模式列出主板信息:sudo lshw -class motherboard -short。
3、以完整JSON格式导出主板详情:sudo lshw -class motherboard -json | grep -E '"serial"|\"version"|\"product"'。
4、查看CPU序列号(若固件提供):sudo lshw -class processor | grep -A 5 "serial\|version\|product"。
三、通过sysfs与udev获取硬盘序列号
Linux内核通过/sys/block/目录暴露块设备属性,其中设备模型(device/model)、厂商(device/vendor)及序列号(device/wwn或device/serial)可被直接读取;部分SATA/NVMe硬盘需依赖udevadm查询。
1、列出所有块设备及其主次设备号:ls /sys/block/(如sda、nvme0n1)。
2、读取sda硬盘序列号:sudo cat /sys/block/sda/device/serial 2>/dev/null(若存在)。
3、使用udevadm获取更可靠结果:sudo udevadm info --name=/dev/sda | grep -i "id_serial\|id_model\|id_vendor"。
4、对NVMe设备(如nvme0n1),执行:sudo smartctl -i /dev/nvme0n1 | grep "Serial Number"(需安装smartmontools)。
四、使用smartctl读取硬盘SMART序列号
smartctl是smartmontools套件核心工具,可与硬盘固件通信,读取标准SMART信息,包括制造商定义的序列号字段,适用于SATA、SAS与部分NVMe设备。
1、安装smartmontools:sudo apt install smartmontools(Debian/Ubuntu)或sudo dnf install smartmontools(Fedora)。
2、查询SATA硬盘序列号:sudo smartctl -i /dev/sda | grep "Serial Number"。
3、查询NVMe硬盘(需支持NVMe passthrough):sudo smartctl -i -d nvme /dev/nvme0n1 | grep "Serial Number"。
4、验证设备是否启用SMART:sudo smartctl -s on /dev/sda(若返回“SMART Disabled”,需先启用)。
五、读取CPU序列号(如可用)与特征标识
现代x86 CPU通常不公开唯一序列号(因隐私与安全策略禁用),但可通过cpuid指令提取处理器型号、步进、家族ID及微码级别;部分旧款Intel CPU曾提供PSN(Processor Serial Number),现已被废弃。
1、安装cpuid工具:sudo apt install cpuid(Debian/Ubuntu)。
2、执行基础CPU识别:cpuid | grep -E "processor name|stepping|model|family"。
3、查看CPUID功能位:cpuid -l 1 | grep "EDX",确认PSN相关位(bit 18)是否置位(绝大多数现代CPU为0)。
4、从/proc/cpuinfo提取稳定标识:grep "model name\|cpu family\|stepping" /proc/cpuinfo | head -n 3。









