之前为了看懂OpenBMC的MDR(Managed Data Region)这个功能,所以花了点时间研究了什么是SMBIOS,所以这篇就是非BIOS专业对SMBIOS的理解

SMBIOS Specification (dmtf.org)https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.5.0.pdfThe System Management BIOS (SMBIOS) 提供了主板和系统供应商如何通过在英特尔架构系统上扩展 BIOS 接口以标准格式呈现有关其产品的管理信息。这些讯息包含了CPU/Memory的serial number、manufacturer、speed等资料,也有PCIe Device、USB Device、或是Redfish Service等资讯,基本上都是Platform 上的韧体和硬件讯息。

访问 SMBIOS 信息

SMBIOS存储在NVRAM中,如果是non-UEFI 系统,可以通过在物理内存地址范围 000F0000h 到 000FFFFFh搜索anchor-string(_SM_),找到SMBIOS的EPS(Entry Point structure)

如果是UEFI-based 系统可以直接搜寻GUID找到(SMBIOS_TABLE_GUID, {EB9D2D31-2D88-11D3-9A16-0090273FC14D}) UEFI Specification 2.8 Errata B, May 2020

SMBIOS 结构

SMBIOS Table是由很多个SMBIOS 结构所组合而成的,每个 SMBIOS 结构都有一个格式化部分和一个可选的未格式化部分。每个结构的格式化部分都以一个 4 Byte 的标头开始。格式化部分中的剩余数据由结构类型决定,格式化部分的总长度也是如此。

以底下图为例,如果SMBIOS中有两个Type 4(Processor)的结构,表示BIOS所在的主板上有两个CPU socket

SMBIOS 结构类型

在SMBIOS Spec中有定义目前支援的SMBIOS结构类型,各家厂商的BIOS也可以在自定义范围内定义其他类型

结构的使用指南

这边用Spec中的BIOS Information (Type 0)范例介绍,确定好结构类型后,找到相对应的表,填入相对应的值,如果值的类型是STRING,就填入是未格式化区域中的第几个字串,如果没有字串,就填0

如果想写工具代码处理SMBIOS,就可以定义结构,套上去就能处理的值

当然有些值是要查表的,代码中也要产生一个表才能对应

自定义SMBIOS 结构类型

在Spec中有提到Type 128~256可供OEM defined

像是intel在Intel® Rack Scale Design BIOS & BMC Technical Guide中就有自定义像NIC,HD和PCIe等Type

轻松搞懂SMBIOS相关推荐

  1. php service原理,轻松搞懂WebService工作原理

    用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助. WebService是基于网络的.分布式的模块化组件. 我们直接来看WebService的一个简易工作流程: ...

  2. proe常用c语言语句,带你轻松搞懂Proe条件语句

    原标题:带你轻松搞懂Proe条件语句 本文通过几个简单的例子介绍Proe中的条件语句,希望对你能有所帮助.Proe中使用的IF条件语句和C语言中的IF语句原理是一样的,其结构稍有差别.首先我们了解一下 ...

  3. 【机器学习sklearn】两个例子轻松搞懂核密度估计KernelDensity

    前言 作业中遇到了需要使用KernelDensity的情况,但是网上的资料参差不齐,找了不短的时间却失望而归,最后还是靠着自己的理解才弄懂sklearn这个函数的使用,特此纪念. [机器学习sklea ...

  4. So easy ! 两句口号轻松搞懂Docker

    作为云计算IT圈里人, 如果还不知道Docker,那就算out啦.不过,在搞懂Docker之前,得先来了解一下Docker的成名之路! 从dotCloud到Docker,一"开"鸣 ...

  5. 阿里资深软件测试工程师总结的这几点,让你轻松搞懂性能调优

    什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How ...

  6. Python学习,轻松搞懂Python递归函数的原理与应用

    递归: 在函数的定义中,函数内部的语句调用函数本身. 1.递归的原理 学习任何计算机语言过程中,"递归"一直是所有人心中的疼.不知你是否听过这个冷笑话:"一个面包,走着走 ...

  7. 一篇文章 轻松搞懂 AC自动机

    索引 概念 前后缀匹配 Trie树 AC自动机的实现 初始化 Fail指针的构建 匹配字符串 一名蒟蒻向您问好. 概念 这是 AC自动机,不是自动AC机, 是一个十分常用的多模式字符串匹配算法 (也就 ...

  8. 轻松搞懂云成本优化:FinOps,2023年一定要懂的热点趋势!

    FinOps这个词越来越流行,谷歌搜索趋势显示,自2019年以来,FinOps的热度持续攀升. CNCF发布的云原生2023年趋势预测报告中,10个热点趋势中有4个与FinOps相关,分别是FinOp ...

  9. 带你轻松搞懂JDK动态代理机制(ssm框架先行必备)

    学习动态代理之前需要先搞清楚静态代理,可以回看我之前在Mybatis里写的代理那一篇文章 MyBatis入门基础3 ---代理 动态代理 使用反射机制,在程序执行过程中,创建代理类对象,无需创建类文件 ...

最新文章

  1. JQuery 1.32 DatePicker 增强版
  2. Enterprise Library 2.0 Hands On Lab 翻译(12):安全应用程序块(一)
  3. 纪念逝去的头发--一次debug经历
  4. 依次提取二进制1位置的数字,
  5. 音视频技术开发周刊 | 174
  6. 前端学习(2595):后台系统的权限控制和管理--动态路由
  7. mongodb 可是化_Mongodb GUI可视化管理工具推荐
  8. [转]magento2项目上线注意事项 切换到产品模式
  9. spring boot--拦截器实现
  10. Silverlight 4 帮助文件例子的连接
  11. Perl中shift函数用法
  12. 「周末观赛指南」国足生死战 NBA将演“大结局”?
  13. 嵌入式算法8---空间向量夹角公式及其应用
  14. 提取自制VOC数据集中测试集的标签和图像
  15. 学员故事|老男孩网络安全学习感悟,结果让我意外!
  16. Alibaba Cloud 3 (Soaring Falcon) x86_64(Py3.7.8) 系统 YUM源
  17. 定时任务与系统定时任务
  18. 社交类app 乱弹琴
  19. HDOJ--1052--Tian Ji -- The Horse Racing
  20. 楚琳Web打印控件可以在MVC中调用嘛?

热门文章

  1. RS485串口测试工装研究
  2. if语句转为数学公式
  3. 223. 矩形面积-数学推导法
  4. 解决kali无法上网问题
  5. 深度优先搜索广度优先搜索
  6. win11扩展屏幕黑屏怎么办 windows11扩展屏幕黑屏的解决方法
  7. Gerrit安装使用指导(一)
  8. java 添加gif图片_一个简单的数据库插入gif图片,帮我看看哪里不对
  9. OpenMMLab-AI实战营第二期——相关1. COCO数据集格式和pycocotools使用(目标检测方向)
  10. 封面|朋友圈封面图来了,超个性的哦!