概要
半年前、WSL2を試して、VirtualBoxが使えなくなったので元に戻すなどしていた。
最近、WSL2が周囲に広まり始めているので、移行した。
その際、VirtualBoxが今では共存できるという記事を見つけた。
Windowsのバージョンも上げたところだったため、今回ならいけるかもと試したところ成功した。
備忘録として、手順を残す。
環境
- Windows10 Home バージョン20H2(OS ビルド 19042.610)
- VirtualBox 6.1.16 r140961 (Qt5.6.2)
- Vagrant 2.2.10
WSL2の有効化
Windows機能の有効化
Windows ロゴ キー + Rキー
でファイル名を指定して実行を立ち上げ、optionalfeatures
と入力してOKを押す。
Linux用Windowsサブシステム
と仮想マシンプラットフォーム
のチェックを入れる
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
でインストールされたことを確認する。
VirtualBoxとの共存設定
Windows機能の有効化
Windowsハイパーバイザープラットフォームを有効にする。
これが、VirtualBoxとWSL2を共存させるために必要。
VirtualBoxのインストール
念のため、VirtualBoxはWSL2の有効化後に再インストールした。
cinst -y virtualbox
試してみる
vagrant up
で起動して様子を見守った。
ネットワーク設定が何度かでて不安になるが「はい」「はい」。。。これは今までのVirtualBoxで複数のIPを使っていたからの可能性が大きい。
SSH auth method: private key
のところで止まる。
前回もここで止まっていたが、今回は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を修正。
少し起動に時間はかかるが、動くようになった。
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