走り書き。
IOMMUなどの設定は必要。OVMFの記事ではあるがArchWikiに参考になる情報が載っている。
IOMMU の有効化 – OVMF による PCI パススルー – ArchWiki
GPUの分離 – OVMF による PCI パススルー – ArchWiki
- 基本的なインストール
とりあえず周辺パッケージを入れる。基本的には
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。