WSL2とVirtualBoxの現状

1.WSL2とVirtualBoxの現状

WSL2を有効にしたときにVirtualBoxはどうなのか確認してみました。

結果から言うと、不安定で使えなかったです。

デスクトップが表示されるところまでは行きます。でも、画面の大きさを変えたり、sudo apt upgradeしてもsegmentation faultで止まったりします。

フォーラムでの開発者の発言を聞いていると、とりあえず動くようにはしたけどといった発言が見られます。開発の優先順位は低くて、あまり活発に開発しているようには見えません。

また、安定してきたら試してみようと思います。

2.Hyper-VとVirtualBoxのこれまでの関係

VirtualBoxは、Windows 10 1809のときにHyper-Vに対応しました。VirtualBoxのバージョンは、6.0.0です。

Windows 10 1903のときに、MicrosoftがAPIを変更してしまって、VirtualBoxは動かなくなりました。この変更は、すべての処理をユーザーモードで行うことを強制するものです。VirtualBoxの開発者の方の話では、全てをユーザーモードで処理するのは耐えられないそうです。I/Oのパフォーマンスが出ないそうです。

VirtualBox 6.1.0になって、VirtualBoxとしての最適化は無しでまた動くようにはしたそうです。けれど、自分の方で試した限りでは安定して動いていません。フォーラムを見ていると不具合報告も出ていますが、開発者サイドでは不具合が出ていなくて、特に対応もしていないようです。

3.まとめ

WSL2とVirtualBoxの現状を確認しました。残念ですが、安定して動作していません。

また、安定したら試してみようと思います。

WSL2とVMware Workstation Player 15.5.5の共存を確認

1.WSL2とVMware Workstation Player 15.5.5の共存を確認

WSL2(Windows Subsystem for Linux 2)とVMware Workstation Player 15.5.5の共存を確認しました。

前回WSL2のインストールまでやりましたが、VMware Workstation Playerをインストールしたら動作を確認できました。

2.WSL2とVMware Workstation Playerを共存させるとき注意すること

注意するべき点が2点あります。

  1. WSL2を有効にする前にVMware Workstation PlayerのゲストOSの電源を切っておくこと
  2. Intel VT-x/EPTまたはAMD-V/RVIを仮想化のチェックを外しておくこと

WSL2を有効にする前に電源を切っておきましょう。一度、VMware Workstation Player 15.5.5で起動すれば、WSL2の有効と無効に関係なくサスペンドと復帰を繰り返すことができます。しかし、最初だけ念のため切っておいたほうがいいです。

サスペンドの状態にしたままの場合、次の方法で電源を切りましょう。

管理者としてPowerShellを開きます。

bcdedit /set hypervisorlaunchtype off

パソコンを再起動します。すると、WSL2が一時的に無効になっていますので、ゲストOSを起動し電源を切ります。

このあと、もう一度管理者としてPowerShellを開きます。

bcdedit /set hypervisorlaunchtype auto

これで、WSL2が有効になりますので、パソコンを再起動します。

2番めのチェックは、ゲストOSの設定->ハードウェアー>プロセッサー>仮想化エンジンのところにあります。

3.エラーの詳細

Intel VT-x/EPTまたはAMD-V/RVIを仮想化のチェックを忘れてゲストOSを起動すると、次のようなエラーが出ます。

パワーオン中にエラーが発生しました:VMware Playerはこのホスト上でネストされた仮想化をサポートしていません。

また、VMware Workstation Player 15.5.5以前のものを使っていると、次のようなエラーが出ます

VMware PlayerとDevice/Credential Guardには互換性がありません。

4.まとめ

WSL2を有効にしてもVMware Workstation Playerが動くことで、どちらも使うことができていいですね。

VMwareは、Hyper-VのHypervisorの上で動作しているというこで、ネストされた仮想化を使うことができませんが、凝ったことをしたいときはWSL2を無効にすることで対処できそうです。

WSL2の有効無効に関係なく、ゲストOSのサスペンドと復帰が使えるのが便利です。

もう少し使って、安定性など使い勝手を検証してみたいと思います。

Windows 10 May 2020 UpdateでWSL2(Windows Subsystem for Linux 2)の始め方

1.はじめに

Windows 10 を May 2020 Updateへの更新が開始されました。WSL2(Windows Subsystem for Linux 2)が正式にサポートされます。そこで、まずWSL2を使えるようにすることにしました。

2.Windows 10 May 2020 Updateへのアップデート

May 2020 Updateへの更新は、Windows Updateを通じて行われます。首を長くして待っていたのですが、Windows Updateのページに表示されません。そこで、手動でアップデートすることにしました。

ただ、すでに不具合も報告されています。

Windows 10, version 2004 and Windows Server, version 2004

Intelの内蔵GPUを使っていると、DirectX 9を使ったゲームで可変リフレッシュレートが有効になりません。

また、Nvidiaの古いディスプレイドライバ358.00以前を使っているとブルースクリーンになる。

というものです。自分のPCは、Intelの内蔵GPUを使っているのですが、ゲームをやらないのでアップデートを実行しました。

3.WSL2のインストール

WSL2のインストールは、コマンドラインでやる方法と、設定をマウスでクリックする方法があります。今回は、コマンドラインの方法を使いました。

管理者としてPowerShellを開き、Microsoft-Windows-Subsystem-LinuxとVirtualMachinePlatformを有効にします。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

PCを再起動します。

もう一度管理者としてPowerShellを開きます。WSL2を既定のバージョンとして設定します。

wsl --set-default-version 2

このときに次のようなエラーが出ます。

WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください

表示されたサイトに行って、Linuxカーネルをインストールします。もう一度規定のバージョンを実行します。次のようなメッセージが出れば成功です。今後、Linuxカーネルのインストールは、Windows Updateで更新される予定のようです。

WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください

4.ゲストOSのインストール

ゲストOSは、Microsoft Storeからインストールします。

Microsoft Storeを立ち上げ、Ubuntuを検索します。Ubuntu 20.04 LTSをインストールしました。Ubuntuのみの表示のものは、最新のUbuntuを示しています。Ubuntu 20.04 LTSと同じですが、バージョン番号があったほうが便利なので、番号の表示付きのものを選びました。

インストールが完了するとスタートメニューにUbuntu 20.04 LTSが登録されます。最初の起動時にユーザー名とパスワードを聞かれますので、登録してください。

実際に使ってみると、Linuxのカーネルが起動したあとinitプロセスが動いているくらいで、本当に最小のLinuxシステムが起動しています。サーバーやアプリケーションもほとんど入っていなくて、自分でインストールしなければいけません。これだったら、1,2秒で起動するのも当たり前だなと思いました。

5.まとめ

Windows 10 May 2020 Updateで、WSL2のインストールと起動を確認しました。今後、いろいろ使ってみようと思っています。

WSL2やHyper-Vと共存できるVMware Workstation Player 15.5.5が公開されました

Windows 10 の大型アップデート20H1(May 2020 Update)の配信が開始されました。このアップデートでは、WSL2(Windows Subsystem for Linux 2)が正式にサポートされます。それに伴って、WSL2やHyper-Vと共存できるVMware Workstation Pro/Player 15.5.5が公開されました。

VMwareのブログ記事
VMware Workstation 15.5 Now Supports Host Hyper-V Mode

ダウンロード
ダウンロード VMware Workstation Player

サポートされるCPUやOSは以下のとおりです。開発段階では、Intel Haswell以降ということだったので、サポートされるCPUの範囲が増えています。

サポートされるCPU
Intel Sandy Bridgeより新しいCPU
AMD Bulldozerより新しいCPU

サポートされるOS
Windows 10 20H1 build 19041.264より新しいOS

サポートされるVMware Workstation Player
バージョン15.5.5以上

ブログの記事を簡単に訳すと次のようになります。

これまで、Credential Guard, Device Guardを含むHyper-Vを有効にすると、VMware Workstationは動かなくなっていた。そこで、Microsoftと協力してMicrosoft Windows Hypervisor Platform(WHP)を使った方法を開発した。

VMware Workstationは、これまでVMM(Virtual Machine Monitor)をCPUの特権モードで使うことで、Intel VT-x, AMD AMD-Vを使ってきた。ところが、Windowsがhost VBS(Virtualization Based Security)を開発して、Windowsとハードウェアの間にHyper-VをベースにしたHypervisorの層を挟んできた。そのため、VMware Workstationは動かなくなっていた。

これを修正するために、VMwareはVMMをユーザーレベルで実行し、WHP APIを使うように変更した。

Hyper-Vに関連する技術が有効のときは、ユーザーレベルのモードでVMware Workstationは実行され、無効のときはこれまでのVMMが実行される。このため、ユーザーはどちらで実行するのかを選択する必要がない。

簡単に言うと、Windows APIを実行し、Hyper-Vのhypervisorの上でVMwareが動作していることになります。動作の安定性に一抹の不安がありますが、今後の様子を見守っていきましょう。

さっそく試してみたいですね。試したら報告します。

Hyper-VやWSL2との共存に対応したVMware Workstationのプレビューが発表

2020年春公開予定のWindows 10で、WSL2(Windows Subsystem for Linux 2)が装備されます。

VMware Workstationは対応していないため、WSL2と同時実行できないことが問題。

VMwareが対応するVMware Workstaionのプレビューを公開しています。

VMware Workstation Tech Preview 20H1 - Hyper-V/Host VBS Support

必要な条件は、ソフトウェアは、

Windows 10 20H1 from Windows insider program.
Minimum build number: 19041

ハードウェアは、

Intel Haswell or newer CPU
AMD Bulldozer or newer CPU

です。

Windows insider programが必要ということで、簡単に試すことができませんが、開発が進んでいることがわかります。

できれば、VMware Workstation Playerでも対応してもらえるとありがたいですね。

すごく期待しています。

VirtualBox 6.1でIntel CPU上のNested Virtualizationがサポート

はじめに

VirtualBox 6.1でIntel CPU上のNested Virtualizationがサポートされました。

早速使ってみました。ゲストOSが動くことは動くのですが、とても遅いです。そこがちょっと残念。

公式にサポートされているのは、VirtualBox 6.1.0上でVirtualBox 6.1.0を動かすことです。

また、第5世代Core iプロセッサー以降のCPUがサポート対象です。

試した結果

こちらで確認できたのは次の2つです。実マシン上をLevel 0として、ゲストをLevel 1とLevel 2で表します。

なお、実マシンはCore i5 9400の自作PCです。

Level 1 ゲストのVirtualBoxで、ネステッドVT-x/AMD-Vを有効化にチェックが入っていないといけません。
Level 2 ゲストではグレーになってチェックできないようになっています。

VirtualBox上でVirtualBoxを動かす

Windows 10上のVirtualBox 6.1.0で、Ubuntu 18.04を動かし、そのUbuntu上でUbuntu 18.04のLiveCDは動きました。
また、2時間ほどかけてインストールもやってみましたが、正常に終了。

Level 0: Windows 10 VirtualBox 6.1.0
Level 1: Ubuntu 18.04 VirtualBox 6.1.0
Level 2: Ubuntu 18.04

どうして遅いのかをチェック。まず、sysbenchでCPUのスピードをチェック。
sysbenchというベンチマークソフトウェアで測定すると、
Level 1 ゲスト: 1398
Level 2 ゲスト: 1243
1243/1398 = 0.89
でした。
大体89%のスピードで動いているわけですが、体感的にはもっと遅く感じます。

次に、dbenchでディスクI/Oをチェック。Windows上で、シーケンシャルRead/シーケンシャルWrite = 500MB/s / 300MB/sくらい出るSSDを使っています。dbenchでスループットを測定すると、
Level 1 ゲスト: 152MB/s
Level 2 ゲスト: 20MB/s
でした。
ということで、ディスクアクセスが極端に遅くなっていることがわかりました。原因としては、NTFSファイルシステム上のext4ファイルシステム上のext4ファイルシステムということで、ファイルシステムを入れ子にしていることが考えられます。VirtualBoxに、SSDのパーティションを直接アクセスさせる方法があります。Rawハードディスクアクセスという方法です。マニュアルを調べてみると、MBR形式のハードディスクのパーティションは指定できるけれど、GPT形式のハードディスクの記述はないみたいですね。SSDを1つまるごと使うほかないのかな。それを使うと改善されるような気がします。

少しでも速くならないかとLevel 1 ゲストのVirtualBoxで、CPUプロセッサ数を2にしたところ、Level 1 ゲストごとフリーズしました。プロセッサ数は1でないと起動しないみたいです。

KVMを試す

また、KVMを試したところ、Ubuntu上のKVMでFedora 10のResucue CDは動きました。
でも、これは公式にはサポートされていません。

Level 0: Windows 10 VirtualBox 6.1.0
Level 1: Ubuntu 18.04 KVM
Level 2: Fedora 10

まとめ

Intel CPU上のNested Virtualizationを確認しました。安定して動いています。
Level 1 ゲストのVirtualBoxでCPUプロセッサ数を2にするとフリーズします。
まだVirtualBox上のVirtualBoxしかサポートされず、サポート範囲が狭いです。
KVMは一応動作します。
ゲストOSを入れ子にすることで、CPUは89%のスピードで動いています。
ディスクアクセスが極端に遅くなっていることがわかりました。対策すればなんとかなるかな。

おまけ

ちょっと技術的なことを付け加えると、Level 0のVirtualBox 6.1.0で、ゲストOSを動かしたときに、ログファイルを確認すると、VT-x featuresのVMX - Virtual-Machine Extensionsのところがhostとguestとも1になっています。guestが1になっていることがNested Virtualizationを許可するということです。

00:00:02.639739 *********************** VT-x features ***********************
00:00:02.639739 Nested hardware virtualization - VMX features
00:00:02.639740   Mnemonic - Description                                  = guest (host)
00:00:02.639740   VMX - Virtual-Machine Extensions                        = 1 (1)

また、その下の方のVmcsShadowingのところでhostが1になっています。第5世代Core iプロセッサー(Broadwell)以降でないとこの機能が使えないそうです。第4世代のHaswellの一部のプロセッサーでも有効との話がありますが、こちらでは未確認です。
UnrestrictedGuestのhostが1なことが最低でも必要だそうです。

00:00:02.639752   UnrestrictedGuest - Unrestricted guest                  = 0 (1)
00:00:02.639754   VmcsShadowing - VMCS shadowing                          = 0 (1)

ログファイルでVMXとVmcsShadowingが確認できたら、Level 1のゲストの中でLevel 2のゲストが使えると思います。

Level 1のLinuxのゲスト上では/proc/cpuinfoを確認することでもできます。

$ cat /proc/cpuinfo

これでflagsの中にvmxの文字があることを確認してください。

VMware Workstation PlayerでゲストOSのスリープからの復帰をエミュレートする

Windows 10で、フリーのバックアップソフトを使ってみたときのこと。

なぜかわからないのですが、パソコンをスリープさせると、すぐに復帰とスリープを繰り返します。

他のマシンでも同じことが起こるのか確認をするために、VMware Workstation Playerで、Windows 10 のクリーンインストールをしたあと、バックアップソフトをインストールして確認してみました。

この、スリープから復帰することを確認するのに、VMware Workstation Playerでは、ACPI S3 Sleepというスリープの状態をエミュレートすることができます。.vmxファイルに次のようなエントリを付け加えてからVMware Workstation Playerを起動します。

chipset.onlineStandby = TRUE

こちらの情報より。
VMware Workstation 5.0 Guest ACPI S1 Sleep

通常スリープすると、仮想マシンが終了してしまって電源が切れた状態になります。

このエントリを付け加えてWindows 10を起動しスリープすると、画面が黒くなったまま待機してくれて、時間が来るとスリープから復帰することを確認することができました。

実験的な実装で、すべてのOSで動くわけではないそうですが、Windows 10では大丈夫でした。ただ、タスクで復帰してもイベントビューワーでは電源ボタンが原因になっていて完全にエミュレートされているわけではないようでした。

肝心のバックアップソフトは、Windows 10のコンピューターの管理、サービスから、サービスを手動で起動することにして、Windowsの起動時にはサービスが起動しないようにすることで対処することにしました。ただ、スケジュールを使ったバックアップが使えなくなりました。

以上、VMware Workstation Playerを使って、ゲストOSのスリープからの復帰について確認するお話でした。

VMware Workstation 15.1.0 Playerにアップデート

VMware Workstation Playerを15.1.0にアップデートした。

Ubuntu 18.04、CentOS 7.6といったところは問題なく動いたけど、open-vm-toolsでは共有フォルダが使えず、手動でVMware Tools 10.3.10をインストールしました。
最近open-vm-toolsが使えなくなっている気がします。

それと、VirtualBoxでグラフィックアダプターにVMSVGAを指定していると、画面をリサイズしたときに右と下が切れてしまう現象を確認しています。VirtualBoxでVBoxVGAに設定を変えると起こらなくなります。ご注意ください。

VirtualBox 6.0.8にアップデート

VirtualBoxを5.2.30から6.0.8にアップデートした。

Ubuntu 16.04ゲストでGuestAdditionsをインストールすると、起動途中の壁紙が出たところで画面がちらついたまま安定せず、デスクトップが出てきません。設定のディスプレイで、3Dアクセラレーションを有効化をオフにしたら安定して使えるようになりました。

CentOS 7.6ゲストでは初めから3Dアクセラレーションはチェックされてなくて問題は起きませんでした。

なお、VirtualBox 6.0.4以前にUbuntuをインストールしようとすると、マウスカーソルが表示されなくなる問題が起きているそうです。以下のように設定のディスプレイでグラフィックコントローラーをVBoxVGAにして、システムのポインティングデバイスをUSBタブレットにすると回避できるそうです。

VirtualBox 6.0で作成した仮想マシンにCentOSをインストールしようとするとマウスカーソルが表示されない問題への対処

こちらで、VirtualBox 6.0.8にUbuntu 18.04をインストールしても、マウスカーソルは消えなかったです。でも、VirtualBoxを終了して、VMware Player 15.1.0を使ったときに問題が発生しました。VMware Player 15.1.0の画面をリサイズすると追随してくれなくて、右と下が切れてしまいます。位置もずれて強制的に終了するしかありません。

VirtualBox 6.0.8のUbuntu 18.04の設定で、ディスプレイのグラフィックスコントローラーをVMSVGAになっていたところを、VBoxVGAにしたところ、VMware Playerの変な挙動は直りました。VirtualBoxのグラフィックコントローラーのVMSVGAは、バグを持っている感じがします。

VMware Workstation Playerを15.0.2にアップグレード

VMware Workstation Playerの14.1.2の上で、Ubuntu 18.04とopen-vm-toolsを使っていたのですが、共有フォルダが使えなくなっていました。

そこで、VMware Workstation Player 15.0.2にアップグレードしました。すると、画面もちゃんと表示されなくなってしまいました。そこで、open-vm-toolsをアンインストールして、VMware Tools 10.3.2をインストールしました。これで、共有フォルダとコピーペーストが使えるようになりました。

open-vm-toolsがいつも使えればいいのですが、時々、使えなくなったりするのが問題ですね。そのたびに、VMware Toolsをインストールしなおしている気がします。

VMware Toolsをインストールしようとして、open-vm-toolsが入ってないのに入っていると警告が出る時は、設定ファイルが残っているかもしれません。その時は、

$ sudo apt-get purge open-vm-tools

して、設定ファイルを消すといいです。

仮想化やクラウドについて