Linux查看内存条厂家信息 dmidecode高级用法

梦静酱_1249

梦静酱_1249

2026-04-12

935人浏览

原创

sudo dmidecode -t memory 中 manufacturer 字段常为乱码或“no dimm”,因bios未规范填写;应优先依据 part number 查jedec前缀判品牌,或用 decode-dimms 直读spd芯片获取真实厂家信息。

linux查看内存条厂家信息 dmidecode高级用法

直接用 sudo dmidecode -t memory 看不到厂家?因为字段被截断或混在空插槽里

默认输出里 Manufacturer: 字段常被 BIOS 填成十六进制乱码(如 7F7F7F7F7F510000),或和 Part Number: 隔得太远,grep 一筛就丢。更麻烦的是,空插槽(Size: No Module Installed)也会带出一堆 Manufacturer: 行,干扰判断。

实操建议:

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载
  • 加 -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 访问——这时候型号只能靠物理标签拍照,或者查整机配置单。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end='\n', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.27

2780

5

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

2026.02.03

249

24

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1698

5

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2584

5

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

2023.10.24

6004

49

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

2023.11.24

5489

6

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

2024.03.22

7174

16

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

2024.04.29

10294

11

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

2025.07.29

5259

17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习