ちょっと調子に乗った人のQEMU for Windowsレビュー
どうも、シルフィードです。
最近になって、ちょいとVirtualBoxに飽きた(?)感じがしたので、QEMUを入れて遊んでみました。結構てこずるポイントがあったので共有。
QEMUってなんじゃいな
QEMUは、主にLinuxで使われるオープンソースの仮想マシンソフトウェアです。KVM使って仮想マシン組んだことある人もいるんじゃないかな。
初期設定ではVMwareやVirtualBoxのように実機のハードウェアを仮想化して用いるのではなく、CPU上で仮想ハードウェアを構築してOSを動かす形になります。そのため、RISC-VやSPARC、ARM(AArch)のCPUも完全に仮想化して実行することが可能。
ただし、その仕組みのせいでVMwareやVirtualBoxと比べ実行速度はかなり遅くなってしまいます。まぁ、OSに合わせてアクセラレータを指定してやれば、かなり早くなりますが(x86_64アクセラレーションに限る)。
また、Linux向けが母体なのでWindows向けのサポートはあんまり十分じゃないです。Linux版だと勝手にやってくれるのにWindows版では自力で頑張らなきゃいけないところや、どう足掻いても解決しない部分は出てくるとは思いますが、ロマンということで乗り切っていきましょう。
実際入れてみよう
今回はWindowsで用いるのでWindows版をダウンロード。
どうせ後でPATHを手動登録する必要があるので、インストール先は適当なところにしておけば大丈夫です。
UEFIを用いる場合はTianocore EDK IIをダウンロードしておきましょう。
上記はGitHubリポジトリ。最新版のEDK IIをビルドできるので、基本的にはこれをビルドして使うことになります。
ただし、Visual Studioが必要。MSYS2でのビルドはやめておいたほうがいいです(ヘッダーの関係のせいか、失敗する)。
めんどくせぇって人は、検索すればSourceForgeに5年ほど前のビルドが転がってるので、それを使いましょう。
MSYS2の利用者は、MSYSのリポジトリにqemuがあります。それを用いることも可能です(違いはインストール先とPATH登録を省略できることくらいしかない)。
起動してみよう
PATHにQEMUをインストールしたフォルダを追加してやったら、cmdで以下のコマンドを打って試験起動です。
qemu-system-x86_64
うまく行けば、こんな画面が出るかと。
このままではOSもなにもないので、何もせずに終了するだけです。
ここからは、試しでUbuntuを入れていきます。
QEMU for WindowsでUbuntuのインストール
そのまえに
WindowsでQEMUを使うなら、Windows Hypervisor Platformをつけておくのが懸命です。環境によってはArch Linuxのarchinstallが使えなくなったり、BIOS版で起動したArch LinuxのGRUBがフリーズしたりしますが、無いと重すぎて使い物になりません。
Windows Hypervisor Platformのつけ方は、調べればでてくると思うので割愛します。WSL2使用者ならもうついてるはず。
注記: これをつけるとVMwareやVirtualBoxが激重になります。また、Bluestacksでゲームをやってる人は、もしかしたらゲームの再インストールが必要になるかもしれません。
Ubuntuのダウンロード
CanonicalのGNOME版 Live ISOを使います。バージョンはJammy (22.04 LTS)。
バッチファイル用意
Windows版ではコマンドラインツールのみが利用できる状態、つまりLinuxにおけるvirt-managerのようなものがないので、事前にスクリプトを組んでおかないと大変になります。
@echo off
qemu-system-x86_64 -bios OVMF.fd -accel whpx -m (メモリ容量) -smp (指定コア数) -hda (仮想ハードディスクファイル).qcow2 -cdrom (UbuntuのISOファイル)
ISO起動用はこのような形式で書いてしまいましょう。HDD起動用は-cdromオプションを取り除き、さらに必要に応じて -device VGA か -device virtio-vga オプションをつけます。 Ubuntuの場合はvirtioドライバがあるので後者がおすすめ。
必要なファイルは後で用意します。
※1 ISO起動時にvirtio-vgaオプションをつけると、GNOMEの挙動がおかしくなります。非推奨。
※2 -cdromオプション外してそのままISO指定してもええやろと思ったそこのあなた。一応できはしますが、それをやるとISOがどういうわけかhdaに割り当てられるので、わけがわからないことになります。非推奨。
※3 virtio-gpuというオプションもありますが、起動時のコンソール出力の崩れや、総合的な描画速度低下を引き起こす可能性があります。非推奨。
仮想ハードディスクファイルの用意
qemu-imgユーティリティを使用します。
qemu-img -f qcow2 (ファイル名).qcow2 (指定容量)
容量指定にはSi接頭辞のイニシャル(K, M, G)を利用可能です (ただし作成されるのはそれぞれKiB, MiB, GiB単位の容量)。
-f qcow2とすることで、QEMU ディスクイメージ バージョン2 ファイルとして作成します。
ディレクトリ整備
ディレクトリ構造は以下の通り。
~/Ubuntu 22.04
|- OVMF.fd
|- ubuntu_2204.qcow (先ほど作成した仮想ハードディスク)
|- ubuntu.iso (Ubuntu 22.04のインストール Live ISO)
|- boot_iso.bat (ISO起動用batファイル)
|- boot_hdd.bat (HDD起動用batファイル)
もちろん、名前はお好みで変えてもらって構いません。
いざ起動
boot_iso.batをダブルクリックして起動。
一瞬コンソールが見えてすぐ消えたというなら、何かしら間違っているのでターミナルから実行してご確認を。
あとは、いつも通りにUbuntuをインストールするだけ。
Ubuntuのインストール方法を忘れたという人や、VM初心者の方は一度箸を休めて、Ubuntuのインストール方法を調べてください。
さて、ここまで終わればHDD起動用スクリプトで起動すれば、生まれたてのUbuntuを見れるはずです。
まぁ、初期設定が途中で勝手にクラッシュするんですがね…(後述)
注意点
GNOME系ソフトの一部がクラッシュする
クラッシュログ見てないので細かいことは言えないのですが、なぜか初期設定とGNOME アプリストアがクラッシュします。
再起動(及びサスペンド)ができない
whpxの影響。再起動かけると即刻QEMUが落ちます。
whpxを切ればそりゃ解決はしますが、尋常じゃないレベルで動作が重くなるので非推奨。諦めましょう。
もちろん、バッチから起動し直せば正常起動します。
gitがエラーを起こす
pullしてもfetchしてもcommitしても、以下のエラー。
Error: git-remote-http died of signal 4
GNUTLS_CPUID_OVERRIDE環境変数を0x1にしてやると解決するそうです。
常用するなら.bashrcに登録するのがおすすめ。
起動時にマウスカーソルがどっかいく
QEMUのvirtio-vgaの仕様です。マウスカーソル座標をオーバーライドするので、仮想ディスプレイの初期化時にマウスカーソルが仮想ディスプレイ内の初期化位置に持ってかれます。
「持っていかれたァァァァァァァ」なんてどこぞの錬金術師みたいに叫ぶ必要はなく、カーソルをウィンドウ外に出してやれば解決。
不便だと言うなら、virtio-vgaをオフにするだけ。ただし、画面サイズ自動拡縮機能や、アクセラレーションがほぼなくなるので、基本的に目を瞑ってやったほうがいいかも。
この指示通りにやったら音が出なかった
スクリプトでのサウンドアダプターの登録を省略したから。自分の使う用途からして、音が出る機能はいらないので省略しました。
音出しに関しては、公式ドキュメントなりArch Wikiなりを見てもらえばわかるかと。
さいごに
正直、普段遣いならVirtualBoxやVMwareを使うほうが便利だとは思います。
しかし、こいつらが起動できなくなったりしたときや、Windows Hypervisor Platform使用時でも仮想マシンを共存させたいときなどは、使えておかないと困るときだってあります。
また、ARMやSPARC、RISC-Vなどの他CPUのOS・ソフトを動かせるという機能を使えば、Raspberry Piなどの環境向けのソフト開発を簡単にすることができます。今回の様な、「x86_64エミュレーション」に限った話ではないのがこのソフトのスゴイところ。
それでは、QEMUで良きエミュレータライフを!
この記事が気に入ったらサポートをしてみませんか?