■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
Bank Locator: RAM slot
Size: No Module Installed
Locator: RAM slot
Bank Locator: RAM slot
■ゲストは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)