dmi读取 linux_linux dmi - CSDN
  • Linux系统底层的测试,有时候需要关注BIOS的信息(包括基本信息、检测到的CPU和内存等)。除了在开机启动时进入到BIOS之外,还可以在Linux系统中直接查看BIOS的信息,一般可以使用dmidecode命令(还有biosdecode...

    做Linux系统底层的测试,有时候需要关注BIOS的信息(包括基本信息、检测到的CPU和内存等)。除了在开机启动时进入到BIOS之外,还可以在Linux系统中直接查看BIOS的信息,一般可以使用dmidecode命令(还有biosdecode命令可参考);另外,在Windows中可以使用“DMIScope”软件(收费软件,笔者未使用过)来查看和修改BIOS。

    SMBIOS (System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范。
    DMI (Desktop Management Interface, DMI)就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行。
    SMBIOS和DMI是由行业指导机构Desktop Management Task Force (DMTF)起草的开放性的技术标准;不过DMTF宣布DMI的生命期在2005年结束了。

    使用dmidecode命令时,如果不加任何参数,则打印出所有类型的信息;而加上“-t type_num”或者“-t keywords”可以查看某个类型信息。

    dmidecode
    dmidecode -t 1
    dmidecode -t system

    详细请参见Linux 系统查看硬件配置信息


    SMBIOS specification 2.7.1 中定义了如下的结构类型:
    Type Description
    0 BIOS Information
    1 System Information
    2 Baseboard (or Module) Information
    3 System Enclosure or Chassis
    4 Processor Information
    5 Memory Controller Information (Obsolete)
    6 Memory Module Information (Obsolete)
    7 Cache Information
    8 Port Connector Information
    9 System Slots
    10 On Board Devices Information
    11 OEM Strings
    12 System Configuration Options
    13 BIOS Language Information
    14 Group Associations
    15 System Event Log
    16 Physical Memory Array
    17 Memory Device
    18 32-Bit Memory Error Information
    19 Memory Array Mapped Address
    20 Memory Device Mapped Address
    21 Built-in Pointing Device
    22 Portable Battery
    23 System Reset
    24 Hardware Security
    25 System Power Controls
    26 Voltage Probe
    27 Cooling Device
    28 Temperature Probe
    29 Electrical Current Probe
    30 Out-of-Band Remote Access
    31 Boot Integrity Services (BIS) Entry Point
    32 System Boot Information
    33 64-Bit Memory Error Information
    34 Management Device
    35 Management Device Component
    36 Management Device Threshold Data
    37 Memory Channel
    38 IPMI Device Information
    39 System Power Supply
    40 Additional Information
    41 Onboard Devices Extended Information
    42 Management Controller Host Interface
    126 Inactive
    127 End-of-Table
    128-255 Available for system- and OEM- specific information

     

    参考资料:

    http://en.wikipedia.org/wiki/System_Management_BIOS

    http://en.wikipedia.org/wiki/Desktop_Management_Interface

    http://www.joecen.com/2007/04/19/view-bios-operating-system-in-the-dmi-smbios-information/


    展开全文
  • linux读取dmi信息的方法

    linux下读取dmi信息,需要依赖dmidecode工具。


    Dmidecode命令详解

     

    Dmidecode 这款软件允许你在 Linux 系统下获取有关硬件方面的信息。Dmidecode 遵循 SMBIOS/DMI 标准,其输出的信息包括 BIOS、系统、主板、处理器、内存、缓存等等。偶发现这个工具很有用,就总结一下。

    一、Dmidecode简介

    DMI (Desktop Management Interface, DMI)就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行。 SMBIOS(System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范。SMBIOS和DMI是由行业指导机构Desktop Management Task Force (DMTF)起草的开放性的技术标准,其中DMI设计适用于任何的平台和操作系统。

    DMI充当了管理工具和系统层之间接口的角色。它建立了标准的可管理系统更加方便了电脑厂商和用户对系统的了解。DMI的主要组成部分是Management Information Format (MIF)数据库。这个数据库包括了所有有关电脑系统和配件的信息。通过DMI,用户可以获取序列号、电脑厂商、串口信息以及其它系统配件信息。

    dmidecode的输出格式一般如下:

    Handle 0×0002 DMI type 2, 8 bytes Base Board Information Manufacturer:Intel Product Name: C440GX+ Version: 727281-0001 Serial Number: INCY92700942

    其中的前三行都称为记录头(recoce Header), 其中包括了:

    1. recode id(handle): DMI表中的记录标识符,这是唯一的,比如上例中的Handle 0×0002。
    2. dmi type id: 记录的类型,譬如说:BIOS,Memory,上例是type 2,即”Base Board Information”
    3. recode size: DMI表中对应记录的大小,上例为8 bytes.(不包括文本信息,所有实际输出的内容比这个size要更大。)记录头之后就是记录的值
    4. decoded values: 记录值可以是多行的,比如上例显示了主板的制造商(manufacturer)、model、version以及serial Number。

    二、Dmidecode的作用

    dmidecode的作用是将DMI数据库中的信息解码,以可读的文本方式显示。由于DMI信息可以人为修改,因此里面的信息不一定是系统准确的信息。

    三、安装Dmidecode

    Dmidecode 在主流的 Linux 发行版中都可以找到,只需通过所用发行版的包管理器安装即可,如:

    apt-get install dmidecode

    或者使用官方包安装:

    • Dmidecode源码包下载地址:http://download.savannah.GNU.org/releases/dmidecode/
    • Win版本下载地址:http://gnuwin32.sourceforge.net/packages/dmidecode.htm

    四、dmidecode命令用法详解

    不带选项执行 dmidecode 通常会输出所有的硬件信息。Dmidecode 有个很有用的选项 -t,可以按指定类型输出相关信息,假如要获得处理器方面的信息,则可以执行

    dmidecode -t processor

    输出:

    # dmidecode 2.10

    SMBIOS 2.6 present.

    Handle 0x0004, DMI type 4, 40 bytes

    Processor Information

    Socket Designation: CPU 1

    Type: Central Processor

    Family: Xeon

    Manufacturer: Intel

    ID: A5 06 01 00 FF FB EB BF

    Signature: Type 0, Family 6, Model 26, Stepping 5

    Flags:

    FPU (Floating-point unit on-chip)

    VME (Virtual mode extension)

    DE (Debugging extension)

    ------

    Usage: dmidecode [OPTIONS]

    Options are:

    • -d, --dev-mem FILE Read memory from device FILE (default: /dev/mem)
      从设备文件读信息,输出内容与不加参数标准输出相同
    • -h, --help Display this help text and exit
      显示帮助信息
    • -q, --quiet Less verbose output
      显示更少的简化信息
    • -s, --string KEYWORD Only display the value of the given DMI string
      只显示指定DMI字符串的信息
    • -t, --type TYPE Only display the entries of given type
      只显示指定条目的信息
    • -u, --dump Do not decode the entries
      显示未解码的原始条目内容
    • --dump-bin FILE Dump the DMI data to a binary file
    • --from-dump FILE Read the DMI data from a binary file
    • -V, --version Display the version and exit
      显示版本信息

    五、dmidecode参数string及type列表

    (1)Valid string keywords are:

    • bios-vendor
    • bios-version
    • bios-release-date
    • system-manufacturer
    • system-product-name
    • system-version
    • system-serial-number
    • system-uuid
    • baseboard-manufacturer
    • baseboard-product-name
    • baseboard-version
    • baseboard-serial-number
    • baseboard-asset-tag
    • chassis-manufacturer
    • chassis-type
    • chassis-version
    • chassis-serial-number
    • chassis-asset-tag
    • processor-family
    • processor-manufacturer
    • processor-version
    • processor-frequency

    (2)Valid type keywords are:

    • bios
    • system
    • baseboard
    • chassis
    • processor
    • memory
    • Cache
    • connector
    • slot

    (3)type全部编码列表

    • 0 BIOS
    • 1 System
    • 2 Base Board
    • 3 Chassis
    • 4 Processor
    • 5 Memory Controller
    • 6 Memory Module
    • 7 Cache
    • 8 Port Connector
    • 9 System Slots
    • 10 On Board Devices
    • 11 OEM Strings
    • 12 System Configuration Options
    • 13 BIOS Language
    • 14 Group Associations
    • 15 System Event Log
    • 16 Physical Memory Array
    • 17 Memory Device
    • 18 32-bit Memory Error
    • 19 Memory Array Mapped Address
    • 20 Memory Device Mapped Address
    • 21 Built-in Pointing Device
    • 22 Portable Battery
    • 23 System Reset
    • 24 Hardware Security
    • 25 System Power Controls
    • 26 Voltage Probe
    • 27 Cooling Device
    • 28 Temperature Probe
    • 29 Electrical Current Probe
    • 30 Out-of-band Remote Access
    • 31 Boot Integrity Services
    • 32 System Boot
    • 33 64-bit Memory Error
    • 34 Management Device
    • 35 Management Device Component
    • 36 Management Device Threshold Data
    • 37 Memory Channel
    • 38 IPMI Device
    • 39 Power Supply
    • 40 Additional Information
    • 41 Onboard Device

    六、命令用法示例

    1. 查看服务器型号:dmidecode | grep 'Product Name'
    2. 查看主板的序列号:dmidecode |grep 'Serial Number'
    3. 查看系统序列号:dmidecode -s system-serial-number
    4. 查看内存信息:dmidecode -t memory
    5. 查看OEM信息:dmidecode -t 11

    关于 Dmidecode 的更多用法,你可以通过指定 -h 选项查询。

    展开全文
  • Linux获取DMI信息

    2020-01-17 14:31:57
    Linux下获取硬件基础信息,比如生产厂商、系统、机箱等等,直接在目录/sys/class/dmi/id/下读取即可,可以使用命令dmidecode: kongs@BJ-DZ0101277:/$ dmidecode --help Usage: dmidecode [OPTIONS] Options are: ...

    Linux下获取硬件基础信息,比如生产厂商、系统、机箱等等,直接在目录/sys/class/dmi/id/下读取即可,可以使用命令dmidecode:

    kongs@BJ-DZ0101277:/$ dmidecode --help
    Usage: dmidecode [OPTIONS]
    Options are:
     -d, --dev-mem FILE     Read memory from device FILE (default: /dev/mem)
     -h, --help             Display this help text and exit
     -q, --quiet            Less verbose output
     -s, --string KEYWORD   Only display the value of the given DMI string
     -t, --type TYPE        Only display the entries of given type
     -u, --dump             Do not decode the entries
         --dump-bin FILE    Dump the DMI data to a binary file
         --from-dump FILE   Read the DMI data from a binary file
     -V, --version          Display the version and exit

    也可直接使用代码:

    package main
    
    import (
    	"fmt"
    	"io/ioutil"
    	"strings"
    )
    
    type DMI struct {
    	BiosDate    string
    	BiosVendor  string
    	BiosVersion string
    
    	BoardAssetTag string
    	BoardName     string
    	BoardSerial   string
    	BoardVendor   string
    	BoardVersion  string
    
    	ChassisAssetTag string
    	ChassisSerial   string
    	ChassisType     string
    	ChassisVendor   string
    	ChassisVersion  string
    
    	ProductName    string
    	ProductSerial  string
    	ProductUuid    string
    	ProductVersion string
    
    	Modalias  string
    	SysVendor string
    	Uevent    string
    }
    
    var SysinfoDmi DMI
    
    func init() {
    	//bios
    	SysinfoDmi.BiosDate = getStringFromFile("/sys/class/dmi/id/bios_date")
    	SysinfoDmi.BiosVendor = getStringFromFile("/sys/class/dmi/id/bios_vendor")
    	SysinfoDmi.BiosVersion = getStringFromFile("/sys/class/dmi/id/bios_version")
    	//board
    	SysinfoDmi.BoardAssetTag = getStringFromFile("/sys/class/dmi/id/board_asset_tag")
    	SysinfoDmi.BoardName = getStringFromFile("/sys/class/dmi/id/board_name")
    	SysinfoDmi.BoardSerial = getStringFromFile("/sys/class/dmi/id/board_serial")
    	SysinfoDmi.BoardVendor = getStringFromFile("/sys/class/dmi/id/board_vendor")
    	SysinfoDmi.BoardVersion = getStringFromFile("/sys/class/dmi/id/board_version")
    	//chassis
    	SysinfoDmi.ChassisAssetTag = getStringFromFile("/sys/class/dmi/id/chassis_asset_tag")
    	SysinfoDmi.ChassisSerial = getStringFromFile("/sys/class/dmi/id/chassis_serial")
    	SysinfoDmi.ChassisType = getStringFromFile("/sys/class/dmi/id/chassis_type")
    	SysinfoDmi.ChassisVendor = getStringFromFile("/sys/class/dmi/id/chassis_vendor")
    	SysinfoDmi.ChassisVersion = getStringFromFile("/sys/class/dmi/id/chassis_version")
    
    	SysinfoDmi.ProductName = getStringFromFile("/sys/class/dmi/id/product_name")
    	SysinfoDmi.ProductSerial = getStringFromFile("/sys/class/dmi/id/product_serial")
    	SysinfoDmi.ProductUuid = getStringFromFile("/sys/class/dmi/id/product_uuid")
    	SysinfoDmi.ProductVersion = getStringFromFile("/sys/class/dmi/id/product_version")
    
    	SysinfoDmi.Modalias = getStringFromFile("/sys/class/dmi/id/modalias")
    	SysinfoDmi.SysVendor = getStringFromFile("/sys/class/dmi/id/sys_vendor")
    	SysinfoDmi.Uevent = getStringFromFile("/sys/class/dmi/id/uevent")
    
    }
    
    func getStringFromFile(path string) string {
    	//读取文件全部内容
    	b, err := ioutil.ReadFile(path)
    	if err != nil {
    		return ""
    	}
    	return strings.Replace(string(b), "\n", "", -1)
    }
    
    func main() {
    	fmt.Println("#############bios info#############")
    	fmt.Println("bios_date:", SysinfoDmi.BiosDate)
    	fmt.Println("bios_vend:", SysinfoDmi.BiosVendor)
    	fmt.Println("bios_vers:", SysinfoDmi.BiosVersion)
    	fmt.Println("#############board info############")
    	fmt.Println("board_asset_tag:", SysinfoDmi.BoardAssetTag)
    	fmt.Println("board_name     :", SysinfoDmi.BoardName)
    	fmt.Println("board_serial   :", SysinfoDmi.BoardSerial)
    	fmt.Println("board_vendor   :", SysinfoDmi.BoardVendor)
    	fmt.Println("board_version  :", SysinfoDmi.BoardVersion)
    
    	fmt.Println("#############chassis info############")
    	fmt.Println("chassis_asset_tag:", SysinfoDmi.ChassisAssetTag)
    	fmt.Println("chassis_type     :", SysinfoDmi.ChassisType)
    	fmt.Println("chassis_serial   :", SysinfoDmi.ChassisSerial)
    	fmt.Println("chassis_vendor   :", SysinfoDmi.ChassisVendor)
    	fmt.Println("chassis_version  :", SysinfoDmi.ChassisVersion)
    
    	fmt.Println("#############product info############")
    	fmt.Println("product_name   :", SysinfoDmi.ProductName)
    	fmt.Println("product_serial :", SysinfoDmi.ProductSerial)
    	fmt.Println("product_uuid   :", SysinfoDmi.ProductUuid)
    	fmt.Println("product_version:", SysinfoDmi.ProductVersion)
    
    	fmt.Println("#############other   info############")
    	fmt.Println("Modalias :", SysinfoDmi.Modalias)
    	fmt.Println("SysVendor:", SysinfoDmi.SysVendor)
    	fmt.Println("Uevent   :", SysinfoDmi.Uevent)
    	fmt.Println("bay")
    
    	// fmt.Printf("%+v\n", SysinfoDmi)
    }
    

    执行结果:

    chassis_asset_tag: 
    chassis_type     : 10
    chassis_serial   : 
    chassis_vendor   : Dell Inc.
    chassis_version  : 
    #############product info############
    product_name   : Latitude 5280
    product_serial : 
    product_uuid   : 
    product_version: 
    #############other   info############
    Modalias : dmi:bvnDellInc.:bvr1.7.5:bd11/12/2017:svnDellInc.:pnLatitude5280:pvr:rvnDellInc.:rn07C09D:rvrA00:cvnDellInc.:ct10:cvr:
    SysVendor: Dell Inc.
    Uevent   : MODALIAS=dmi:bvnDellInc.:bvr1.7.5:bd11/12/2017:svnDellInc.:pnLatitude5280:pvr:rvnDellInc.:rn07C09D:rvrA00:cvnDellInc.:ct10:cvr:
    bay

     

    展开全文
  • 读取DMI信息

    2012-11-27 10:44:37
    DMI table 记录了系统硬体信息,比如BIOS version ,OEM vender info ,CPU RAM 等。 系统在boot时会将DMI table map到 MEMORY中。程序从0x0000F000:0 位置开始查找string “_SM_”,确定地址后把指针格式化成...

    DMI table 记录了系统硬体信息,比如BIOS version ,OEM vender info ,CPU  RAM 等。

    系统在boot时会将DMI table map到 MEMORY中。程序从0x0000F000:0 位置开始查找string “_SM_”,确定地址后把指针格式化成struct dmi_eps

    的格式,再读出需要的信息。

    下面是memtest86+4.20里边open DMI的部分:

    struct dmi_eps {
     uint8_t  anchor[4];
     int8_t   checksum;
     uint8_t  length;
     uint8_t  majorversion;
     uint8_t  minorversion;
     uint16_t maxstructsize;
     uint8_t  revision;
     uint8_t  pad[5];
     uint8_t  intanchor[5];
     int8_t   intchecksum;
     uint16_t tablelength;
     uint32_t tableaddress;
     uint16_t numstructs;
     uint8_t  SMBIOSrev;
    } __attribute__((packed));

     

    int open_dmi(void){
     char *dmi, *dmi_search_start, *dmi_start;
     int found=0;
     struct dmi_eps *eps;
     char *table_start;
     int tstruct_count=0;
     dmi_search_start = (char *)DMI_SEARCH_START;  //0x0000F000

     //find anchor
     for(dmi = dmi_search_start; dmi < dmi_search_start + 0xf0000; dmi +=16){ //从0x0000F000位置开始查找"_SM_"
      if( *dmi == '_' &&
          *(dmi+1) == 'S' &&
          *(dmi+2) == 'M' &&
          *(dmi+3) == '_'){
       found =1;
       break;
      }
     }
     if (!found) {
      return -1;
     }
     dmi_start=dmi;
     eps=(struct dmi_eps *)dmi;  // formate dmi register

     //check checksum
     int8_t checksum=0;
     for (; dmi < dmi_start + eps->length; dmi++)
      checksum += *dmi;
     if (checksum){
      return -1;
     }

     table_start=(char *)eps->tableaddress;
     dmi=table_start;
    //look at all structs
     while(dmi < table_start + eps->tablelength){
      struct tstruct_header *header = (struct tstruct_header *)dmi;
      if (header->type == 17)
       mem_devs[mem_devs_count++]=(struct mem_dev *)dmi;
      
      // Need fix (SMBIOS/DDR3)
      if (header->type == 20 || header->type == 1)
       md_maps[md_maps_count++]=(struct md_map *)dmi;
      dmi+=header->length;
      while( ! (*dmi == 0  && *(dmi+1) == 0 ) )
       dmi++;
      dmi+=2;

      if (++tstruct_count > eps->numstructs)
       return -1;
     }
     return 0;
    }

     

    展开全文
  • 获取dmi系统硬件信息的方法有很多,之前笔者在Dmidecode 一文中介绍了命令dmidecode获取dmi硬件信息的方法。本文补充另外一种获取dmi硬件信息的方法,主要是通过查看sys文件系统的文件获取。关于sysfs的具体信息可以...
  • 系统信息  arch 显示机器的处理器...dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)  hdparm -i /dev/hda 罗列一个磁盘的架构特性  hdparm -tT /dev/sda 在磁盘上执行测试性读取操作  cat /proc/cpuinfo 显示C...
  • dmidecode 是一个读取电脑 DMI(桌面管理接口(Desktop Management Interface))表内容并且以人类可读的格式显示系统硬件信息的工具。(也有人说是读取 SMBIOS ——系统管理 BIOS(System Management BIOS)) 这个表...
  • 在使用有root权限的命令窗口执行这些命令或脚本时,不会出现这些Permission denied提示,如果是使用Java去执行命令或者脚本,权限不够时会出现此提示,以centos系统为例 1、Java执行到某脚本 ...
  • 下面是头文件内容,代码是mooon的一部分,对应的CPP文件请直接浏览:http://code.google.com/p/mooon/source/browse/trunk/common_library/src/sys/info.cpp #include #include "sys/config.h" .../**
  • 请问,c语言编程,怎样从SMBIOS读取BIOS版本?谢谢大家……
  • C++读取BIOS信息

    2017-02-07 16:07:07
    C++读取BIOS的信息
  • dmidecode命令可以让你在Linux系统下获取有关硬件方面的信息。dmidecode的作用是将DMI数据库中的信息解码,以可读的文本方式显示。由于DMI信息可以人为修改,因此里面的信息不一定是系统准确的信息。dmidecode遵循...
  • SMBIOS/DMI/MIF

    2012-11-12 12:38:40
    //Management Information Format (MIF file) is a format used to describe a hardware or software component....//MIF files are used by DMI to report system configuration information. Although MIF is a sys
  •  dmidecode允许你在Linux系统下获取有关硬件方面的信息。dmidecode遵循SMBIOS/DMI标准,其输出的信息包括BIOS、系统、主板、处理器、内存、缓存等等。  DMI(Desktop Management Interface,DMI)就是帮助收集电脑...
  • Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解...
  • 读取SMBIOS信息,在windows下,给我提供了如下两种方法: 1.用WMI(Windows Management Instrumentation)读取SMBIOS信息。 2.系统APIS去读SMBIOS信息:EnumSystemFirmwareTables() and GetSystemFirmwareTable()。 ...
  • DMI 表示的是 Desktop Management Interface 桌面管理接口,使用 dmidecode 工具可以查询很多 DMI 表的信息,包括内存,主板等。 2. 安装 Arch Linux环境下: sudo pacman -S dmidecode 3. 使用 查看内存槽及内存条...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • Inxi 最初是为控制台和 IRC(网络中继聊天)开发的一个强大且优秀的命令行系统信息脚本。可以使用它获取用户的硬件和系统信息,它也用于调试或者社区技术支持工具。 使用 Inxi 可以很容易的获取所有的硬件信息:硬盘、...
1 2 3 4 5 ... 20
收藏数 3,894
精华内容 1,557
关键字:

dmi读取 linux