#Kubuntu20.10(KVM)でオンボードWifi IFをパススルー
所有のマザーボード(AMD B550)でオンボードのWifiデバイスをPCIパススルーしたいと思いました。
が、同じIOMMUグループに他いろいろなPCIデバイスが含まれていてました。
そんなわけでACSオーバーライドパッチ(カーネル)を試して見ることにしました。
参考:https://benisnous.com/easy-acs-kernel-patch-guide-for-ubuntu-20-04/
##ACSオーバライドカーネルのインストール
ACSオーバライドカーネル配布サイト
https://queuecumber.gitlab.io/linux-acs-override/
ACSオーバーライドカーネルのインストール
# dpkg -i linux-headers-5.8.18-acso_5.8.18-acso-1_amd64.deb
# dpkg -i linux-image-5.8.18-acso_5.8.18-acso-1_amd64.deb
###GRUBの設定
カーネルパラメータにpcie_acs_override=downstream,multifunctionの追加
私の環境ではmultifunctionもないとだめでした。
GRUBの設定
# vi /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on iommu=pt pcie_acs_override=downstream,multifunction"
:
# update-grub
確認のため再起動
再起動後、1PCIデイバス,1IOMMUグループ(ほぼ)になるはずです。
##vfioデバイスドライバ設定
参考:https://github.com/pavolelsig/passthrough_helper_ubuntu
vfioドライバ設定スクリプト
# vi /etc/modprobe.d/vfio-pci-override.sh
#! /bin/sh
#
# パススルーしたいベンダID:デバイスIDを設定
export DEVICE="8086:24FB"
#
for i in $( find /sys/devices/pci* -type f -name uevent -print ); do
for j in ${DEVICE}; do
grep -l $j $i && echo "vfio-pci" > $(busybox dirname $i)/driver_override
done
done
modprobe -i vfio-pci
# chmod +x vi /etc/modprobe.d/vfio-pci-override.sh
Wifiドライバ無効化とvfioドライバ設定スクリプト呼び出し設定
# vi /etc/modprobe.d/vfio-pci-override.conf
blacklist iwlwifi
install vfio-pci /etc/modprobe.d/vfio-pci-override.sh
vfioドライバ設定
# cat /etc/modules-load.d/vfio-pci-override.conf
vfio-pci
:
# update-initramfs -u
再起動
これで仮想マシンに「PCIホストデバイスの追加」してやれば、Wifi IFがパススルーできるはず。