どの仮想化プラットフォームで動いているかをVM側から調べる

投稿者: | 7月 1, 2024

 

とある会社(ほんととある会社)の話になったときに、「あの会社は、あの会社の子会社だよ」と言われてびっくりしたことがある。その会社の社員ならば、知っているのかもしれない。しかし、逆に、あの会社とあの会社、同じ屋号だけど別会社というのもある。なので、実際、会社自体がどこと関連しているかわからないことがある。仮想マシンの場合は、WindowsならWindowsの顔をしている。デバイスマネージャをひらけば、なんとなくわかるかもしれないが、KVMのように、VMwareのVMXnet3が使えてしまったりするため、デバイス名だけで判定するのも危ない。

 

閑話休題

 

Linuxだとdmesgをみれば、どの仮想プラットフォームで動いているのか判別できたのだが、Windowsだとどうする?

調べてみた。こんな感じ。以下のコマンドで調べられそう。

Get-WmiObject -Class Win32_ComputerSystem -Namespace "root\cimv2"

出力結果は以下。あくまでもベンダー名なので、実際にどれがKVMかはわからない。

VMware

Domain : WORKGROUP

Manufacturer : VMware, Inc.

Model : VMware20,1

Name : WIN-ACHKTRA783S

PrimaryOwnerName : Windows ユーザー

TotalPhysicalMemory : 4293971968

 

Hyper-V

Domain : WORKGROUP

Manufacturer : Microsoft Corporation

Model : Virtual Machine

Name : WIN-OOUO73SG5AO

PrimaryOwnerName : Windows ユーザー

TotalPhysicalMemory : 4293861376

 

Nutanix AHV

Domain : WORKGROUP

Manufacturer : Nutanix

Model : AHV

Name : WIN2022AHV-1

PrimaryOwnerName : Windows ユーザー

TotalPhysicalMemory : 4294402048

 

OpenShift Virtualization

Domain : WORKGROUP

Manufacturer : Red Hat

Model : OpenShift Virtualization

Name : WIN-6CB7M2ML3US

PrimaryOwnerName : Windows ユーザー

TotalPhysicalMemory : 4274995200

 

Proxmox

Domain : WORKGROUP

Manufacturer : QEMU

Model : Standard PC (i440FX + PIIX, 1996)

Name : WIN-OOUO73SG5AO

PrimaryOwnerName : Windows ユーザー

TotalPhysicalMemory : 4288753664

 

KVMは、バラバラで当てにならないなぁ。Oracle Virtualizationは今動かせていないので後で調べる。

結構表示がバラバラである。。。

 

なんで、こんなことを調べたのかというと、移行したVMが元VMwareだった場合、移行後にVMware Toolsを抜きたかった。ただし、普通にはアンインストールができなく、以下のスクリプトで無理やり抜く羽目に。

https://gist.githubusercontent.com/broestls/f872872a00acee2fca02017160840624/raw/ac24632b783adcc0382cd2c803157c9ecb6e3d87/Remove_VMwareTools.ps1

これをスクリプトに仕組んでみた。手順としては

起動時にこのコマンド出力でManufacturerが、VMware, Inc.ではない場合、上記のスクリプトを実行する。

とした。

KVMかどうかを検知したかったが、難しそうだったのでVMwareではなければという判定を使った。

実際に動くかどうかつかってみてのお楽しみだが。

コメントを残す