VMware Workstation Player 17 の中身を見る : ゲスト OS 識別 2023年編
本記事は、「vExperts Advent Calendar 2023」の最終日用として書いた記事です。
202年の年の瀬も迫ってきていろいろと忙しくなる時期ですが、そんなときに限って好きなことや興味を持ったことをいろいろと調べ Dive deep したりしてしまいます。
昨年は
一昨年は
こんなことを、その前の年は
なことをやっていました。しかし残念なことに今年は vExpert Desktop Hypervisor が無くなってしまっていたので、ブログの更新もモチベーション下がってやる元気なくなってしまったのと、鉄道趣味の方に全力投球をしていたためほぼこちらのブログの更新も止まってしまっていました。ということで、今年の Advent calendar 用に VMware Workstation 17 Player の中身を見るというテーマで記事を書いてみます。
VMware Workstation 17 Player とは
VMware Workstation 17 Player とは、有償で利用でき VMware Workstation 17 Pro のサブセットで、1つの仮想マシンだけを動かすことのできる無償のデスクトップハイパーバイザーです。
この記事執筆の時点の最新版は Build 22631.2715 で、以下のページからダウンロードができます。
VMware Workstation Player は2つのライセンス形態があり、商用以外での利用および個人利用の場合は無償バージョンを利用することができます。また学校の場合の生徒や学生そして非営利組織も無償で利用することが出来るものです。
それに対して企業や営利団体など商業組織で利用する場合は、別途商用ライセンスの購入が必要になります。なので会社で仕事をしているときに「仮想環境使いたいなぁ。そうだ、VMware Workstation Player を入れて使おう!」は個人利用ではなく業務利用になるので、別途有償ライセンスを購入する必要があります。
「VMware Workstation 17 Player の中身を見る」とは
私自身 VMware 創業時から VMware Workstation を使い続けていて、新しいバージョンが出るたびにいろいろな機能が追加されていくということと、それに伴って vmx ファイルに記述されるパラメーターが増えているのがずっと気になっていました。これ、プログラムの中でどのように読み取っているのかなと。また、それぞれのパラメーターの設定はどんなのがあるのかなということも気になっていて、いろいろな情報をあさってみたのですがなかなか細かく書かれてるものにたどり着けません。いくつかの情報は以下のようなサイトに書かれているのですが最新のものは見当たらない。
- vSphere 4.1 - Documented and Undocumented VMware Virtual Machine .vmx Parameters (1288 Total) Generated by William Lam
https://s3.amazonaws.com/virtuallyghetto-download/hidden_vmx_params.html
昨年の春に 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 の選択」は上記のように適当なものを選んでも仮想マシンを作成することが出来、また起動することもできてしまいます。これ、何の役に立っているのと疑問に思ったりしながら「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」という新しい名前になっているわけです。会社の歴史が見える製品、それがデスクトップハイパーバイザーに残っているというのは面白いですね。
この辺りは以前の記事に書いてありますのでご興味あればご覧ください。
VMware Workstation Pro/Player と Fusion の今後は
VMware は Broadcom に買収されて、多くのプロダクトが今後どうなるか気になる状態になりましたが、VMware Workstation Pro/Player そして Fusion については 12月11日に以下の記事が出ました。
内容を要約すると、「VMware by Broadcom は、現在から将来にわたってデスクトップ ハイパーバイザー製品とプラットフォームに重点を置き取り組みます。」とのことで、私たちユーザーは、今までと同様に引き続きデスクトップ ハイパーバイザー アプリを購入したり Workstation および Fusion の無償製品である Player を「個人使用無料」のエディションを引き続きダウンロードして使用することができるとありました。これらを常用している私を含めてみなさんはほっと一安心です。
次は年明け、何を書いていくかはこれから考えていきますが、VMware がどのように変化していくかは気になるので、これからもウォッチしていくことになりそうです。