可使用dmidecode、lshw、sysfs、hwinfo或直接解析SMBIOS表获取主板型号与序列号:1. sudo dmidecode -t baseboard 查主板信息;2. sudo lshw -class motherboard 过滤关键字段;3. 读取/sys/class/dmi/id/product_serial;4. sudo hwinfo --board 提取型号与序列;5. 高风险下解析/dev/mem中SMBIOS原始数据。

如果您需要在 Linux 系统中确认主板型号、制造商或硬件唯一标识(如序列号),系统通常不直接暴露 BIOS/UEFI 层面的完整信息,需借助底层工具读取 DMI/SMBIOS 数据。以下是获取主板信息与硬件序列号的多种方法:
一、使用 dmidecode 命令查看主板详细信息
dmidecode 工具可解析系统 BIOS 提供的 DMI 表,其中包含主板(Base Board)、机箱(Chassis)和系统(System)等关键字段,需 root 权限运行。
1、以 root 用户身份执行:sudo dmidecode -t baseboard
2、在输出中查找 Manufacturer、Product Name、Version 和 Serial Number 字段。
3、若需同时获取系统序列号(常与主板序列号一致或由 OEM 设置),运行:sudo dmidecode -t system | grep -E "Manufacturer|Product Name|Serial Number"
二、通过 lshw 命令提取主板与序列号数据
lshw 是一个全面的硬件枚举工具,能以结构化方式输出主板及系统信息,支持过滤和精简显示。
1、安装 lshw(如未预装):sudo apt install lshw(Debian/Ubuntu)或 sudo yum install lshw(RHEL/CentOS)。
2、执行命令获取主板摘要:sudo lshw -class motherboard -short
3、获取完整主板信息并高亮关键行:sudo lshw -class motherboard | grep -E "product:|vendor:|serial:"
三、读取 sysfs 中的 DMI 接口文件
Linux 内核在启动时将部分 DMI 数据映射至 /sys/firmware/dmi/entries/ 目录,可通过直接读取对应条目获取序列号等只读信息,无需 root 权限(部分字段除外)。
1、列出所有 DMI 条目:ls /sys/firmware/dmi/entries/
2、定位 Base Board 条目(通常为 2-00xx 或类似编号),例如:cat /sys/firmware/dmi/entries/2-0000/raw | head -c 256 | strings | grep -E "(Manufacturer|Product|Serial)"
3、快速获取系统序列号(若存在):sudo cat /sys/class/dmi/id/product_serial 2>/dev/null || echo "Not available"
四、使用 hwinfo 工具扫描主板硬件特征
hwinfo 是一个更底层的硬件探测工具,对某些 OEM 主板(如 Dell、HP)能识别专有资产标签和固件编码,适合企业环境批量采集。
1、安装 hwinfo:sudo apt install hwinfo(Debian/Ubuntu)或 sudo zypper install hwinfo(openSUSE)。
2、执行主板专项扫描:sudo hwinfo --bios | grep -A5 -B5 "Board\|Serial"
3、提取主板产品名与序列号组合结果:sudo hwinfo --board | grep -E "Model:|Serial:"
五、检查 SMBIOS 表原始字节并人工解析
当标准工具返回空值或被 BIOS 厂商屏蔽时,可尝试直接读取 /dev/mem 中的 SMBIOS 结构表起始地址,适用于调试级诊断,操作风险较高。
1、获取 SMBIOS 入口点地址:sudo dd if=/dev/mem bs=1 skip=0xf0000 count=0x10000 2>/dev/null | strings | grep -A1 "_SM_"
2、定位 Base Board 结构类型 2 的起始偏移(通常在 offset 0x08 处为厂商字符串索引,0x0a 为产品名索引,0x0c 为版本索引,0x0e 为序列号索引)。
3、使用 hexdump 提取结构体前 32 字节:sudo dd if=/dev/mem bs=1 skip=0x7F000 count=32 2>/dev/null | hexdump -C










