QEMUをWSL2で動かす
KVMを使う仮想マシン環境の1つにQEMUがある。QEMUは、CPUエミュレーションをするためのソフトウェアだが、KVMを利用することで、ホストと同一アーキテクチャのCPUであれば、高速なエミュレーション(つまり仮想マシンとしての実行)が可能になる。
ただし、複雑なソフトウェアでもあるため、オプションなどもかなり難解だ。今回は、このQEMUをKVMで動作させ、WSL2の仮想マシン支援機能を試してみることにする。準備のために必要なのは、
・QEMUのインストール(qemu-kvmをインストール)
・実行イメージの入手
といった操作である。QEMUはグラフィックス表示のエミュレーションにも対応していて、WindowsのようなOSも実行可能だが、今回はLinuxをグラフィックスなしの環境で動作させることにする。
まずは、Linuxの実行イメージを入手しよう。QEMUは、qcow2という形式の実行イメージファイルを使う。もちろん、OSのISOイメージなどからも可能なのだが、ここは手っ取り早くqcow2ファイルを探す。
それには、LinuxのFedoraディストリビューションのクラウドバージョンを使う。これらはOpenStacks用に作られており、ちゃんと使おうとするとちょっと面倒だが、今回はQEMUのテストなので、起動してログインのプロンプトが出ればいいので、単にqcow2実行イメージだけを使うことにする。以下のURLからダウンロードした。
●Fedora Cloud
https://alt.fedoraproject.org/cloud/
このページを開くと「Cloud Base image for Openstack」という項目があるので「ダウンロード」リンクからqcow2ファイルをダウンロードする。ダウンロードしたファイルは、WSLディストリビューションのユーザーホームディレクトリに置いておく。なお、今回はWSL2のUbuntu-18.04で評価している。以後のLinuxコマンドに関しては、ディストリビューションにより違いが生じる場合もあるため、他のディストリビューションを用いる場合には注意が必要だ。
QEMUは、以下の手順でインストールする。
sudo apt-get update
sudo apt install qemu-kvm
QEMUを使う前に、/dev/kvmのパーミッションを変更して、rootでなくても利用できるようにする。それには、以下のコマンドを使う。
sudo chmod a+rw /dev/kvm
QEMUからKVMが使えるかどうかを確認してみる。以下のコマンドを実行する。
qemu-system-x86_64 -nographic -enable-kvm
メッセージが出たあとで「Ctrl+A」からCキーを押す。これでQEMUのモニターモードに入る。画面には「(qemu)」と表示されているはずだ。ここで「info kvm」と入力する(親切にいうと最後にエンターキーを押す)。KVMが有効になっていれば、以下のように表示が出るはずだ。
その後「quit」コマンドでQEMUを抜ける。この「Ctrl+A」からの手順は、「-nographic」オプションを設定しているときのみ有効だ。
Fedora Linuxを起動してみる
前述のURLからダウンロードしたファイルは、原稿執筆時点では、「Fedora-Cloud-Base-33-1.2.x86_64.qcow2」だった。バージョンアップなどで、ファイル名が変更になる可能性もあるので注意されたい。実行イメージがこのファイル名だったとして、以下のコマンドを実行してFedora LinuxをQEMU内で起動させてみよう。
qemu-system-x86_64 -m 1024 -enable-kvm -display none -cpu host -nographic -drive file=Fedora-Cloud-Base-33-1.2.x86_64.qcow2,if=virtio
すると、「見慣れた」Linuxの起動メッセージが表示され、最後にログインプロンプトが出るはずである。
ログインプロンプトが出るということは、ちゃんと起動したということだ。このクラウド版のFedoraにログインするには、パスワードなどを設定する必要があるのだが、手作業では面倒なので、ここまでとする。終了させるには、前述のように「Ctrl+A、C」として、QEMUのモニターモードに入り、quitコマンドを使う。
開発中のWSL2では、このように仮想マシン支援環境を利用できる。設定は当初デフォルトではオフだったが、最近のプレビュー版でオンになった。リリースが近いのであろう。おそらく次の春の機能アップデートには入るんじゃないかと思われる。
この連載の記事
-
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 - この連載の一覧へ