はじめに

Linux上のKVMへWindows10をインストールして動作させることが出来たので、手順をメモしておく。
今回は特にクライアント端末として利用できればいいかなと思っているので、ネットワークはブリッジ接続はせずにデフォルトのNAT接続で済ませる。

基本的に以下のサイトの説明のままやってみた。
QEMU/KVM, libvirtのインストールと設定 | 普段使いのArch Linux

KVMがサポートされている状態かの確認

ハードウェアの確認

以下のコマンドで確認する。
何かしらリストアップされればOK。

$ LC_ALL=C lscpu | grep Virtualization
Virtualization:                  VT-x

Linuxカーネルの確認

以下のコマンドを実行して、全て ym になっていること。

$ zgrep CONFIG_KVM /proc/config.gz
CONFIG_KVM_GUEST=y
# CONFIG_KVM_DEBUG_FS is not set
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_KVM_VFIO=y
CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
CONFIG_KVM_COMPAT=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_AMD_SEV=y
CONFIG_KVM_MMU_AUDIT=y

VIRTIOモジュールの確認

以下のコマンドを実行して、全て ym になっていること。

$ zgrep CONFIG_VIRTIO /proc/config.gz
CONFIG_VIRTIO_VSOCKETS=m
CONFIG_VIRTIO_VSOCKETS_COMMON=m
CONFIG_VIRTIO_BLK=m
# CONFIG_VIRTIO_BLK_SCSI is not set
CONFIG_VIRTIO_NET=m
CONFIG_VIRTIO_CONSOLE=m
CONFIG_VIRTIO=m
CONFIG_VIRTIO_MENU=y
CONFIG_VIRTIO_PCI=m
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_BALLOON=m
CONFIG_VIRTIO_INPUT=m
CONFIG_VIRTIO_MMIO=m
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y

カーネルモジュールの確認

以下のコマンドを実行して、何か返ってこればOK。

$ lsmod | grep -E "(kvm)"
kvm_intel             311296  0
kvm                   786432  1 kvm_intel
irqbypass              16384  1 kvm

KVMのセットアップ

関連パッケージの追加

パッケージコマンドに yay 使ってます。
必要なパッケージをインストール。

$ yay -S qemu libvirt ebtables dnsmasq virt-manager

QEMUの設定

一般ユーザーlongkey1kvmグループに追加。

$ gpasswd -a longkey1 kvm

libvirtの設定

/etc/libvirt/libvirtd.conf の修正。

@@ -78,7 +78,7 @@
 # activation.
 #
 # This is restricted to 'root' by default.
-#unix_sock_group = "libvirt"
+unix_sock_group = "libvirt"

 # Set the UNIX socket permissions for the R/O socket. This is used
 # for monitoring VM status only
@@ -88,7 +88,7 @@
 #
 # Default allows any user. If setting group ownership, you may want to
 # restrict this too.
-#unix_sock_ro_perms = "0777"
+unix_sock_ro_perms = "0770"

 # Set the UNIX socket permissions for the R/W socket. This is used
 # for full management of VMs
@@ -101,7 +101,7 @@
 #
 # If not using PolicyKit and setting group ownership for access
 # control, then you may want to relax this too.
-#unix_sock_rw_perms = "0770"
+unix_sock_rw_perms = "0770"

 # Set the UNIX socket permissions for the admin interface socket.
 #
@@ -147,7 +147,7 @@
 #
 # To restrict monitoring of domains you may wish to enable
 # an authentication mechanism here
-#auth_unix_ro = "none"
+auth_unix_ro = "none"

 # Set an authentication scheme for UNIX read-write sockets
 # By default socket permissions only allow root. If PolicyKit
@@ -156,7 +156,7 @@
 #
 # If the unix_sock_rw_perms are changed you may wish to enable
 # an authentication mechanism here
-#auth_unix_rw = "none"
+auth_unix_rw = "none"

 # Change the authentication scheme for TCP sockets.
 #

一般ユーザーlongkey1libvirtグループに追加。

$ gpasswd -a longkey1 libvirt

libvirtdを自動起動

$ systemctl start libvirtd.service
$ systemctl enable libvirtd.service

defaultネットワークを自動起動するように

参考サイトでは書かれてなかったけど、起動しようとしたらdefaultネットワークが見つからないエラーが出て起動できなかったので。

$ sudo virsh net-autostart default

ゲストOSのセットアップ

評価版Windows10のダウンロード

以下からISOをダウンロード。
https://www.microsoft.com/ja-jp/evalcenter/evaluate-windows-10-enterprise

名前とかいろいろ入力しないとダウンロード出来ないけど、頑張って入力してみた。

仮想マシンの作成

virt-managerを起動して、GUI上から作成。
ISOイメージは先程ダウンロードした、評価版Windows10だったが、自動的にOSを判別してくれなかったので自分でWindows10設定した。
メモリは4GB、CPUは2コア、ストレージは40GB。
結構直感的に操作できたので、誰でも迷わずいけると思う。

Windowsのセットアップ

通常のWindowsのインストールと同じ。
個人的に以下の設定をした。

  • Shift+SpaceでIMEを切り替えれるように
    • Microsoft IMEの詳細設定を開いて、Shift+Space入力/変換列をIME・オンオフにする(この1列変えるだけでOK)
  • capsキーをctrlキーへ変換

ゲストOSからサウンド出力させたい場合

  • virt-managerで仮想マシンのViewをDetailに変更
  • Sound DeviceAC97に変更
  • ゲストOS上でAC97ドライバーをインストール
    • ダウンロードページからダウンロードする
    • ダウンロードしたファイルを解凍する
    • Windowsの再起動をクリックする時に Shiftキーを押しながらクリックする
    • オプションの選択画面でトラブルシューティングを選択
    • トラブルシューティング画面で詳細オプションを選択
    • 詳細オプション画面でスタートアップ設定を選択
    • スタートアップ設定画面で再起動をクリック
    • この状態で解凍したファイルを実行するとドライバーをインストールすることが出来る
      • どうやらセキュリティ対策でドライバー署名を強制しない状態にしないと、ダウンロードしたドライバーをインストールすることが出来ないらしい

おわりに

KVMの安定感かなり良いと思う。
ジャンルを選べばこれでゲームとかできちゃうんじゃなかろうか。
あと久しぶりにWindowsをインストールしてみたけど、インストーラーの完成度が流石で、これぞコンシューマー向けOSだなーと感じた。