自然の赴くままに・そのときの 気分次第で・なんとなく

興味を持ったことを、なんとなく気の向くまま書いています。

VMware Workstation Player 17 の中身を見る : ゲスト OS 識別 2023年編

本記事は、「vExperts Advent Calendar 2023」の最終日用として書いた記事です。
202年の年の瀬も迫ってきていろいろと忙しくなる時期ですが、そんなときに限って好きなことや興味を持ったことをいろいろと調べ Dive deep したりしてしまいます。

昨年は

imaisato.hatenablog.jp

 

一昨年は

imaisato.hatenablog.jp

こんなことを、その前の年は

imaisato.hatenablog.jp

なことをやっていました。しかし残念なことに今年は vExpert Desktop Hypervisor が無くなってしまっていたので、ブログの更新もモチベーション下がってやる元気なくなってしまったのと、鉄道趣味の方に全力投球をしていたためほぼこちらのブログの更新も止まってしまっていました。ということで、今年の Advent calendar 用に VMware Workstation 17 Player の中身を見るというテーマで記事を書いてみます。

VMware Workstation 17 Player とは

VMware Workstation 17 Player とは、有償で利用でき VMware Workstation 17 Pro のサブセットで、1つの仮想マシンだけを動かすことのできる無償のデスクトップハイパーバイザーです。

VMware Workstation 17 Player

この記事執筆の時点の最新版は Build 22631.2715 で、以下のページからダウンロードができます。

www.vmware.com

VMware Workstation Player は2つのライセンス形態があり、商用以外での利用および個人利用の場合は無償バージョンを利用することができます。また学校の場合の生徒や学生そして非営利組織も無償で利用することが出来るものです。

それに対して企業や営利団体など商業組織で利用する場合は、別途商用ライセンスの購入が必要になります。なので会社で仕事をしているときに「仮想環境使いたいなぁ。そうだ、VMware Workstation Player を入れて使おう!」は個人利用ではなく業務利用になるので、別途有償ライセンスを購入する必要があります。

VMware Workstation 17 Player の中身を見る」とは

私自身 VMware 創業時から VMware Workstation を使い続けていて、新しいバージョンが出るたびにいろいろな機能が追加されていくということと、それに伴って vmx ファイルに記述されるパラメーターが増えているのがずっと気になっていました。これ、プログラムの中でどのように読み取っているのかなと。また、それぞれのパラメーターの設定はどんなのがあるのかなということも気になっていて、いろいろな情報をあさってみたのですがなかなか細かく書かれてるものにたどり着けません。いくつかの情報は以下のようなサイトに書かれているのですが最新のものは見当たらない。

昨年の春に IT 仕事はいったん引退した時点で暇な時間ができたので VMware Workstation 17 Pro の vmx ファイルを紐解き前回のブログの記事(VMware Workstation Pro 17 の中身を見る : ゲスト OS 識別編)を描いたのですが、それから 1年たって VMware Workstation 17 でサポートされているまたはサポート予定のゲスト OS がどのように変わったかを調べてみることにしました。今回は前回と異なり VMware Workstation 17 Pro ではなく VMware Workstation 17 Player を調べています。同じものでないと比較にならないということもあるのですが、VMware Workstation Pro 17 の再インストールが面倒だったということでご容赦を。

VMware Workstation Player 17 でゲスト OS を識別するには

VMware Workstation Player 17 の vmx ファイルには「guestOS」というパラメータがあります。これには以下のように = の後ろに仮想マシンで動作させるゲスト OS を記述します。例えば Windows 10 の場合は

guestOS = "windows9-64"

Windows 11 の場合は

guestOS = "windows11-64"

のように記述されます。
このゲスト OS は仮想マシンを作成する際に「ゲスト OS の選択」で適切なものを選択されるだけで自動的に設定されます。下記キャプチャは Windows で選択できるゲスト OS になります。

ゲスト OS の選択: バージョン

そして、この「ゲスト OS の選択」は上記のように適当なものを選んでも仮想マシンを作成することが出来、また起動することもできてしまいます。これ、何の役に立っているのと疑問に思ったりしながら「Windows 11 無いけれど Windows 10で作っちゃえ」とかやっていたと思います。しかし、VMware Workstation Player 17 の内部ではこの設定を読み取って設定された ゲスト OS 特有の機能がある場合はそれを動かすようになっています。
このゲスト OS の文字列をいちいちプログラムの中で評価していたらそれは大変なので実際には 16進のGuest OS IDが割り当てられています。VMware Workstation Player 17 に設定されているコードは以下の通りです。そして一番右の列に記載しているのは、前回の VMware Workstation Pro 17 の中身を見る : ゲスト OS 識別編 で調べたゲスト OS との差分で「存在しない」ものが新しく変わったものになります。ただここで注意しなければならないのは、前回の VMware Workstation Pro 17 では 236のゲスト OS だったのが、今回の VMware Workstation Player 17 では 256 になっているので単純に「ゲスト OS が追加された」ということではなく、あるけれどGuest OS IDが変わっているものが多数ありました。このGuest OS IDは元々アプリ内部での利用前提なので、Guest OS パラメータさえ正しく設定されていればGuest OS IDはアプリが識別できれば良いという感じのようです。つまり vmx に設定されたGuest OS パラメータは正しい値で前回と今回は同じになっているのにGuest OS IDが違うということは、Guest OS パラメータからコードを紐づけているということが推測できます。詳細は下表を見ていただくと理解できるかと思います。

今回 (Workstation Player 17) 前回 (Workstation Pro 17) 前回との差異
Guest OS ID guestOS パラメーター Guest OS ID guestOS パラメーター ID違い 名称違い
0x5030 almaLinux-64 0x5030 almaLinux-64 同じ 同じ
0x508C amazonlinux2-64 0x5083 amazonlinux2-64 異なる 同じ
0x508D amazonlinux3-64 0x5084 amazonlinux3-64 異なる 同じ
0x5031 arm-almaLinux-64 0x5031 arm-almaLinux-64 同じ 同じ
0x5093 arm-CRXPod1-64     追加 追加
0x508F arm-CRXSys1-64     追加 追加
0x5091 arm-CRXSys2-64     追加 追加
0x5040 arm-debian10-64 0x503D arm-debian10-64 異なる 同じ
0x5040 arm-debian11-64 0x503D arm-debian11-64 異なる 同じ
0x5040 arm-debian12-64 0x503D arm-debian12-64 異なる 同じ
0x5040 arm-debian13-64     追加 追加
0x5031 arm-Fedora-64 0x5031 arm-Fedora-64 同じ 同じ
0x504F arm-freeBSD13-64 0x504A arm-freeBSD13-64 異なる 同じ
0x5052 arm-freeBSD14-64 0x504D arm-freeBSD14-64 異なる 同じ
0x5055 arm-freeBSD15-64     追加 追加
0x503A arm-other-64 0x5037 arm-other-64 異なる 同じ
0x5031 arm-other5xlinux-64 0x5031 arm-other5xlinux-64 同じ 同じ
0x5034 arm-other6xlinux-64 0x5034 arm-other6xlinux-64 同じ 同じ
0x5037 arm-other7xlinux-64     追加 追加
0x5046 arm-rhel10-64     追加 追加
0x5044 arm-rhel9-64 0x5041 arm-rhel9-64 異なる 同じ
0x5031 arm-rockyLinux-64 0x5031 arm-rockyLinux-64 同じ 同じ
0x5031 arm-ubuntu-64 0x5031 arm-ubuntu-64 同じ 同じ
0x5078 arm-vmkernel7 0x5070 arm-vmkernel7 異なる 同じ
0x507A arm-vmkernel8 0x5072 arm-vmkernel8 異なる 同じ
0x507C arm-vmware-photon-64 0x5074 arm-vmware-photon-64 異なる 同じ
0x5016 arm-windows10-64 0x5016 arm-windows10-64 同じ 同じ
0x5018 arm-windows11-64 0x5018 arm-windows11-64 同じ 同じ
0x501A arm-windows12-64 0x501A arm-windows12-64 同じ 同じ
0x5029 asianux3 0x5029 asianux3 同じ 同じ
0x502A asianux3-64 0x502A asianux3-64 同じ 同じ
0x5029 asianux4 0x5029 asianux4 同じ 同じ
0x502A asianux4-64 0x502A asianux4-64 同じ 同じ
0x502C asianux5-64 0x502C asianux5-64 同じ 同じ
0x502C asianux7-64 0x502C asianux7-64 同じ 同じ
0x502C asianux8-64 0x502C asianux8-64 同じ 同じ
0x5030 asianux9-64 0x5030 asianux9-64 同じ 同じ
0x5085 centos 0x507C centos 異なる 同じ
0x5086 centos-64 0x507D centos-64 異なる 同じ
0x5087 centos6 0x507E centos6 異なる 同じ
0x5088 centos6-64 0x507F centos6-64 異なる 同じ
0x5089 centos7-64 0x5080 centos7-64 異なる 同じ
0x508A centos8-64 0x5081 centos8-64 異なる 同じ
0x508B centos9-64 0x5082 centos9-64 異なる 同じ
0x502C coreos-64 0x502C coreos-64 同じ 同じ
0x5092 CRXPod1-64 0x5086 CRXPod1-64 異なる 同じ
0x508E CRXSys1-64 0x5085 CRXSys1-64 異なる 同じ
0x5090 CRXSys2-64     追加 追加
0x505C darwin 0x5054 darwin 異なる 同じ
0x505D darwin-64 0x5055 darwin-64 異なる 同じ
0x505E darwin10 0x5056 darwin10 異なる 同じ
0x505F darwin10-64 0x5057 darwin10-64 異なる 同じ
0x5060 darwin11 0x5058 darwin11 異なる 同じ
0x5061 darwin11-64 0x5059 darwin11-64 異なる 同じ
0x5062 darwin12-64 0x505A darwin12-64 異なる 同じ
0x5063 darwin13-64 0x505B darwin13-64 異なる 同じ
0x5064 darwin14-64 0x505C darwin14-64 異なる 同じ
0x5065 darwin15-64 0x505D darwin15-64 異なる 同じ
0x5066 darwin16-64 0x505E darwin16-64 異なる 同じ
0x5067 darwin17-64 0x505F darwin17-64 異なる 同じ
0x5068 darwin18-64 0x5060 darwin18-64 異なる 同じ
0x5069 darwin19-64 0x5061 darwin19-64 異なる 同じ
0x506A darwin20-64 0x5062 darwin20-64 異なる 同じ
0x506B darwin21-64 0x5063 darwin21-64 異なる 同じ
0x506C darwin22-64 0x5064 darwin22-64 異なる 同じ
0x506D darwin23-64 0x5065 darwin23-64 異なる 同じ
0x503E debian10 0x503B debian10 異なる 同じ
0x503F debian10-64 0x503C debian10-64 異なる 同じ
0x503E debian11 0x503B debian11 異なる 同じ
0x503F debian11-64 0x503C debian11-64 異なる 同じ
0x503E debian12 0x503B debian12 異なる 同じ
0x503F debian12-64 0x503C debian12-64 異なる 同じ
0x503E debian13     追加 追加
0x503F debian13-64     追加 追加
0x503E debian4 0x503B debian4 異なる 同じ
0x503F debian4-64 0x503C debian4-64 異なる 同じ
0x503E debian5 0x503B debian5 異なる 同じ
0x503F debian5-64 0x503C debian5-64 異なる 同じ
0x503E debian6 0x503B debian6 異なる 同じ
0x503F debian6-64 0x503C debian6-64 異なる 同じ
0x503E debian7 0x503B debian7 異なる 同じ
0x503F debian7-64 0x503C debian7-64 異なる 同じ
0x503E debian8 0x503B debian8 異なる 同じ
0x503F debian8-64 0x503C debian8-64 異なる 同じ
0x503E debian9 0x503B debian9 異なる 同じ
0x503F debian9-64 0x503C debian9-64 異なる 同じ
0x5001 dos     追加 追加
0x5023 eComStation 0x5023 eComStation 同じ 同じ
0x5024 eComStation2 0x5024 eComStation2 同じ 同じ
0x5029 Fedora 0x5029 Fedora 同じ 同じ
0x502A Fedora-64 0x502A Fedora-64 同じ 同じ
0x5030 flatcar-64 0x5030 flatcar-64 同じ 同じ
0x5047 freeBSD 0x5042 freeBSD 異なる 同じ
0x5048 freeBSD-64 0x5043 freeBSD-64 異なる 同じ
0x5049 freeBSD11 0x5044 freeBSD11 異なる 同じ
0x504A freeBSD11-64 0x5045 freeBSD11-64 異なる 同じ
0x504B freeBSD12 0x5046 freeBSD12 異なる 同じ
0x504C freeBSD12-64 0x5047 freeBSD12-64 異なる 同じ
0x504D freeBSD13 0x5048 freeBSD13 異なる 同じ
0x504E freeBSD13-64 0x5049 freeBSD13-64 異なる 同じ
0x5050 freeBSD14 0x504B freeBSD14 異なる 同じ
0x5051 freeBSD14-64 0x504C freeBSD14-64 異なる 同じ
0x5053 freeBSD15     追加 追加
0x5054 freeBSD15-64     追加 追加
0x5025 linux 0x5025 linux 同じ 同じ
0x5094 linuxMint-64 0x5087 linuxMint-64 異なる 同じ
0x500C longhorn 0x500C longhorn 同じ 同じ
0x500D longhorn-64 0x500D longhorn-64 同じ 同じ
0x5029 mandrake 0x5029 mandrake 同じ 同じ
0x502A mandrake-64 0x502A mandrake-64 同じ 同じ
0x5029 mandriva 0x5029 mandriva 同じ 同じ
0x502A mandriva-64 0x502A mandriva-64 同じ 同じ
0x5070 netware4 0x5068 netware4 異なる 同じ
0x5071 netware5 0x5069 netware5 異なる 同じ
0x5072 netware6 0x506A netware6 異なる 同じ
0x5029 nld9 0x5029 nld9 同じ 同じ
0x5006 nt4 0x5006 nt4 同じ 同じ
0x5029 oes 0x5029 oes 同じ 同じ
0x506E openserver5 0x5066 openserver5 異なる 同じ
0x506E openserver6 0x5066 openserver6 異なる 同じ
0x5029 opensuse 0x5029 opensuse 同じ 同じ
0x502A opensuse-64 0x502A opensuse-64 同じ 同じ
0x507D oraclelinux 0x5075 oraclelinux 異なる 同じ
0x507E oraclelinux-64 0x5076 oraclelinux-64 異なる 同じ
0x5084 oraclelinux10-64     追加 追加
0x507F oraclelinux6 0x5077 oraclelinux6 異なる 同じ
0x5080 oraclelinux6-64 0x5078 oraclelinux6-64 異なる 同じ
0x5081 oraclelinux7-64 0x5079 oraclelinux7-64 異なる 同じ
0x5082 oraclelinux8-64 0x507A oraclelinux8-64 異なる 同じ
0x5083 oraclelinux9-64 0x507B oraclelinux9-64 異なる 同じ
0x5022 os2 0x5022 os2 同じ 同じ
0x5022 os2experimental 0x5022 os2experimental 同じ 同じ
0x5038 other 0x5035 other 異なる 同じ
0x5039 other-64 0x5036 other-64 異なる 同じ
0x5027 other24xlinux 0x5027 other24xlinux 同じ 同じ
0x5028 other24xlinux-64 0x5028 other24xlinux-64 同じ 同じ
0x5029 other26xlinux 0x5029 other26xlinux 同じ 同じ
0x502A other26xlinux-64 0x502A other26xlinux-64 同じ 同じ
0x502B other3xlinux 0x502B other3xlinux 同じ 同じ
0x502C other3xlinux-64 0x502C other3xlinux-64 同じ 同じ
0x502D other4xlinux 0x502D other4xlinux 同じ 同じ
0x502E other4xlinux-64 0x502E other4xlinux-64 同じ 同じ
0x502F other5xlinux 0x502F other5xlinux 同じ 同じ
0x5030 other5xlinux-64 0x5030 other5xlinux-64 同じ 同じ
0x5032 other6xlinux 0x5032 other6xlinux 同じ 同じ
0x5033 other6xlinux-64 0x5033 other6xlinux-64 同じ 同じ
0x5035 other7xlinux     追加 追加
0x5036 other7xlinux-64     追加 追加
0x5025 otherlinux 0x5035 otherlinux 異なる 同じ
0x5026 otherlinux-64 0x5036 otherlinux-64 異なる 同じ
0x5029 redhat 0x5029 redhat 同じ 同じ
0x5045 rhel10-64     追加 追加
0x5027 rhel2 0x5027 rhel2 同じ 同じ
0x5027 rhel3 0x5027 rhel3 同じ 同じ
0x5028 rhel3-64 0x5028 rhel3-64 同じ 同じ
0x5029 rhel4 0x5029 rhel4 同じ 同じ
0x502A rhel4-64 0x502A rhel4-64 同じ 同じ
0x5029 rhel5 0x5029 rhel5 同じ 同じ
0x502A rhel5-64 0x502A rhel5-64 同じ 同じ
0x5041 rhel6 0x503E rhel6 異なる 同じ
0x5042 rhel6-64 0x503F rhel6-64 異なる 同じ
0x5041 rhel7 0x503E rhel7 異なる 同じ
0x5042 rhel7-64 0x503F rhel7-64 異なる 同じ
0x5042 rhel8-64 0x503F rhel8-64 異なる 同じ
0x5043 rhel9-64 0x5040 rhel9-64 異なる 同じ
0x5030 rockyLinux-64 0x5030 rockyLinux-64 同じ 同じ
0x5027 sjds 0x5027 sjds 同じ 同じ
0x5029 sles 0x5029 sles 同じ 同じ
0x502A sles-64 0x502A sles-64 同じ 同じ
0x5029 sles10 0x5029 sles10 同じ 同じ
0x502A sles10-64 0x502A sles10-64 同じ 同じ
0x5029 sles11 0x5029 sles11 同じ 同じ
0x502A sles11-64 0x502A sles11-64 同じ 同じ
0x5029 sles12 0x5029 sles12 同じ 同じ
0x502A sles12-64 0x502A sles12-64 同じ 同じ
0x502C sles15-64 0x502C sles15-64 同じ 同じ
0x5030 sles16-64 0x5030 sles16-64 同じ 同じ
0x5059 solaris10 0x5051 solaris10 異なる 同じ
0x505A solaris10-64     追加 追加
0x505B solaris11-64 0x5053 solaris11-64 異なる 同じ
0x5056 solaris6 0x504E solaris6 異なる 同じ
0x5056 solaris7 0x504E solaris7 異なる 同じ
0x5057 solaris8 0x504F solaris8 異なる 同じ
0x5058 solaris9 0x5050 solaris9 異なる 同じ
0x5029 suse 0x5029 suse 同じ 同じ
0x502A suse-64 0x502A suse-64 同じ 同じ
0x5029 turbolinux 0x5029 turbolinux 同じ 同じ
0x502A turbolinux-64 0x502A turbolinux-64 同じ 同じ
0x503B ubuntu 0x5038 ubuntu 異なる 同じ
0x502A ubuntu-64 0x502A ubuntu-64 同じ 同じ
0x506F unixware7 0x5067 unixware7 異なる 同じ
0x5073 vmkernel 0x506B vmkernel 異なる 同じ
0x5074 vmkernel5 0x506C vmkernel5 異なる 同じ
0x5075 vmkernel6 0x506D vmkernel6 異なる 同じ
0x5076 vmkernel65 0x506E vmkernel65 異なる 同じ
0x5077 vmkernel7 0x506F vmkernel7 異なる 同じ
0x5079 vmkernel8 0x5071 vmkernel8 異なる 同じ
0x507B vmware-photon-64 0x5073 vmware-photon-64 異なる 同じ
0x5008 whistler 0x5008 whistler 同じ 同じ
0x5007 win2000 0x5007 win2000 同じ 同じ
0x5007 win2000AdvServ 0x5007 win2000AdvServ 同じ 同じ
0x5007 win2000Pro 0x5007 win2000Pro 同じ 同じ
0x5007 win2000Serv 0x5007 win2000Serv 同じ 同じ
0x5002 win31     追加 追加
0x5003 win95     追加 追加
0x5004 win98 0x5004 win98 同じ 同じ
0x5017 windows11-64 0x5017 windows11-64 同じ 同じ
0x5019 windows12-64 0x5019 windows12-64 同じ 同じ
0x501E windows2019srv-64 0x501E windows2019srv-64 同じ 同じ
0x501F windows2019srvNext-64 0x501F windows2019srvNext-64 同じ 同じ
0x5020 windows2022srvNext-64 0x5020 windows2022srvNext-64 同じ 同じ
0x5010 windows7 0x5010 windows7 同じ 同じ
0x5011 windows7-64 0x5011 windows7-64 同じ 同じ
0x501B windows7srv-64 0x501B windows7srv-64 同じ 同じ
0x5012 windows8 0x5012 windows8 同じ 同じ
0x5013 windows8-64 0x5013 windows8-64 同じ 同じ
0x501C windows8srv-64 0x501C windows8srv-64 同じ 同じ
0x5014 windows9 0x5014 windows9 同じ 同じ
0x5015 windows9-64 0x5015 windows9-64 同じ 同じ
0x501D windows9srv-64 0x501D windows9srv-64 同じ 同じ
0x5021 winHyperV 0x5021 winHyperV 同じ 同じ
0x5005 winMe 0x5005 winMe 同じ 同じ
0x500A winNetBusiness 0x500A winNetBusiness 同じ 同じ
0x500A winNetDatacenter 0x500A winNetDatacenter 同じ 同じ
0x500B winNetDatacenter-64 0x500B winNetDatacenter-64 同じ 同じ
0x500A winNetEnterprise 0x500A winNetEnterprise 同じ 同じ
0x500B winNetEnterprise-64 0x500B winNetEnterprise-64 同じ 同じ
0x500A winNetStandard 0x500A winNetStandard 同じ 同じ
0x500B winNetStandard-64 0x500B winNetStandard-64 同じ 同じ
0x500A winNetWeb 0x500A winNetWeb 同じ 同じ
0x5006 winNT 0x5006 winNT 同じ 同じ
0x500C winServer2008Cluster-32 0x500C winServer2008Cluster-32 同じ 同じ
0x500D winServer2008Cluster-64 0x500D winServer2008Cluster-64 同じ 同じ
0x500C winServer2008Datacenter-32 0x500C winServer2008Datacenter-32 同じ 同じ
0x500D winServer2008Datacenter-64 0x500D winServer2008Datacenter-64 同じ 同じ
0x500C winServer2008DatacenterCore-32 0x500C winServer2008DatacenterCore-32 同じ 同じ
0x500D winServer2008DatacenterCore-64 0x500D winServer2008DatacenterCore-64 同じ 同じ
0x500C winServer2008Enterprise-32 0x500C winServer2008Enterprise-32 同じ 同じ
0x500D winServer2008Enterprise-64 0x500D winServer2008Enterprise-64 同じ 同じ
0x500C winServer2008EnterpriseCore-32 0x500C winServer2008EnterpriseCore-32 同じ 同じ
0x500D winServer2008EnterpriseCore-64 0x500D winServer2008EnterpriseCore-64 同じ 同じ
0x500C winServer2008SmallBusiness-32 0x500C winServer2008SmallBusiness-32 同じ 同じ
0x500D winServer2008SmallBusiness-64 0x500D winServer2008SmallBusiness-64 同じ 同じ
0x500C winServer2008SmallBusinessPremium-32 0x500C winServer2008SmallBusinessPremium-32 同じ 同じ
0x500D winServer2008SmallBusinessPremium-64 0x500D winServer2008SmallBusinessPremium-64 同じ 同じ
0x500C winServer2008Standard-32 0x500C winServer2008Standard-32 同じ 同じ
0x500D winServer2008Standard-64 0x500D winServer2008Standard-64 同じ 同じ
0x500C winServer2008StandardCore-32 0x500C winServer2008StandardCore-32 同じ 同じ
0x500D winServer2008StandardCore-64 0x500D winServer2008StandardCore-64 同じ 同じ
0x500C winServer2008Web-32 0x500C winServer2008Web-32 同じ 同じ
0x500D winServer2008Web-64 0x500D winServer2008Web-64 同じ 同じ
0x500E winVista 0x500E winVista 同じ 同じ
0x500F winVista-64 0x500F winVista-64 同じ 同じ
0x5008 winXPHome 0x5008 winXPHome 同じ 同じ
0x5008 winXPPro 0x5008 winXPPro 同じ 同じ
0x5009 winXPPro-64 0x5009 winXPPro-64 同じ 同じ

この Guest OS ID は対象となるゲスト OS のプロダクトに対して値が割り当てられていますが、実は 1 対 1 になっているようでなっていません。これは現在のバージョンと次の機能追加されたバージョンのように一部変更があった場合に付与されて識別されるようになっていて、例えば 同じな名前でもベースのカーネルが変わったりした場合に識別できるようにしているようです。また逆に別の Guest OS ID が割り当てられているけれど同じとして扱われるものもあります。これから推測しても vmx ファイルに記述される guestOS パラメーターはしっかり意味があるけれど Guest OS IDは処理に利用するために便宜的に付与されているだけというのが見えてきます。そしてゲスト OS 固有の機能を使う仮想マシンを作る際にはメモリ上に読み込まれたこの Guest OS ID を参照し適切な値を設定して処理されるというのがわかってきます。なので Guest OS ID が付与されていないオペレーティングシステムや適切な Guest OS ID を設定していない仮想マシンでは VMware Workstation Player 17 で動かすことは可能ですが、使用しているゲスト OS に対して適切な動作を保証するものではないということになります。

vmx ファイルはどこで読み取られるの?

VMware Workstation Player 17 が起動される最初のプログラムは、フォルダー C:\Program Files (x86)\VMware\VMware Player にある vmplayer.exe です。このプログラムでは VMware Workstation Player 17 自体の起動と各種動作に必要なサブプログラムのコントロールなどを行っています。なので、この vmplayer.exe の中には vmx ファイルにある関する情報は扱いません。vmx ファイルにある情報を扱うのはあくまでもフォルダー C:\Program Files (x86)\VMware\VMware Player\x64 にある vmware-vmx.exe 他が行います。このフォルダー内には仮想マシンを起動する際に使用される ROM、仮想インターフェースの ROM などが含まれており、VMware Workstation Player 17 で仮想マシンを実行する際の重要なファイルが集められています。(Docker などはフォルダー C:\Program Files (x86)\VMware\VMware Player\bin に、kvm は C:\Program Files (x86)\VMware\VMware Player に含まれていたりしますが、これらはメインではなくて後々に追加されたものなのでバラバラなのか、それとも意図してそこに置いてあるのかはわかりません。)

なお、VMware Workstation Pro 17 の起動ファイルは vmware.exe です。それ以外のファイルの配置は VMware Workstation Pro 17 も VMware Workstation Player 17 も同じ場所にあります。

※これら2つはそれぞれ VMware KVM Mode、VMware Workstation Container という別の機能になりますので別においているのだと考えています。

なんで VMware Workstation Pro 17 の実行ファイルは vmware.exe なの?

これは VMware が創業した時に最初に製品化した VMware というプロダクトに付けたファイル名がそのまま残っているからです。手元にその最初のプロダクトもありますが、それもしっかり「vmware.exe」となっていました。なのでその後のデスクトップハイパーバイザーはその新しいバージョンという位置づけなので、そのままの名称を使い「vmware.exe」というファイル名になっているのだろうと思います。そしてそのサブセットとして機能の一部を削除して新たに作成された VMware Workstation Player は「vmplayer.exe」という新しい名前になっているわけです。会社の歴史が見える製品、それがデスクトップハイパーバイザーに残っているというのは面白いですね。
この辺りは以前の記事に書いてありますのでご興味あればご覧ください。

imaisato.hatenablog.jp

VMware Workstation Pro/Player と Fusion の今後は

VMwareBroadcom に買収されて、多くのプロダクトが今後どうなるか気になる状態になりましたが、VMware Workstation Pro/Player そして Fusion については 12月11日に以下の記事が出ました。

blogs.vmware.com

 内容を要約すると、「VMware by Broadcom は、現在から将来にわたってデスクトップ ハイパーバイザー製品とプラットフォームに重点を置き取り組みます。」とのことで、私たちユーザーは、今までと同様に引き続きデスクトップ ハイパーバイザー アプリを購入したり Workstation および Fusion の無償製品である Player を「個人使用無料」のエディションを引き続きダウンロードして使用することができるとありました。これらを常用している私を含めてみなさんはほっと一安心です。

次は年明け、何を書いていくかはこれから考えていきますが、VMware がどのように変化していくかは気になるので、これからもウォッチしていくことになりそうです。