目次

KVMでWindowsを動かし、virtio化

VirtIO Drivers

https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html

https://fedoraproject.org/wiki/Windows_Virtio_Drivers

virtioでインストールしようとすると、起動時にF6でvirtio driverを読みこませる必要があります。

そこで先にideでインストールし、後からvirtio化するのが簡単だと思われます。

一連の流れ

  1. ideでインストール
  2. シャットダウン(仮想Windows)
  3. virtioのダミーディスクを追加
  4. 起動(仮想Windows)
  5. virtioのドライバインストール(仮想Windows)
  6. virshで定義ファイルを修正

virtioのダミーディスクを追加

イメージファイルの作成

ideでサーバをインストールした後、

ダミーファイル用のイメージファイルを作成

# qemu-img create -f qcow2 /tmp/test.img

定義を修正

virtioドライバも一緒に定義しておく

    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/tmp/test.img'/>
      <target dev='vdb' bus='virtio'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu'/>
      <source file='/CDROM/virtio-win-0.1-30.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
    </disk>

ドライバーについて

   Balloon: このバルーンドライバーは システムデバイス グループの PCI 標準 RAM コントローラー に影響します。
  vioserial: このシリアルドライバーは、システムデバイス グループの PCI シンプル通信コントローラー に影響します。
  NetKVM: このネットワークドライバーは、ネットワークアダプター グループに影響します。このドライバーは、virtio NIC が設定されている場合のみ利用可能です。このドライバーの設定可能パラメーターは、付録A NetKVM ドライバーパラメーター で説明されています。
  viostor: このブロックドライバーは、ディスクドライブ グループに影響します。このドライバーは、virtio ディスクが設定されている場合のみ利用可能です。 

virtioドライバインストール

ダミーディスクを定義して起動すると、デバイスマネージャにデバイスができているので

cdromのドライバをインストールする。

最後にメインのディスクイメージの定義を変更

再度、シャットダウンしてメインのディスクイメージ定義をvirtioに変更する。

    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/opt/hde/libvirt/domains/win01/images/win01.img'/>
      <target dev='hdc' bus='ide'/>
    </disk>
    
    ↓  ↓
    
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/opt/hde/libvirt/domains/win01/images/win01.img'/>
      <target dev='vda' bus='virtio'/>
    </disk>

Nic

    <interface type='bridge'>
      <mac address='XX:XX:XX:99:99:00'/>
      <source bridge='br0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

    ↓  ↓

    <interface type='bridge'>
      <mac address='XX:XX:XX:99:99:00'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>