0.首先查阅官方的硬件支持列表或者查看BIOS中的相关选项,以确认cpu及主板是否支持intel或amd的硬件辅助虚拟化功能。另外需透传的设备也需支持pci-passthrough
以下步骤基于环境:Intel(R) Core(TM) i7-4790 CPU + Xilinx artix7 +ubuntu 16.04.3 LTS
1.在bios中打开硬件辅助虚拟化功能
将VT(VT-x)及VT-d选项更改为enable,使其支持硬件虚拟化。
2.编辑文件 /etc/default/grub,以更改liunx内核启动参数
在
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on"
GRUB_CMDLINE_LINUX="locale=zh_CN intel_iommu=on"
中增加 intel_iommu=on
接着运行:
sudo update-grub
或
grub-mkconfig -o /boot/grub/grub.cfg
以更新刚刚修改的内核参数,之后进行重启。
运行
cat /proc/cmdline |grep iommu
以查看目前的内核启动参数
有输出即为配置成功
输出如下:
运行
运行
virsh nodedev-dumpxml pci_0000_05_00_0
以查看此设备信息
可以看到目前的驱动为xdma
4. 将设备与目前的驱动解绑
运行
virsh nodedev-detach pci_0000_05_00_0
得到结果
此时再次运行
virsh nodedev-dumpxml pci_0000_05_00_0
查看设备信息
此时设备没有驱动
5.加载vfio模块
modprobe vfio
modprobe vfio-pci
运行
lsmod | grep vfio
有输出即为加载成功
6.挂载vfio驱动
运行
sudo echo 10ee 7014 >/sys/bus/pci/drivers/vfio-pci/new_id
再次运行
virsh nodedev-dumpxml pci_0000_05_00_0
查看设备信息
此时的driver为vfio-pci
7.阶段性验证
此时查看设备所处的iommu_group
查看到设备所处的组号为13
查看此组下的所有设备
发现此组下只有一个设备0000:05:00.0
检测iommu_group是否绑定成功,运行
ls /dev/vfio
输出
会发现此文件夹下多了13这个组号,即为挂载成功!
8.启动KVM虚拟机
在终端输入以启动虚拟机管理软件
sudo virt-manager
点击感叹号对虚拟机硬件设备进行设置
点击 添加硬件 将FPGA添加至虚拟机的硬件菜单中
之后启动虚拟机
9.结果验证
在虚拟机中运行
lspci -nn
FPGA透传给KVM虚拟机完成。
1.在宿主机中 运行 load_driver.sh 安装FPGA驱动时,出现权限不够的问题
解决方法:用 chmod 命令对shell脚本预付权限,再执行即可
# chmod 777 ./load.driver.sh
# ./load_driver.sh
2.安装FPGA驱动,出现Failed的问题
解决方法:
3.执行
virsh nodedev-detach pci_0000_05_00_0
出现如下错误:
neither VFIO nor KVM device assignment is currently supported on this system
并且在下面的文件夹中找不到 iommu_group及iommu文件夹。
根据目前的认识,问题可能都出现在一个地方
在对内核启动文件进行更改时,开始只更改了
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on"
而对下面这个参数没有做更改
GRUB_CMDLINE_LINUX="locale=zh_CN"
之后对此参数进行修改如下
再按照上方流程中的更新方式对grub文件进行更新并重启。
重启后,能够找到 iommu_group及iommu文件夹,能够对设备与其目前驱动进行解绑,能够查看此设别的iommu组号,能够将设备与vfio驱动挂载,进而继续上方(一)中的流程。
!!!特别注意:在将设备与宿主机上的驱动解绑之前,一定要为设备安装上驱动,再进行解绑!
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务