hiroの長い冒険日記

主にコンピュータ周辺の興味を持った内容を綴ります

Windows11 仮想環境 (Hyper-V, WSL2, Virtualbox, qemu) の install と動作確認

Windows11を install し、Windows10 との Dual boot も機能していますので、常用する Windows11 環境設定を徐々に進めています。その中でも仮想環境がこれまで通り機能するかどうかを確認する必要があります。今回は、Windows10 でこれまで使用してきた Hyper-V、WSL2、Virtualboxqemu の各仮想マシンを移行して、Windows11 で無事に起動できるかどうかを確認しました。また、Windows11 の WSL2 には新しい機能が追加されていますので、その機能についても試してみました。

Windows の機能の設定

Windows10 の時と同じように、「Windows の機能の有効化および無効化」から仮想環境等を有効化しました。有効にした項目は下記の通りです。
f:id:hiro20180901:20220129170432p:plain:w696

これ以降、各仮想環境毎に移行手順を説明します。

Hyper-V

Hyper-V は「Windows の機能の有効化および無効化」から「Hyper-V」を有効にすれば使用できるようになります。Windows10 の時と同様です。

Windows10 側で export

Windows10 の Hyper-V では3種類の仮想マシンを使用していました。

  1. Ubuntu64
  2. hvAndroid9
  3. hvAndroid9_UEFI

これらを export します。E drive が仮置き用の HDD ですので、此方に一旦保管します。

export : 操作 -> エクスポート

仮想マシンを選択して、menu -> 操作 -> エクスポートを選択します。
f:id:hiro20180901:20220130140717p:plain:w600

export : 仮想マシンの保存先の選択

仮想マシンをエクスポートする保存先を選択します。今回は作業用の HDD の E drive を選択しました。場所を再確認して「エクスポート」を押します。
f:id:hiro20180901:20220130140919p:plain:w600

export : エクスポート中の画面

進捗状況は表示されません。右下の仮想マシンの欄の「エクスポート中の取り消し」が消えるまで待ちます。
f:id:hiro20180901:20220130141131p:plain:w600

export : 終了、folder 構成の確認

エクスポートが終了すると、指定した folder 以下に仮想マシンの情報が folder に分けて記録されています。
f:id:hiro20180901:20220130141200p:plain:w600

全ての仮想マシンを export する

以上の作業を繰り返して、必要な仮想マシンを export します。

Windows11 側で import

これまでは仮想 HDD の場所が適当だったので、Documents\HyperV_VMs に統一します。この下に Hyper-V 仮想マシンの data を置くようにします。

export した data を Documents\HyperV_VMs へ移動

import した場所 = これから使う場所となるので、予め export した data を決めた保管場所へ移動します。

Hyper-V マネージャから import

menu -> 操作 -> 仮想マシンのインポート を選択します。
f:id:hiro20180901:20220129182650p:plain:w600

import wizard : 開始する前に

メッセージのみです。「次へ」を押します。
f:id:hiro20180901:20220129182814p:plain:w600

import wizard : フォルダーの検索

読み込むフォルダー名を選択します。参照を押します。
f:id:hiro20180901:20220129182946p:plain:w600

import wizard : フォルダーの選択

Documents\HyperV_HDD 内の仮想マシン名のフォルダーを選択します。
f:id:hiro20180901:20220129183055p:plain:w600

import wizard : フォルダーの検索 (選択後)

選択したフォルダーが表示されるので「次へ」を押します。
f:id:hiro20180901:20220129183156p:plain:w600

import wizard : 仮想マシンの選択

「インポートする仮想マシンを選択する」の中に export した仮想マシン名が表示されているので、選択して「次へ」を押します。
f:id:hiro20180901:20220129183346p:plain:w600

import wizard : インポートの種類の選択

3種類の選択肢があります。

  1. 仮想マシンをインプレースで登録する
  2. 仮想マシンを復元する
  3. 仮想マシンをコピーする

既に保管したい場所に移動してあるので、1番目の項目を選択して「次へ」を押します。2番目は directory 構成を元の位置に、3番目は Hyper-V の default の場所に登録されると思います(未確認)。
f:id:hiro20180901:20220129184444p:plain:w600

import wizard : インポートウィザードの完了

内容を確認して「完了」を押します。
f:id:hiro20180901:20220129184524p:plain:w600

import wizard : インポート完了

仮想マシン欄に import した仮想マシンが存在する事を確認します。
f:id:hiro20180901:20220129184624p:plain:w600

全ての仮想マシンを import する

同じ手順で 3種類の仮想マシンを import します。

Hyper-V 仮想マシンの起動確認

仮想マシンが正常に起動するか確認します。
f:id:hiro20180901:20220129184719p:plain:w600
f:id:hiro20180901:20220130144830p:plain:w600
f:id:hiro20180901:20220130144843p:plain:w600
問題なく起動しました。

Hyper-V 仮想マシン移行まとめ

今回は仮想マシン一つずつを export / import しましたが、複数を一度に実施する事も可能なようですので、数が多い場合でも簡単に移行できると思います。

仮に import に失敗したり仮想マシンが起動できなかった場合でも、仮想 HDD が残っていれば、仮想マシンを新しく設定して仮想 HDD を接続すれば問題なく起動できます。仮想マシンの設定を適切に行えるのであれば、此方の方が簡単かと思います。

Windows Subsystem for Linux 2 (WSL2)

WSL2 については素のままで使用していて、仮想マシンへの ssh client を動かす程度でしたので、移行せずに新しく install しました。

WSL2 install

Windows の機能の設定」から WSL2 を ON にして、Microsoft Store から Ubuntu を install したら下記の error が出ました。
f:id:hiro20180901:20220129164503p:plain:w600

Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ???????????? ??????????????????????? https://aka.ms/wsl2kernel ?????????

Press any key to continue...

文字化けして一部が読めません。error message を元に検索してみると以下のページを見つけました。
qiita.com

更に調べると、もっと簡単になっていたのですね。
zenn.dev

管理者権限の PowerShell :

PS> wsl --install

これだけで「Windows の機能」の設定から distribution の install まで実行してくれるようです。今回は distribution は install 済みなので、 kernel の update のみ実施します。

管理者権限の PowerShell :

PS> wsl --update
更新をチェック中...
更新をダウンロード中...
更新をインストール中...
この変更は、次回の WSL 再起動時に有効になります。強制的に再起動するには、'wsl --shutdown' を実行してください。
カーネル バージョン: 5.10.60.1
PS> wsl --shutdown

これで WSL2 Ubuntu が起動するようになりました。

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: user
New password:
Retype new password:
# … 中略 …
user@pc-name:~$

kernel の update を windows update で受け取られるように設定しました。
f:id:hiro20180901:20220129164442p:plain:w600

Windows11 WSL2 新機能

WSLg

Windows11 で WSL2 を install すれば WSLg が有効になっていました。
f:id:hiro20180901:20220131000219p:plain:w600

xeyes と virt-manager を表示させてみました。特に設定は不要で、software を install して起動するだけで表示できました。

外部ドライブの mount

WSL2 で外部の Linux disk を mount できるようになりました。
docs.microsoft.com

path through で debian を install している SATA SDD 128GB を接続してみました。

PowerShell (管理者) :

PS> GET-CimInstance -query "SELECT * from Win32_DiskDrive"

DeviceID           Caption                 Partitions Size          Model
--------           -------                 ---------- ----          -----
\\.\PHYSICALDRIVE4 CFD CSSD-SM128WJ3       3          128034708480  CFD CSSD-SM128WJ3
\\.\PHYSICALDRIVE3 SanDisk SDSSDH31000G    3          1000202273280 SanDisk SDSSDH31000G
\\.\PHYSICALDRIVE5 Hitachi HDS721010CLA332 1          1000202273280 Hitachi HDS721010CLA332
\\.\PHYSICALDRIVE6 WDS200T1X0E-00AFY0      2          2000396321280 WDS200T1X0E-00AFY0
\\.\PHYSICALDRIVE1 WDC WD40EFRX-68N32N0    1          4000784417280 WDC WD40EFRX-68N32N0
\\.\PHYSICALDRIVE2 WDC WD40EFRX-68N32N0    1          4000784417280 WDC WD40EFRX-68N32N0
\\.\PHYSICALDRIVE0 ST4000VN008-2DR166      1          4000784417280 ST4000VN008-2DR166
PS> wsl --mount \\.\PHYSICALDRIVE4 --bare

\\.\PHYSICALDRIVE4SATA SSD 128GB になります。WSL2 で扱うには以下の通りです。

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   256G  0 disk
sdb      8:16   0 339.8M  1 disk
sdc      8:32   0   256G  0 disk /
sdd      8:48   0 119.2G  0 disk
├─sdd1   8:49   0   512M  0 part
├─sdd2   8:50   0 117.8G  0 part
└─sdd3   8:51   0   977M  0 part
$ sudo mount /dev/sdd2 /media
$ ls /media/
bin   dev  home        initrd.img.old  lib32  libx32      media  opt   root  sbin  sys  usr  vmlinuz
boot  etc  initrd.img  lib             lib64  lost+found  mnt    proc  run   srv   tmp  var  vmlinuz.old

/dev/sdd で認識されています。/dev/sdd2 が root になるので、mount してみるとちゃんと見えました。

これまで Hyper-VVirtualbox に path through して作業していた事が WSL2 でも出来るようになりました。機会があれば試そうと思いますが、USB 接続でも可能だと思いますので、色々と応用範囲が広そうです。

後始末 :

WSL2:$ sudo umount /media
PS> wsl --unmount \\.\PHYSICALDRIVE4

umount ではなく unmount です。

Virtualbox

Virtualbox は Windows10 の時と同じ Virtualbox-6.1.30 を install しました。raw disk を使用する場合に必要なので、Virtualbox の起動用ショートカットは「管理者として実行」する様にしておきます。
f:id:hiro20180901:20220129194037p:plain:w600
f:id:hiro20180901:20220129194046p:plain:w600

Windows Hypervisor Platform を有効にしておけば、Hyper-V や WSL2 と共存が可能です。Windows10 の時と同様です。

Windows10 側の folder を Windows11 の Documents\Virtualbox_VMs に copy

Virtualbox にも export と import の機能 (仮想アプライアンスのエクスポート / インポート) がありますが、仮想 HDD の vdi 形式をいったん vmdk 形式に変換してから ova 形式にまとめて、import の際に vdi 形式に戻す、というやり方なので時間を要します。実際にやってみましたが import しても仮想マシンが起動できませんでした。

簡単な方法は、VirtualboxVM と仮想 HDD は一つの folder にまとまっていますので、folder ごと Windows11 側に copy して、Virtualbox の menu ->「仮想マシン」->「追加」で該当 folder を読み込むやり方です。
f:id:hiro20180901:20220130144156p:plain:w600
f:id:hiro20180901:20220130144032p:plain:w600

これで Ubuntu64 と Android9、Android9_UEFI の3つの仮想マシンを Windows11 側に移す事が出来ました。

Virtualbox 仮想マシンの起動確認

仮想マシンが正常に起動するかどうか確認します。
f:id:hiro20180901:20220130145755p:plain:w600
f:id:hiro20180901:20220130145813p:plain:w600
f:id:hiro20180901:20220130145822p:plain:w600
問題なく起動できました。リモートデスクトップでも接続できました。

Virtualbox 仮想マシンの移行まとめ

Virtualbox の移行は、初めは仮想アプライアンスのエクスポートを使用していたのですが、仮想 HDD を vdi 型式からvmdk 型式に convert しているのが分かって早々に諦めました。

元の環境の仮想マシンの folder 一式を copy して持ってきて「追加」で取り込むのが簡単で速いです。

Hyper-V と同様に、必要なのは仮想 HDD なので、仮想 HDD なしで仮想マシンを作成し、後で仮想 HDD を追加すれば起動します。設定内容を覚えている場合には、此方の方が簡単かと思います。

qemu

qemu の場合は、仮想マシンの設定は command で指定しますので、必要なのは仮想 HDD (qcow2) と UEFI image になります。これまでは別々の場所に保管していましたが Documents\qemu_VMs にまとめて保管する事にしました。

qemu 仮想マシンの起動確認

qemu に関しては script の仮想 HDD と UEFI image の path を変更するだけですので、問題なく起動しました。画面 image は省略します。

whpx を有効にした際の whpx: injection failed は、Windows11 でも未だ出ています。やっぱり whpx は使えてなさそうです。

仮想マシン間の通信

hiro20180901.hatenablog.com

此方で試した各仮想マシン間の通信についてもそのまま使用できました。

まとめ

Windows10 で使用していた各仮想マシンを Windows11 へ移行しました。

Virtualbox の 仮想アプライアンスのエクスポート / インポートで仮想 HDD の convert をしているのは予想外でした。folder を copy して「追加」の方が簡単で速く済みました。

これまで Windows10 では、仮想マシンの情報が各所に分散しているのが気になっていました。今回、Windows11 に移行するのを機に、決まった場所に保管するルールを決めましたので、更に移行する時には楽になると思います。

Windows11 の環境設定もほぼ完了しましたので、次は新しいネタを記事にしたいと考えています。