という組み合わせで、
VMware Workstation Player を NixOS で動作させる
というコトに成功したので、今日はその話を書きます。
証拠(Screenshot)
VMware Player in docker container on NixOS
参考にして欲しいファイル類(configuration.nix)
Naoki OKAMURA / nixos-configurations · GitLab
そもそも何故 VMware Player は NixOS での動作が困難なのか
具体的には、下記の理由に拠ります:
- VMware Player のインストーラーが NixOS の様な Linux Distro を想定していない
- そのため、通常の方法ではインストールすることすら出来ない
- そして、仮にインストーラーをなんとかしても、NixOS の流儀では suid 周りで詰る
まぁ簡素に書くとこういう事なんですが、もう少し具体的に書くと:
- NixOS はシステムディレクトリが Read-only で Writable ではない
- 次に、NixOS の特性故に、VMware インストーラーの正常動作が相当に困難(だった)
- 最後に、
vmware-vmxは suid が付いた root executable permission を要求する- が、NixOS だとその辺りも色々独特なので、これも動作出来ない要因の 1 つ
- まぁ色々試したんだけど、これをどうにかは NixOS では出来なかった
という感じです。つらい。
ではどうやって NixOS で VMware Player を動作させたか
これはシンプルにこうしました:
- NixOS 側では VMware の host kernel modules のみインストール させる
- 次に NixOS で docker を有効にして、VMware Workstation Player 用のコンテナを作る
- 最後に、VMware Player のコンテナに特権とデバイスファイルを渡して起動 する
基本、VMware Workstation Player がホスト側に要求する仕様としては、
- VMware 用の Linux Host Kernel Module が正常に動作していること
vmware-vmxが suid root で起動できることvmware-vmxも含め、VMware のソフトウェアがデバイスファイルを触れること
の 3 要素だけっぽかったので、VMware の Linux host kernel module は NixOS に組み込み、
他を docker の ubuntu:18.04 コンテナに任せることで NixOS 特有の制限を回避するという方法でなんとかしました。
実際にやってみた感想
そもそも、なんで VMware Player を NixOS で動作させようかと思ったかと言うと、
VirtualBox にしろ KVM で dGPU Passthrough にしろ、VM の 3D Acceleration がつらい
というのがあり、Windows 10 Pro を VM で使い込むにはちょっと力不足だった、というのが有ります。 そのため、VMware が使えないと Windows 10 Pro が使いモノにならない、という状況がありました。
また、私は過去に何度か VMware Workstation Player を NixOS で動作させようとしては失敗しており、 何回目かの失敗の時、
そうだ! docker container を使って NixOS で折り合いが付かない部分をなんとかしてみよう!
と思いついたので、実際に今回の作業でやってみたら出来た、と言う感じです。はい。
以上
まぁ、細かい設定ファイルなどについては、
overlays/experimental · master · Naoki OKAMURA / nixos-configurations · GitLab
辺りを参照してください。
また上記設定ファイルは自分用に設定してあるので、 各自応用する際にその辺りの調整は必要になるだろう、と思います。はい。