無料のWindows仮想マシンをQEMUで動かす


MicrosoftはIEやEdgeのテスト、開発環境構築用に無料で使えるWindows仮想マシンを配布しています。

Free Virtual Machines from IE8 to MS Edge - Microsoft Edge Development
Windows 10 仮想マシンをダウンロードする - Windows アプリ開発

仮想マシンソフトウェアはVMWare, Hyper-V, VirtualBox, Parallelsに対応してるのですが、

  • VMWare : 無料で使えるのはWindowsにあるPlayerのみ
  • Hyper-V : WindowsのPro, Enterprise, Education, Serverのみ
  • VirtualBox : アップデートとかで頻繁に起動しなくなるから嫌い
  • Parallels : 有料。しかも毎年お金を払わないといけないアップデートを要求してくる。

というわけでMacとLinuxをメインで使ってる僕には非常に困ったラインナップなのです。
KVM使わせろや

というわけで、Microsoft配布の仮想マシンをQEMUで動かします。

環境

x86_64のQEMUが使えるパソコンであれば何でもいいです。
仮想マシンはサイズが大きいのでしっかりしたインターネット環境と十分なディスクの空き容量も必要でしょう。
QEMUはパッケージマネージャーから普通にインストールすればいいと思います。

仮想マシンのダウンロード

Free Virtual Machines from IE8 to MS Edge - Microsoft Edge Development
Windows 10 仮想マシンをダウンロードする - Windows アプリ開発

ここらからHyper-V用の仮想マシンをダウンロードしてください。

"Microsoft Edge Development"からダウンロードできる仮想マシンはIEとEdgeの動作確認用なので、Windowsの標準ソフトウェア以外は何も入ってません。ただWindows動かしたいだけならこっちでいいでしょう。
"Windows アプリ開発"からダウンロードできる仮想マシンには最初からVisual Studioとかの開発環境がインストールされています。でも、その代わりサイズがでかいです。

この記事では"MSEdge on Win10 (x64) Stable (17.17134)"を使ってます。

ちなみに、これらの仮想マシンには使用期限があります。使用期限を過ぎると、最初から仮想マシンを構築し直す必要があります。なので、常用には向きません。あくまでテスト用として割り切って使用してください。

ダウンロードができたらzipファイルを展開しましょう。

それで、仮想マシンといっても重要なのはWindowsが入ってるディスクイメージだけです。仮想マシンの構成ファイルとかは何とでもなります。なので、ダウンロードした中で使うのは"Virtual Hard Disks"フォルダにあるvhdxファイルだけです。
僕がダウンロードした仮想マシンでは"MSEdge - Win10.vhdx"という名前でした。

そして、QEMUではHyper-V用のディスクイメージであるvhdxをそのまま読み込むことができます。
起動するときに使うので適当な作業ディレクトリにコピーしておいてください。

UEFIファームウェアを用意

※いつのまにか、通常のBIOSで起動するようになってました。この手順は必要ありません。

配布されてる仮想マシンは、UEFI環境上にWindowsをインストールしたものになっています。なので、UEFIで起動する必要があるのですが、実はQEMUはそのままだと仮想マシンでUEFIを使えません。
そこで、QEMU上で動くUEFIを使えるファームウェアを用意します。

幸いGithubでビルド済みのファームウェアを配布してくれている人がいたので、ありがたく使わせてもらいます。
GitHub - BlankOn/ovmf-blobs: BIOS.bin for qemu to support UEFI

必要なのはbios64.binというファイルだけなので、これを先ほどのvhdxファイルと一緒の場所にコピーしてください。

起動

あとは、ターミナルでvhdxファイルのあるディレクトリに移動して

qemu-system-x86_64 -m 4096 -smp 2 -hda MSEdge\ -\ Win10.vhdx 

で起動できるはずです。
"-m"はメモリサイズ、"-smp"はコア数なので、お使いのホストマシンのスペックによって適宜変えてください。

また、KVMの使える環境ならば"-enable-kvm"を付けるといいでしょう。速くなります。

もちろんMacでも使えますが、KVMは使えないので遅いです。
Hypervisor.frameworkは使えるのかな?
使えたら別記事にしたいと思います。