VMware Player in docker container on NixOS

読了まで:約3分


と​いう​組み合わせで、

VMware Workstation Player を​ NixOS で​動作させる

と​いう​コトに​成功したので、​今日は​その​話を​書きます。

証拠​(Screenshot)

VMware Player in docker container on NixOS

参考に​して​欲しい​ファイル類​(configuration.nix)

そもそも​何故 VMware Player は​ NixOS での​動作が​困難なのか

具体的には、​下記の​理由に​拠ります:

  1. VMware Player の​インストーラーが​ NixOS の​様な​ Linux Distro を​想定していない
  2. その​ため、​通常の​方法では​インストールする​ことすら出来ない
  3. そして、​仮に​インストーラーを​なんとか​しても、​NixOS の​流儀では​ suid 周りで​詰る

まぁ​簡素に​書くと​こういう​事なんですが、​もう​少し​具体的に​書くと​:

  • NixOS は​システムディレクトリが​ Read-only で​ Writable ではない​
    • システムディレクトリが​ Writable な​事を​想定している​ソフトウェアは​動作不可
    • VMware Workstation​(Player)​辺りの​インストーラーは​まず​ここに​引っ掛かる
  • 次に、​NixOS の​特性故に、​VMware インストーラーの​正常動作が​相当に​困難​(だった)​
    • NixOS の​システムディレクトリ構造は、​通常の​ Linux と​大分異なっている
    • その​ため、​主に​実行ファイルの​パスも​要因で​インストール作業が​出来なかった
  • 最後に、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 で​折り合いが​付かない​部分を​なんとか​してみよう!

と​思いついたので、​実際に​今回の​作業で​やってみたら​出来た、と​言う​感じです。​はい。

以上

まぁ、​細かい​設定ファイルなどに​ついては、

辺りを​参照してください。

また​上記設定ファイルは​自分用に​設定してあるので、​ 各自応用する​際に​その​辺りの​調整は​必要に​なるだろう、と​思います。​はい。

アバターアイコン兼ロゴ

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。次に備えて待機中。

今は趣味でプログラミングをして生活しています。