走り書き。

IOMMUなどの設定は必要。OVMFの記事ではあるがArchWikiに参考になる情報が載っている。

IOMMU の有効化 – OVMF による PCI パススルー – ArchWiki
GPUの分離 – OVMF による PCI パススルー – ArchWiki

  1. 基本的なインストール

とりあえず周辺パッケージを入れる。基本的には

libvirt-binはUbuntu 18.xからなくなったようなので注意。基本的にWikiにしたがってインストールすれば問題ない。

KVM/Installation – Community Help Wiki

E: Unable to locate package libvirt-bin

virsh list --all してエラーがでなければOk

2. Macのvirt-managerから接続する

virt-managerをMacBookにインストール – Qiita

このあたり。SSHで接続するので、コマンドでソケットの場所を指定するのを忘れずに。忘れるとデフォルトの場所に探しに行くため引っかかる。

3. `virt-install` でとりあえず生成

Mac等のリモートからの接続だと、ISOなんかをアップロードすることができない。そのため、ホストにSSHで入りvirt-installを使って一度VMを作成する。

virt-install --name=test --vcpus=8 --memory=4096 --cdrom=ubuntu-20.04-live-server-amd64.iso --disk=path=/var/lib/libvirt/images/test.img,size=20,format=raw

コマンド叩いてしばらくすると、Macの方からコンテナを観測できる。一度強制的に終了させることで、設定の編集が可能になる。設定はお好み。

4. ホスト側でGPUを

GPUの分離は下のコマンド叩いて[]の中のIDをvfioで使うようにする。mkinitcpio は書かなくてもできた(あまり良くなさそう)。

> lspci -nn | grep -i nvidia

26:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117 [GeForce GTX 1650] [10de:1f82] (rev a1)
26:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10fa] (rev a1)

> vi /etc/modprobe.d/vfio.conf

options vfio-pci ids=10de:1f82,10de:10f0

適応してから lsmod | grep -i nouveau 、なにも出なければOK

5. ゲスト側XMLの編集

例のやつ。kvm, hypervを追加。適応後ホストの再起動が必要?ゲストのみではうまく行かなかった。

  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <vendor_id state="on" value="whatever"/>
    </hyperv>
    <kvm>
      <hidden state="on"/>
    </kvm>
    <vmport state="off"/>
  </features>

再起動して、公式ドライバ入れて sudo nvidia-smi でエラーがでなければOK。