Linux查看内存条厂家信息 dmidecode高级用法
时间:2026-05-05 21:42:40 439浏览 收藏
小伙伴们对文章编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《Linux查看内存条厂家信息 dmidecode高级用法》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!
sudo dmidecode -t memory 中 Manufacturer 字段常为乱码或“NO DIMM”,因BIOS未规范填写;应优先依据 Part Number 查JEDEC前缀判品牌,或用 decode-dimms 直读SPD芯片获取真实厂家信息。

直接用 sudo dmidecode -t memory 看不到厂家?因为字段被截断或混在空插槽里
默认输出里 Manufacturer: 字段常被 BIOS 填成十六进制乱码(如 7F7F7F7F7F510000),或和 Part Number: 隔得太远,grep 一筛就丢。更麻烦的是,空插槽(Size: No Module Installed)也会带出一堆 Manufacturer: 行,干扰判断。
实操建议:
- 加
-q(quiet)参数跳过警告,避免干扰管道处理:sudo dmidecode -q -t memory - 用
awk按内存块聚合字段,只保留Size:后跟 MB/GB 的条目作为有效起点:sudo dmidecode -q -t memory | awk '/Size: [0-9]+ [MG]B$/ {in_block=1; next} in_block && /Manufacturer:/ {man=$0; next} in_block && /Part Number:/ {part=$0; next} in_block && /Speed:/ {speed=$0; print man, part, speed; in_block=0}' - 若
Manufacturer:是十六进制串,可尝试用xxd -r -p反向解码(但多数情况只是 BIOS 填错,无实际意义)
dmidecode 输出的 Manufacturer 字段为什么经常是乱码或 NO DIMM
这不是命令问题,是固件行为:很多主板厂商(尤其 OEM 或国产 BIOS)没按 SMBIOS 规范填制造商字符串,而是写入无效字节、全零、或直接留空再由内核补成 NO DIMM。这种情况下,Manufacturer: 字段已不可信,但 Part Number: 通常仍准确——它由内存颗粒厂烧录进 SPD,BIOS 很少篡改。
实操建议:
- 别依赖
Manufacturer:判定品牌,优先看Part Number:,然后去 JEDEC 官网或厂商文档查前缀(如M378A2K43CB1→ Samsung,F4-3200C14D-16GVKB→ G.Skill) - 遇到
NO DIMM,检查是否对应空插槽;若出现在已安装条上,基本可断定 BIOS 没导出该字段,换decode-dimms工具读 SPD 更可靠 - 部分 ARM 平台(如树莓派 CM4)或精简内核(Alpine)压根不提供 DMI 表,此时
dmidecode会报错或返回空,不是权限问题
不用 root 权限也能拿到厂家线索?试试 /sys/firmware/dmi/tables/DMI
现代内核(≥5.10)默认把 DMI 表映射到 /sys/firmware/dmi/tables/DMI,虽然仍是二进制,但普通用户只要能读这个路径(通常需 sudo,因目录权限为 0400),就能绕过 dmidecode 的完整解析逻辑。
实操建议:
- 先确认路径存在且可读:
sudo ls -l /sys/firmware/dmi/tables/;若报No such file,说明 BIOS 禁用了 DMI sysfs 导出,这条路走不通 - 用
strings提取并过滤:sudo strings /sys/firmware/dmi/tables/DMI | grep -A2 -B2 "Part Number\|Manufacturer\|DIMM" - 注意误匹配:字符串无结构,“Samsung”可能出现在
Asset Tag或其他字段里,务必结合上下文判断是否紧邻Part Number或Speed - 此法不依赖
dmidecode安装,适合容器环境或最小化系统,但无法还原字段层级,对多插槽识别不如原生dmidecode -t memory
想确认厂家是否真实?必须读 SPD 芯片,用 decode-dimms
dmidecode 读的是 BIOS 填写的“申报信息”,而 decode-dimms(来自 i2c-tools)通过 I²C 总线直读内存条上的 SPD EEPROM,内容由 JEDEC 标准定义,不可篡改。这才是厂家信息的唯一权威来源。
实操建议:
- 先加载 I²C 模块:
sudo modprobe i2c-dev;若报错,检查内核是否启用I2C_CHARDEV和I2C_I801(Intel 主板常见) - 扫描 I²C 总线找到 SPD 设备:
sudo i2cdetect -l,再逐个试读:sudo decode-dimms -f i2c-3(i2c-3替换为实际总线号) - 输出中
Memory Type下的Module Manufacturer ID是 JEDEC 注册码(如0x0000= Samsung,0x0101= Micron),比字符串更防伪 - 某些服务器(如 Dell R740)或笔记本因 SPD 访问被 BIOS 锁死,
decode-dimms会提示Failed to open i2c bus,此时只能信 BIOS 填的Part Number
Manufacturer: 显示 NO DIMM、Part Number: 是空、decode-dimms 扫不到设备时,得意识到:这根内存条的 SPD 数据已被屏蔽,或者主板根本不支持标准 SPD 访问——这时候型号只能靠物理标签拍照,或者查整机配置单。以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
439 收藏
-
173 收藏
-
126 收藏
-
362 收藏
-
434 收藏
-
193 收藏
-
165 收藏
-
185 收藏
-
438 收藏
-
283 收藏
-
110 收藏
-
375 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习