有人在 Ubuntu 16.04 上成功设置了 VGA 直通吗?最简单的方法是什么?
我已经安装了虚拟管理器。
答案1
更新: 现在,我已经可以正常使用 libvirt 了。对我来说,唯一的麻烦就是学习如何伪造 Windows NVidia 驱动程序相信这是不是在虚拟机中运行。我通过<kvm><hidden state='on'/></kvm>
向<features>
块 中添加和实现这一点。(更新 2:hypervclock 现在似乎可以被现代 NVidia 驱动程序接受。)<timer name='hypervclock' present='no'/>
来<clock>
原始答案:
没有“简单”的方法,我只是直接用 libvirt/virt-manager 添加 PCI 设备取得了部分成功。 我确实按照本指南获得了无可争议的成功。
然而,我必须阅读大量其他教程和论坛的资料才能了解发生了什么。 以下是我希望在刚开始时就掌握的术语列表。
基本步骤如下:
- 切断你的直通 VGA 设备,这样 Ubuntu 就不会认领它
- 编写 qemu 命令行脚本来...
- 添加 ioh3420 虚拟 PCI 根端口
- 添加您的 VGA 设备
- 将同一 IOMMU 组中的任何其他设备添加为 VGA 设备
- 添加鼠标/键盘
这是上面链接中的脚本,全部归功于作者 Matt Bach。
#!/bin/bash
configfile=/etc/virt/vfio-pci1.cfg
vfiobind() {
dev="$1"
vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
device=$(cat /sys/bus/pci/devices/$dev/device)
if [ -e /sys/bus/pci/devices/$dev/driver ]; then
echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
fi
echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
}
modprobe vfio-pci
cat $configfile | while read line;do
echo $line | grep ^# >/dev/null 2>&1 && continue
vfiobind $line
done
sudo qemu-system-x86_64 -enable-kvm -M q35 -m 4096 -cpu host,kvm=off \
-name cmdline \
-smp 4,sockets=1,cores=4,threads=1 \
-bios /usr/share/qemu/bios.bin -vga none \
-usb \
-usbdevice host:046d:c52b,hostbus=3,hostaddr=7 \ // My logitech mouse/kb receiver
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=05:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=05:00.1,bus=root.1,addr=00.1 \
-drive file=/home/at/virt/windows1.img,id=disk,format=qcow2,cache=none,if=none -device ide-hd,drive=disk \
-drive file=/home/at/virt/win7.iso,id=isocd,cache=none,if=none,format=raw -device ide-cd,bus=ide.2,drive=isocd \
-boot menu=on