Linuc Level3 304の勉強の絡みもあり、KVMでWindows10の仮想化をしてみました。
同様の内容が書かれているサイトは多数ありますが、ホスト側がCLIのみでWindows10用のゲスト作成があまりないこと、有ってもそのままでは出来なかったことから、メモを残しておきます。
Windowsのドライバにはパフォーマンス向上ため、virtioを使用しています。
■物理サーバ環境
OS CentOS 8
CPU Intel Celeron N3150 4C/4T 1.60GHz (TB:2.08GHz) VT-x
メモリ 8GB (4GB x2) DDR3-1866 (PC3-14900)
準備編
Windows10 イメージ準備
Windows10のMedia Creation Toolを使用して、Windows10 Pro 64bitがインストールできるISOファイルを作成しておきます。
今回の例では、ISOファイルを以下に配置します。
/home/kvm/os/Windows10_1909.iso
今回の例では、ISOファイルを以下に配置します。
/home/kvm/os/Windows10_1909.iso
仮想化関連ソフトウェアインストール & 起動
dnf install qemu-kvm libvirt virt-install virt-viewer systemctl enable --now libvirtd
ブリッジ作成
ゲストOSがLANのネットワークに直接繋がるように、ホストOSでブリッジを作成しておきます。enp2s0のIPアドレス設定をbr0に移行しています。
一旦enp2s0を削除する必要があるため、SSHが切れてしまいます。
そのため最後の一行で、削除、設定、再起動を一気に入れています。
(私はインターフェース名を間違え、ディスプレイ、キーボードを繋げて直す羽目になったので注意。)
nmcli connection add type bridge autoconnect yes con-name br0 ifname br0 nmcli connection modify br0 ipv4.addresses 172.16.0.254/24 ipv4.method manual nmcli connection modify br0 ipv4.gateway 172.16.0.1 nmcli connection modify br0 ipv4.dns 172.16.0.1 connection del enp2s0;nmcli connection add type bridge-slave autoconnect yes con-name enp2s0 ifname enp2s0 master br0;reboot
デフォルトのブリッジ停止、自動起動無効化
使用しないデフォルトのブリッジを停止と自動起動を無効化します。virsh net-destroy default virsh net-autostart default --disable
virtioの準備等
私の環境では、/homeにそれぞれ配置しています。mkdir -p /home/kvm/images mkdir -p /home/kvm/os mkdir -p /home/kvm/virtio wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso mv virtio-win.iso /home/kvm/virtio/
Windows10 インストール編
ゲスト作成
試行錯誤し、以下のようになりました。virt-install \ --name Win10 \ --ram 4096 \ --vcpus 2 \ --disk /home/kvm/images/win10.img,size=30,bus=virtio \ --cdrom /home/kvm/os/Windows10_1909.iso \ --disk /home/kvm/virtio/virtio-win.iso,device=cdrom \ --os-type windows \ --os-variant win10 \ --network bridge=br0,model=virtio \ --graphics vnc,port=5900,listen=0.0.0.0 \ --video qxl \ --sound ich6 \ --noautoconsole
Windows10 インストール & 初期設定
作業用PCでVNC Viewerを立ち上げ、br0のIPアドレス(上記の例では172.16.0.254)にポート5900でアクセスする。- Windowsのインストール画面が表示されるので、インストールを続ける。
- Windowsのライセンス認証では、今回は『プロダクトキーがありません』を選択。
- Windows 10 Proを選択。
- インストールの種類は、『カスタム: Windows のみをインストールする』を選択。
- Windowsのインストール場所の指定で、ディスクが見えていないはずなので、以降の手順を実施する。
- ドライバーの読み込みを選択。
- OKをクリック。
- インストールするドライバを選択で、win10のものを選択。
- ディスクが見えるようになるので、インストールを続行する。
- しばらくするとVNCが切れるはずなので、以下でシャットオフ状態になっているか確認する。
シャットオフになったことを確認。
# virsh dominfo Win10 (略) 状態: シャットオフ (略)
- 再び、起動させる。
# virsh start Win10 ドメイン Win10 が起動されました
- VNC Viewerで接続し、Windowsの初期設定をしていく。(この画面になるまで時間がかかる)
- 途中、『ネットワークに接続しましょう』という画面になるが、NICのドライバをいれていないため、『インターネットに接続していません』を選択。
virtioドライバーインストール
- 初期設定が終わりデスクトップが表示されたら、左下のスタートを右クリックし、デバイスマネージャーを開く。
- PCIデバイスを右クリックし、ドライバーの更新を選択。
- 『コンピューターを参照して~』を選択。
- 参照をクリックして、virtio-winのドライブを選択。(E:になるはず)
- 次へをクリック。
- このデバイスをインストールしますか?と表示されるため、インストールをクリック。
- イーサネットコントローラーも同様の手順でインストールする。これでネットワークに接続されるようになる。
- Windowsをシャットダウンする。
- シャットオフになったことを確認。
# virsh dominfo Win10 (略) 状態: シャットオフ (略)
インストールで使用したデバイスの削除
virsh detach-disk Win10 sda --persistent virsh detach-disk Win10 sdb --persistentこれでインストール作業は完了です。
Windowsエクスペリエンスインデックス測定
KVM上のWindows10のスコアを見てみます。1280x1024で実施しました。
PowerShellを管理者権限で起動して、以下を実施します。
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. PS C:\Windows\system32> winsat formal (略) PS C:\Windows\system32> Get-CimInstance Win32_WinSat CPUScore : 7.4 D3DScore : 9.9 DiskScore : 6.7 GraphicsScore : 2 MemoryScore : 7.4 TimeTaken : MostRecentAssessment WinSATAssessmentState : 1 WinSPRLevel : 2 PSComputerName :グラフィックスは悪いですが、他はそこそこでしょうか。
TPM2.0の対応方法
TPM2.0の対応方法はこちらで記載しています。CentOS8 KVM上のWindows10にTPM2.0を追加
KVM上のWindows10でソフトウェアTPMエミュレートをしてみました。
Windows11 Insider Previewのクリーンインストール
Windows11 Insider Previewのインストーラーが公開されたため、KVMにインストールしてみました。
KVM上にWindows11 Insider Previewをインストールしてみた
KVMでWindows11をインストールしてみました。ドライバにはvirtioを使用しました。