日期:2014-05-16  浏览次数:20635 次

Linux下硬件信息查看--dmidecode

?dmidecode以一种可读的方式dump出机器的DMI(Desktop Management Interface)信息。这些信息包括了硬件以及BIOS,既可以得到当前的配置,也可以得到系统支持的最大配置,比如说支持的最大内存数等。
?
?DMI有人也叫SMBIOS(System Management BIOS),这两个标准都由DMTF(Desktop Management Task Force)开发。

?dmidecode的输出格式一般如下:
?----------------------------------------
?Handle 0x0002
??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 0x0002。
??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的使用方法
?
?1. 最简单的的显示全部dmi信息:
?# dmidecode
?这样将输出所有的dmi信息,你可能会被一大堆的信息吓坏,通常可以使用下面的方法。
?
?2.更精简的信息显示:
?# dmidecode -q
?-q(--quite) 只显示必要的信息,这个很管用哦。
?
?3.显示指定类型的信息:
?通常我只想查看某类型,比如CPU,内存或者磁盘的信息而不是全部的。这可以使用-t(--type TYPE)来指定信息类型:
?# dmidecode -t bios
?# dmidecode -t bios, processor (这种方式好像不可以用,必须用下面的数字的方式)
?# dmidecode -t 0,4 ??(显示bios和processor)
?
?dmidecode到底支持哪些type?
?这些可以在man dmidecode里面看到:
?文本参数支持:
??bios, system, baseboard, chassis, processor, memory, cache, connector, slot
?数字参数支持很多:(见附录)
?
?4.通过关键字查看信息:
?比如只想查看序列号,可以使用:
?# dmidecode -s system-serial-number
?-s (--string keyword)支持的keyword包括:
?-------------------------------------------------
??bios-vendor,bios-version, bios-release-date,
??system-manufacturer, system-product-name, system-version, system-serial-number,
??baseboard-manu-facturer,baseboard-product-name,? baseboard-version, baseboard-serial-number, baseboard-asset-tag,
??chassis-manufacturer, chas-sis-version, chassis-serial-number, chassis-asset-tag,
??processor-manufacturer, processor-version.
?-------------------------------------------------
?
?5.示例
?5.1 查看当前内存和支持的最大内存
?Linux下,可以使用free或者查看meminfo来获得当前的物理内存:
?# free
????total?????? used?????? free???? shared??? buffers???? cached
?Mem:?????? 8182532??? 8010792???? 171740????????? 0???? 148472??? 4737896
?-/+ buffers/cache:??? 3124424??? 5058108
?Swap:????? 4192956?????? 3304??? 4189652
?# grep MemTotal /proc/meminfo
?MemTotal:????? 8182532 kB
?这里显示了当前服务器的物理内存是8GB。
?
?服务器到底能扩展到多大的内存?

?#dmidecode -t 16
?# dmidecode 2.7
?SMBIOS 2.4 present.

?Handle 0x0013, DMI type 16, 15 bytes.
?Physical Memory Array
???Location: System Board Or Motherboard
???Use: System Memory
???Error Correction Type: Multi-bit ECC
???Maximum Capacity: 64 GB???? (可扩展到64GB)
???Error Information Handle: Not Provided
???Number Of Devices: 4
?
?但是,事实不一定如此,因此插槽可能已经插满了。也就是我们还必须查清这里的8G到底是4*2GB, 2*4GB还是其他?
?如果是4*2GB,那么尽管可以扩展到64GB,但是插槽已经插满,无法扩展了:
?#dmidecode -t 17
?# dmidecode 2.7
?SMBIOS 2.4 present.

?Handle 0x0015, DMI type 17, 27 bytes.
?Memory Device
???Array Handle: 0x0013
???Error Information Handle: Not Provided
???Total Width: 72 bits
???Data Width: 64 bits
???Size: 2048 MB?【插槽1有1条2GB内存】
???Form Factor: DIMM
???Set: None
???Locator: DIMM00
???Bank Locator: BANK
???Type: Other
???Type Detail: Other
???Speed: 667 MHz (1.5 ns)
???Manufacturer:
???Serial Number: BZACSKZ001
???Asset Tag: RAM82
???Part Number: MT9HTF6472FY-53EA2

?Handle 0x0017, DMI type 17, 27 bytes.
?Memory Device
???Array Handle: 0x0013
???Error Information Handle: Not Provided
???Total Width: 72 b