35
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Vagrant + Virtualbox 6.1.16 と WSL2 を同時に動かしたメモ

Last updated at Posted at 2020-11-07

概要

半年前、WSL2を試して、VirtualBoxが使えなくなったので元に戻すなどしていた。
最近、WSL2が周囲に広まり始めているので、移行した。
その際、VirtualBoxが今では共存できるという記事を見つけた。
Windowsのバージョンも上げたところだったため、今回ならいけるかもと試したところ成功した。
備忘録として、手順を残す。

環境

  • Windows10 Home バージョン20H2(OS ビルド 19042.610)
  • VirtualBox 6.1.16 r140961 (Qt5.6.2)
  • Vagrant 2.2.10

作業時完了時のVagrantfile

WSL2の有効化

Windows機能の有効化

Windows ロゴ キー + Rキーでファイル名を指定して実行を立ち上げ、optionalfeaturesと入力してOKを押す。
image.png

Linux用Windowsサブシステム仮想マシンプラットフォームのチェックを入れる
スクリーンショット 2020-11-07 084534.png

Linuxカーネルの更新

管理者権限で開いたPowershellでwsl --set-default-version 2と入力して、WSL2の有効を確認しようとしたところ、カーネルが古いので更新せよとのメッセージが表示された。

Windows 10 用 Windows Subsystem for Linux のインストール ガイドの【手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする】「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」から更新用プログラムをDLして実行。

Ubuntu20のインストール

そろそろ安定しているだろうとディストリビューションはUbuntu20を選択した。

Windows 10 用 Windows Subsystem for Linux のインストール ガイドの【手順 6 - 選択した Linux ディストリビューションをインストールする】に従い、ディストリビューションをインストール。Ubuntu20を起動して、ユーザ名とパスワードを登録する。

wsl --list --verboseでインストールされたことを確認する。
image.png

VirtualBoxとの共存設定

Windows機能の有効化

Windowsハイパーバイザープラットフォームを有効にする。
これが、VirtualBoxとWSL2を共存させるために必要。

スクリーンショット 2020-11-07 094219.png

VirtualBoxのインストール

念のため、VirtualBoxはWSL2の有効化後に再インストールした。
cinst -y virtualbox

試してみる

vagrant upで起動して様子を見守った。
ネットワーク設定が何度かでて不安になるが「はい」「はい」。。。これは今までのVirtualBoxで複数のIPを使っていたからの可能性が大きい。
SSH auth method: private keyのところで止まる。

スクリーンショット 2020-11-07 095940.png

前回もここで止まっていたが、今回はVagrantfileでvm.gui=trueを入れて確認していたところ、セットアップ中でログイン画面が表示される前に落ちていた。
エラーメッセージに出ている通り、vonfig.vm.boot_timeout=300とタイムアウト時間を延ばしてやる。

成功

上記修正後、vagrant upをしたところ、SSHから先に進み、無事起動することができた。

2020/12/04追記

Windowsを再起動したところ、再び、SSH auth method: private keyで止まってしまう不具合が発生した。
Vagrant box startup timeout due to no serial portを参考にVagrantfileを修正。
少し起動に時間はかかるが、動くようになった。

Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/focal64"
  config.vm.network "private_network", ip: "192.168.50.10"
  config.vm.network "forwarded_port", guest: 9005, host: 9005

  # WSL2 を 有効化しているとき、ssh接続でタイムアウトしてしまうため追記。 2020.11.07
  config.vm.boot_timeout = 500
  config.vm.provider "virtualbox" do |vm|
    vm.memory = 8192
    vm.linked_clone = true

    vm.customize ["modifyvm", :id, "--cpus", "4", "--ioapic", "on"]
    vm.customize ["modifyvm", :id, "--uart1", "0x3F8", "4"]
    vm.customize ["modifyvm", :id, "--uartmode1", "file", File::NULL]
+    vm.customize ["modifyvm", :id, "--nestedpaging", "off"]
+    vm.customize ["modifyvm", :id, "--paravirtprovider", "hyperv"]
  end
end

2021.11.03 追記

virtualbox 6.1.28 に 6.1.26から更新したら、以下のエラーで起動できなくなった。

Stderr: VBoxManage.exe: error: Call to NEMR0InitVMPart2 failed: VERR_NEM_INIT_FAILED (VERR_NEM_VM_CREATE_FAILED)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole  

virtualboxのスレッドを見るに、共存できなくなっているっぽい? bcdedit.exe /set hypervisorlauchtype offが必要だよって書いてある。

  • Windows10 Home バージョン21H1(OS ビルド 19043.1320)
  • VirtualBox 6.1.28 r147628 (Qt5.6.2)
  • Vagrant 2.2.18

2021.11.25 追記

virtualbox 6.1.30 で再び共存できるようになった。

change log より
VMM: Fixed 6.1.28 regression preventing VMs starting when using Hyper-V mode on Windows 10

  • Windows10 Home バージョン21H2(OS ビルド 19044.1387)
  • VirtualBox 6.1.30 r148432 (Qt5.6.2)
  • Vagrant 2.2.19

参考

Windows10 Home で Docker Desktop For Windowsを動かしたメモ
Windows10でWSLを無効化してVirtual Box + Vagrantが動作するように戻したメモ
WSL2とHyper-Vの関係
10.5. Paravirtualization Providers

35
48
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?