投稿

3月, 2023の投稿を表示しています

KVM再入門:Qemuコマンドラインで仮想マシンを起動し、Windows11ゲストをセットアップする。

イメージ
## はじめに [前回](/2023/03/kvmqemuwindows.html)に引き続き、KVM仮想マシン上にWindows11をインストールするやり方をまとめておきます。 Windows10の時とは以下のような違いがあります。 * Windows11の場合、TPMとUEFI Secure Bootが必須である。 * KVMでTPMを使うには、ホストの/dev/tpm0をパススルーで使う方法と、ソフトウェアのTPMデバイスエミュレーター(swtpm)を使う方法がある。 * KVMでUEFI Secure Bootするには、ovmfパッケージにより提供されるUEFI firmwareを利用する。 ## Window11のインストール ### KVM仮想マシンの起動方法 Windows11のインストールメディア、virtioドライバインストール用のisoイメージをダウンロードしておきます。 * [Download Windows 11](https://www.microsoft.com/en-us/software-download/windows11) * [Windows用virtioドライバのありか](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/) 必要パッケジージのインストール ``` sudo apt-get install qemu-system-x86 virt-viewer ovmf ``` qcow2ディスクイメージを作成します。 ``` qemu-img create -f qcow2 win11pro.qcow2 40G ``` 書き込み用のFirmwareのローカルコピーを作成します。 ``` cp /usr/share/OVMF/OVMF_VARS_4M.ms.fd ./ ``` #### ホストの/dev/tpm0をパススルーで使う場合 以下のコマンドで仮想マシンを起動できます。 ``` sudo qemu-system-x86_64 \ -machine q35,accel=kvm \ -m 8192 -cpu host \ -smp 6,sockets=1,dies=1,cores=6,th

KVM再入門:Qemuコマンドラインで仮想マシンを起動し、Windows10ゲストをセットアップする。

イメージ
## はじめに <!-- <a href="" target="_blank"><img src="" width="30%"></a> --> 最近Debian Linuxをインストールしたノートパソコン上に、KVM仮想マシンのゲストOSとして、Windows10をインストールする機会がありました。 はじめはGUI形式のvirt-managerをつかって、ボタンをポチポチ押しながらゲストOSをインストールしていました。 しかし、調べていくうちに、qemuコマンドラインのみで仮想マシンを起動しWindowsをインストールする方法にたどり着いたので、それについてまとめておこうと思います。 virt-managerは非常に便利ですが、libvirtやそれが依存する数多くのパッケージをインストールし、libvirtdなどをデーモンとして動かしておかなければなりません。 qemuコマンドラインのみでWindowsをインストールする方法をおさえておけば、本来不必要だったものをインストールしなくて済みますし、構成がシンプルであるため動作の仕組みが容易に理解でき、なにかトラブルがあった場合にも比較的容易にデバッグが可能になると期待できます。 ## Windows10インストール ### 事前準備 #### インストールメディア、virtioドライバのダウンロード まず、あらかじめ必要なものをダウンロードしておきます。 * Windows10のインストールメディアWin10_22H2_Japanese_x64.isoを、[Microsoftのページ](https://www.microsoft.com/ja-jp/software-download/windows10ISO)からダウンロードする。 * virtioドライバをが必要になるので、[Fedoraのページ](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/)からダウンロードします。今回は、この記事の執筆時点で最新のvirtio-win-0.1.229.isoを利用しました