普段Ubuntuを使っているのですが、Kindle本を読んだり、MS Officeを使いたい場合など、Linuxだけでは困ることがあります。そのためWindowsのサブマシンを併用していますが、ちょっとした作業のためにマシンを切り替えるのが面倒だと感じています。
そこで今回、Linux用の仮想化モジュールであるKVMを使用してUbuntu上でWindowsを動かしてみました。
使用した環境
今回使用した環境は以下の通りです。
- CPU … Intel Core i7-9750H
- ホストOS … Ubuntu 20.04 64bit
- ゲストOS … Windows 10 Pro 64bit
KVMのインストール
KVMのインストール手順は以下のページを参考にしました。
インストール前の確認
KVMをインストールする前にハードウェアが対応しているか確認を行います。自分の環境は対応していることはわかっていましたが念の為やってみました。
ハードウェア仮想化に対応しているか
CPUがハードウェア仮想化に対応しているか確認します。
$ egrep -c '(vmx|svm)' /proc/cpuinfo
24
上記のコマンドの実行結果は
- 0 … ハードウェア仮想化に対応していない
- 1以上 … ハードウェア仮想化に対応している
を意味しますので、自分の環境はOKでした(知ってた)。
別の確認方法として、KVMを使用可能か確認する専用のコマンドも用意されていますので、そちらをインストールして使っても良いと思います。
$ sudo apt install cpu-checker
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
ゲストOSとして64bitのものを使用できるか
CPUが64bitかつホストOSのカーネルが64bitか確認しておきます。32bitの場合でもKVMのインストールはできますが、ゲストOSが32bitに限定されます。
CPUについては以下のコマンドで確認します。
$ egrep -c ' lm ' /proc/cpuinfo
12
上記コマンドの実行結果は
- 0 … 32bit CPU
- 1以上 … 64bit CPU
を意味しますので、自分の使っているCPUは64bitでした(知ってた)。
ホストOSのカーネルは以下のコマンドで確認します。
$ uname -m
x86_64
上記コマンドの実行結果は
x86_64
… 64bitカーネルi386
,i486
,i586
,i686
… 32bitカーネル
を意味しますので、自分の使っているUbuntuは64bit版でした(知ってた)。
パッケージのインストール
以下のコマンドでインストールします。
$ sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
インストールできたら、ユーザーをlibvirt
,kvm
グループに追加します。自分の場合、libvirt
グループには既に追加されていたので、kvm
グループに追加するコマンドのみ実行しました。
$ sudo adduser `id -un` kvm
Adding user `tdomy' to group `kvm' ...
Adding user tdomy to group kvm
Done.
グループに追加したら設定を有効にするため再起動をします。その後groups
コマンドを実行し、結果にlibvirt
とkvm
があればインストール完了です。動作確認してみます。
$ virsh list --all
Id Name State
--------------------
上記の表示を確認できればOKです。
管理ツールのインストール
上記まで完了すれば、コマンドラインで使える状態ですが、GUIの管理ツールもインストールしておきます。
$ sudo apt-get install virt-manager
インストールできたら起動してみます。Dashで「Virtual Machine Manager」を探すか、以下のコマンドを実行します。
$ virt-manager

Windowsを動かしてみる
あとはVirtual Machine Managerで仮想マシンを作って(長くなったので今回はそこの手順は省略します)、用意しておいたWindows 10をインストールします。
試しにKindle for PCをインストールしてみました。本の画像は載せられませんが普通に読めています。

まとめ
UbuntuにKVMをインストールし、Windows10をUbuntu上で動かすことができました。パフォーマンスの検証はしていないですが、あくまでちょっとした作業用なので十分に使えそうです。