前回は Virt-Manager の導入方法を掲載しましたが、いよいよ Windows 11 を仮想マシンにインストールします。
本記事は下記の環境で動作確認しています。
- ホストOS:Arch Linux
- ゲストOS:Windows 11 Pro 23H2 64bit
- Virt Manager:4.1.0
- Libvirt:10.2.0
事前準備
Windows 11 を Virt-Manager で動かすためのパッケージやプログラムを用意します。
ホストOS (Arch Linux)が必要なパッケージ
- ディスプレイドライバ
Arch Linux の場合は qemu-desktop パッケージ群をインストールすれば間違いないです。
VirtIO ディスプレイドライバさえ動けばよければ以下のパッケージだけでも動きます。- qemu-desktop
- TPM エミュレーター
Windows 11をインストールするには TPM 2.0 以上に対応している必要があります。システムが対応していればパススルーできますが対応していなければエミュレートする必要があります。- swtpm
- SecureBoot ファームウェア
オープンソースソフトウェアがセキュアブートできるようにするソフトウェアが必要です。- edk2-ovmf
- Windows 11 ISO ファイル
- Virt Manager に読みませるための Windows OS 11 インストールメディアを事前に用意しておきます。
ゲストOS (Windows 11)が必要なプログラム
ゲストOS にインストールするプログラムは仮想マシンに Windows をインストールしてから用意します。
Virt-Manager はグラフィックス、音声や外部ストレージへのアクセスなど、それぞれどのサーバやドライバを使うのか細かく設定することができます。選択肢が多いのはメリットではありますが画面転送サーバは SPICE の方が良いとかグラフィックスドライバは VirtIO の方が良いとか音声は Qemu Pipewire 経由が良いとか色々あって若干ややこしいです。
- VirtIO ドライバ 安定版 最新版
- KVM/Linux用 の準仮想ドライバです。
- QEMU ゲストツール [任意]
- ホストOSから virsh コマンドを使って Windows のスナップショットやサスペンド、シャットダウンRTC同期などを行えるようにするエージェントです。VirtIO ドライバを同梱した
virtio-win-guest-tools
というインストーラがもあります。
- ホストOSから virsh コマンドを使って Windows のスナップショットやサスペンド、シャットダウンRTC同期などを行えるようにするエージェントです。VirtIO ドライバを同梱した
- SPICE ゲストツール [任意]
- クリップボードやファイルの共有を行いたい場合に必要です。
- ⚠ 最終アップデートが2018年。Windows 11 23H2 で動作確認。
プログラムの解説
VirtIO ドライバー
VirtIO ドライバは IBM 傘下の Red Hat が開発している KVM / Linux 用の準仮想ドライバです。 KVM 仮想マシンにインストールされた OS にこのドライバーをインストールすることによって様々な機能やネイティブに近いパフォーマンスを発揮することもできます。
このドライバは従来のエミュレータ型のドライバとは違いハードウェアに直接アクセスするため比較的高速です。詳しい説明は以下のリンク先をご参照ください。
IBM Developer「Virtio: An I/O cirtualization framework for Linux」
下記のチャートはインストールされるドライバー一覧です。
ただ VirtIO ドライバーのバージョンやサイトの説明などによってドライバー名が違ったりするのでかなりとっ散らかっています。
パッケージ名 | ドライバ名 | 解説 |
---|---|---|
Ballon | virtio-balloon | 仮想マシンが実際にアクセスするメモリー量を制御するために使用されます。これにより、メモリーのオーバーコミットメントが改善されます。 |
Network | virtio-net | この準仮想化ネットワークドライバーは、rtl などのエミュレートされたデバイスでパフォーマンスを強化します。 |
Pvpanic | pvpanic | QEMU pvpanic デバイス ドライバー。pvpanic はゲストOSがパニック/クラッシュしたときにクラッシュダンプが収集される前にハイパーバイザーにシグナルを送ってくれる準仮想デバイスです。 |
Fwcfg | qemufwcfg | FWCfg デバイス ドライバー。このHWインターフェイスはファームウェアがどのように設定されるのかや、様々なデータ(blob)をゲストOSが取得することを可能にします。ブート順、ACPI SMBIOS テーブル、仮想マシン UUIDなどなど。 |
Qemupciserial | qemupciserial | QEMU PCI シリアル デバイス ドライバー。 |
Vioinput | vioinput or virtio-input | VirtIO 入力 ドライバー。マウス、キーボードやタブレットなど準仮想ヒューマンインタフェースを追加することを可能にします。 |
Viorng | viorng or virtio-rng | VirtIO RNG(乱数ジェネレーター) デバイス ドライバー。仮想 RNG (random number generator) デバイスであり、RNG データをゲスト仮想マシンのオペレーティングシステムにフィードします。これにより、要求に応じてゲスト仮想マシンに新しいエントロピーを提供します。 |
Vioscsi | vioscsi or virtio-scsi | VirtIO SCSI パススルー コントローラー。SCSI コマンドに対応、Discard などの機能も有しています。Proxmox では viostor よりもこちらが推奨されています。 |
Vioserial | or virtio-serial | VirtIO シリアル・デバイス・ドライバー。 複数のシリアルポートをサポートします。改善されたパフォーマンスは、ネットワークの複雑化を回避する仮想マシンとホスト間の高速通信に使用されます。この高速通信は、ゲストエージェント、および仮想マシンとホスト間のクリップボードのコピーアンドペーストやログ記録などの他の機能に必要です。 |
Viostor | viostor or virtio-block | VirtIO ブロック ドライバー。VirtIO ディスクのためのシンプルで高速なドライバーですが機能が限定されています。 |
Viofs | virtio-fs | VirtIO ファイル・システム ドライバー。ゲストOS とホストOS がディレクトリツリーを共有するためのファイル・システムです。 |
Viogpudo | virtio-gpu-dod | VirtIO GPU DOD ドライバー。QXL の後継にあたるドライバーでいくつか新しい機能が追加されています。しかしパフォーマンスの面ではあまり大きな違いはありません。 |
参考:Red Hat Customer Portal 「 3.3. ゲストエージェントおよびドライバーのインストール」
事前にISO ファイルを用意する方法もありますが、今回はゲストシステムにインストールプログラムをダウンロードしてドライバをインストールします。理由は ISO はダウンロードサイズが大きいこととインストールプログラムを使ったほうが簡単だからです。
SPICE デスクトップ転送プロトコル
SPICE (Simple Protocol for Independent Computing Environments) は仮想環境のための画面転送プロトコルです。デスクトップ転送プロトコルとも呼ばれています。
古い記事ですが ITmedia さんが非常に詳しい解説を載せています。SPICE の方が VNC(Virtual Network Computing)よりも新しく、様々な新機能が盛り込まれています。
SPICE | VNC | |
---|---|---|
BIOS画面の表示 | 可能 | 可能 |
フルカラー表示 | 可能 | 可能 |
解像度の変更 | 可能 | 可能 |
マルチモニタ | マルチモニタ対応(4画面まで可能) | 1画面のみ |
画像転送 | 図形/画像転送 | 画像転送 |
動画再生支援 | 動画のアクセラレーションが可能 | なし |
音声転送 | 双方向の音声転送が可能 | なし |
マウスカーソル | サーバ側/クライアント側制御 | サーバ側制御 |
USB転送 | ネットワーク経由でUSB転送可能 | なし |
暗号化 | SSLによる通信の暗号化が可能 | なし |
上記のチャートのように SPICE はメディア・アクセラレーションが使えるため動作が高速なだけでなく、暗号化通信が行えるため安全です。
今回のインストールではディスプレイサーバーとして SPICE を使います。
インストール
1. Virt-Manager の設定
仮想マシンマネージャーとして奇妙な感じですが、Virt-Manager は遠隔地から仮想マシンを操作することを前提としているため、まず接続先を作成する必要があります。初期設定だとLXCしかないので QEMU/KVM を追加します。
「ファイル」→「接続を追加(A)」
ハイパーバイザーを「QEMU/KVM」を選択し、自動接続にもチェックをしておきます。最後に「接続」を押下します。
2. 仮想マシンを作成
仮想マシンを作成します。
先程追加した接続「QEMU/KVM」を右クリックし「New」を左クリックします。
今回はローカルストレージに保存した ISOイメージを使用するので「ローカルのインストールメディア」を選択し「次へ (R)」を押します。
Window ISO ファイルを指定して読み込ませます。
Windows ISO ファイルを読み込むと自動的に推奨設定がなされます。
Windows 11 は 8GB が最低動作環境です。
仮想マシンのディスクイメージを作成します。さすが 肥え太ったOS。128 GBも必要なようです。
QEMU のドライバがインストールされていればオーディオなども自動的に設定されます。また TPM も swtpm がインストールされていれば自動的に設定されます。
最後に仮想マシンに名前をつけて「完了」ボタンを押します。
Windows ISO が読み込まれ、すぐにインストールが開始されるので見逃さないよう注意してください。ここで何かしらのキーを押し忘れると ISO イメージがイジェクトされます。そうなった場合詳細設定から ISO イメージをブート時に読み込むよう設定する必要があります。
3. ゲストマシンに Windows をインストール
ここからは普通にWindows OSをインストールすればOKです。
付け加えるとしたら Microsoft アカウントを作れと言ってきた際、わざとアドレスとパスワードを間違えるとバイパスができます。アカウント・パスワード両方とも「a」でも良いです。
このあとローカルアカウントを作ることができます。
4. ディスプレイ/グラフィックの設定
まずホスト側(VMマネージャー)のディスプレイとグラフィックの設定を行います。
ディスプレイを Spice サーバーに設定することでグラフィックパフォーマンスを改善することができます。
先程作成した仮想マシンの詳細設定を開いて左カラムの「ディスプレイ」を選択します。続いてサーバーを「Spiceサーバー」を選択、リッスンタイプを「なし」に。OpenGL にもチェックを入れます。
続いてグラフィックデバイスの設定をします。左カラムの「ビデオ」を設定し、モデルを「Virtio」に設定。3Dアクセラレーションにもチェックを入れます。
これでホスト側の設定は完了です。
5. VirtIOドライバをインストールする
次はゲストOS(仮想マシン)側にドライバをインストールします。
SCSIへの対応やグラフィックパフォーマンスを改善するために VirtIO ドライバをインストールします。
ビデオドライバとして Arch Wiki では QXL を推奨していますが、 RedHat がサポートを打ち切っているので個人的には VirtIO が良いと考えています。実際に使っていて VirtIO のほうがスムーズに動きます。
ただ CPU 使用率など使用リソースを抑えたいときは QXL のほうが良いようです。
おわり
1年前は導入にだいぶ苦労しましたがTPMの設定から何から何まで Virt-Manager が行ってくれるので非常に楽になりました。
ただグラフィックスの設定が相変わらず少しややこしいので改善の余地がありそうです。
次回は Virt-Manager での GPU パススルーの設定方法を解説いたします。これを利用して Windows でゲームをしたり動画編集などをしている人もいるので GPU が余っている人はお楽しみに。
おわり
コメント