vmplayerのホストとゲストのsqueezeでHW情報をdmidecodeしてみる。

■vmplayerのホストとゲストのsqueezeでHW情報をdmidecodeしてみる。

 すべてが必ず取得できるわけでは無い。
 さほど新しくなく無いCPUファミリでも認識出来なかったりもする。

 どんな情報がどれだけ取得できるか事前に知りたい。
 こういうときはワンライナーが役に立つ。

 合計値を見れば明らかだが、個別に出すより、すべて取得した方が行数が多い。

■ホストで取得可能な情報をすべて取得する。

$ sudo dmidecode -q | wc -l
471

■ゲストで取得可能な情報をすべて取得する。

$ sudo dmidecode -q
6081

■ホストで有効なTYPE、TYPE番号の概要と行数を出力する。

$ for n in `seq 2 39`;do \
    echo -n "$n,`man dmidecode | grep \" $n \" | sed s/\"  *$n  *\"//g`,"; \
    sudo dmidecode -t ${n} -q | wc -l ; \
  done | awk -F\, '($3>0){print}' | \
  awk -F\, '{print;sum+=$3}END{print "合計,,"sum}'
2,Base Board,12
3,Chassis,16
4,Processor,22
5,Memory Controller,22
6,Memory Module,36
7,Cache,30
9,System Slots,42
10,On Board Devices,5
11,OEM Strings,7
16,Physical Memory Array,7
17,Memory Device,64
19,Memory Array Mapped Address,6
20,Memory Device Mapped Address,24
32,System Boot,3
合計,,296

■ゲストで有効なTYPE、TYPE番号の概要と行数を出力する

$ for n in `seq 2 39`;do \
    echo -n "$n,`man dmidecode | grep \" $n \" | sed s/\"  *$n  *\"//g`,"; \
    sudo dmidecode -t ${n} -q | wc -l ; \
  done | awk -F\, '($3>0){print}' | \
  awk -F\, '{print;sum+=$3}END{print "合計,,"sum}'
2,Base Board,10
3,Chassis,16
4,Processor,1952
5,Memory Controller,36
6,Memory Module,135
7,Cache,2176
9,System Slots,64
10,On Board Devices,9
11,OEM Strings,4
15,System Event Log,18
16,Physical Memory Array,7
17,Memory Device,1024
18,32-bit Memory Error,9
19,Memory Array Mapped Address,6
20,Memory Device Mapped Address,512
23,System Reset,10
24,Hardware Security,6
30,Out-of-band Remote Access,5
32,System Boot,3
33,64-bit Memory Error,9
合計,,6011

■ホストのメモリスロットとサイズ、または空き。
 「No Module Installed」が空き。以下には無いのでメモリスロットに空きが無い。

$ sudo dmidecode -t 17 | grep "Locator\|Size"
        Size: 1024 MB
        Locator: DIMM1 M/B
        Bank Locator: Bank A1
        Size: 1024 MB
        Locator: DIMM2 M/B
        Bank Locator: Bank A2
        Size: 1024 MB
        Locator: DIMM3 M/B
        Bank Locator: Bank B1
        Size: 1024 MB
        Locator: DIMM4 M/B
        Bank Locator: Bank B2

■ゲストは64(仮想)メモリスロットがある。

$ sudo dmidecode -t 17 | grep "Locator\|Size" | awk '(NR<5||NR>190){print $0}'
        Size: 512 MB
        Locator: RAM slot #0
        Bank Locator: RAM slot #0
        Size: No Module Installed
        Locator: RAM slot #63
        Bank Locator: RAM slot #63

■ゲストはCPUも(仮想)ソケットが64スロットある。

$ sudo dmidecode -t 4 | grep "CPU socket" | wc -l
64

■ホストのOEM
 PCの型番やBIOSの何かとか。。。

$ sudo dmidecode -t 11 -q | sed s/"\:.*"/"\:"/g
OEM Strings
        String 1:
        String 2:
        String 3:
        String 4:
        String 5:

■ゲストのOEM

$ sudo dmidecode -t 11 -q | sed s/"\(SHA1\/\).*\\]"/"\1Signature]"/
OEM Strings
        String 1: [MS_VM_CERT/SHA1/Signature]
        String 2: Welcome to the Virtual Machine


■ホストではCPUのファミリが取得出来なかった。

$ sudo dmidecode -s processor-family
<OUT OF SPEC>

■ゲストではCPUはPen3ファミリとして認識

$ sudo dmidecode -s processor-family | sort -u
Pentium III
Unknown

■ホストで有効な検索名

$ sudo dmidecode -s -q 2>&1| grep "^  " | \
  sed s/"^  *"//g | \
  for list in `xargs`;do \
    echo -n "$list,"; \
    sudo dmidecode -s "$list" -q | wc -l; \
  done | awk -F\, '($2>0){print}' | \
  awk -F\, '{print;sum+=$2}END{print "合計,"sum}'
bios-vendor,1
bios-version,1
bios-release-date,1
system-manufacturer,1
system-product-name,1
system-version,1
system-serial-number,1
system-uuid,1
baseboard-manufacturer,1
baseboard-product-name,1
baseboard-version,1
baseboard-serial-number,1
baseboard-asset-tag,1
chassis-manufacturer,1
chassis-type,1
chassis-version,1
chassis-serial-number,1
chassis-asset-tag,1
processor-family,1
processor-manufacturer,1
processor-version,1
processor-frequency,1
合計,22

■ゲストで有効な検索名と行数

$ sudo dmidecode -s -q 2>&1| grep "^  " | \
  sed s/"^  *"//g | \
  for list in `xargs`;do \
    echo -n "$list,"; \
    sudo dmidecode -s "$list" -q | wc -l; \
  done | awk -F\, '($2>0){print}' | \
  awk -F\, '{print;sum+=$2}END{print "合計,"sum}'
bios-vendor,1
bios-version,1
bios-release-date,1
system-manufacturer,1
system-product-name,1
system-version,1
system-serial-number,1
system-uuid,1
baseboard-manufacturer,1
baseboard-product-name,1
baseboard-version,1
baseboard-serial-number,1
baseboard-asset-tag,1
chassis-manufacturer,1
chassis-type,1
chassis-version,1
chassis-serial-number,1
chassis-asset-tag,1
processor-family,64
processor-manufacturer,64
processor-version,64
processor-frequency,64
合計,274

■以下も見ると面白い。

$ man dmidecode | grep -A 1 "SEE ALSO"
SEE ALSO
       biosdecode(8), mem(4), ownership(8), vpddecode(8)