之前在 2017 年 5 月我配置了一个虚拟 qemu 机器,它带有一个 radeon 5450 的 gpu 直通,除了在 VM 第二次启动后出现内核恐慌(在 VM 上)之外,它运行良好...
现在我正尝试用与以前相同的配置(只有 1-2 处不同)重新制作这台机器:
- 技嘉GA-990-FXA-ud3
- 英特尔® FX6300
- 第一显卡:NVidia GT210
- 第二张显卡:AMD Radeon HD5450
- Debian 8
自以下日期起发生的变化:
- 英特尔® FX8350
- 第一显卡:NVidia GT710
(我知道它的配置有点过时,但我不是游戏玩家,所以我不需要更多)
我已经编写了这个启动脚本:
#/bin/sh
echo '0000:02:00.1' | tee /sys/bus/pci/devices/0000:02:00.1/driver/unbind
modprobe vfio
modprobe vfio_pci
echo 1002 68f9 | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id
echo 1002 aa68 | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id
qemu-system-x86_64 -M q35 -m 2048 -enable-kvm \
-bios OVMF.fd \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-soundhw ac97 \
-hda virtualrawdrive -cdrom ubuntuinstall.iso \
-device piix4-ide,bus=pcie.0,id=piix4-ide -device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on -device vfio-pci,host=02:00.1,bus=pcie.0 \
-vnc :0
但它不起作用,当我启动脚本时,第二个显卡 VGA 屏幕亮起,显示 ubuntu plymouth 屏幕,之后什么也没发生,屏幕保持亮着,但显示黑屏。
我的 lspci -nnk:
[...]
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK208B [GeForce GT 710] [10de:128b] (rev a1)
Subsystem: Gigabyte Technology Co., Ltd GK208B [GeForce GT 710] [1458:36f7]
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
01:00.1 Audio device [0403]: NVIDIA Corporation GK208 HDMI/DP Audio Controller [10de:0e0f] (rev a1)
Subsystem: Gigabyte Technology Co., Ltd GK208 HDMI/DP Audio Controller [1458:36f7]
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
02:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cedar [Radeon HD 5000/6000/7350/8350 Series] [1002:68f9]
Subsystem: Micro-Star International Co., Ltd. [MSI] Cedar [Radeon HD 5000/6000/7350/8350 Series] [1462:2127]
Kernel driver in use: vfio-pci
Kernel modules: radeon
02:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cedar HDMI Audio [Radeon HD 5400/6300/7300 Series] [1002:aa68]
Subsystem: Micro-Star International Co., Ltd. [MSI] Cedar HDMI Audio [Radeon HD 5400/6300/7300 Series] [1462:aa68]
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
[...]
我之前的 2017 年脚本:
echo '0000:02:00.1' | sudo tee /sys/bus/pci/devices/0000:02:00.1/driver/unbind
modprobe vfio
modprobe vfio_pci
echo 1002 68f9 | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id
echo 1002 aa68 | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id
qemu-system-x86_64 -enable-kvm -M q35 -m 2048 -cpu host -smp 2,sockets=1,cores=2,threads=1 \
-bios /usr/share/qemu/bios.bin \
-vga none -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device piix4-ide,bus=pcie.0,id=piix4-ide -device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on -device vfio-pci,host=02:00.1,bus=pcie.0 \
-soundhw ac97 \
-drive file=/home/user/ubuntuimage,id=disk,format=raw,if=none -device ide-hd,bus=piix4-ide.0,drive=disk
我认为问题出在“x-vga=on”选项,但它在新版本上不起作用,我收到此错误:
qemu-system-x86_64: -device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio 0000:02:00.0: failed getting region info for VGA region index 8: Invalid argument
device does not support requested feature x-vga
我尝试使用“新”版本的 qemu(4.0.0)和 OVMF(从 GIT 源编译),但它并没有改变任何东西......
提前感谢你的回答
附言:抱歉我的英语不好,我是法国人
答案1
根据最后一条评论,我已经在模拟显卡中安装了操作系统,然后我从 gpu passtrought 重新启动,一切都运行正常!
我的启动脚本:
#!/bin/sh
#network configuration
/usr/bin/tunctl -t tap0
/sbin/brctl addif br0 tap0
/sbin/ifconfig tap0 up
#passtrought configuration
echo '0000:02:00.1' | tee /sys/bus/pci/devices/0000:02:00.1/driver/unbind
modprobe vfio
modprobe vfio_pci
echo 1002 68f9 | tee /sys/bus/pci/drivers/vfio-pci/new_id
echo 1002 aa68 | tee /sys/bus/pci/drivers/vfio-pci/new_id
#virtual machine start
/usr/local/bin/qemu-system-x86_64 -M q35 -m 6144 -enable-kvm -smp 2 \
-bios /path/to/OVMF.fd \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 -vga none \
-usb -device usb-host,vendorid=0x0461,productid=0x4d20 -device usb-host,vendorid=0x0b38,productid=0x0003 -soundhw ac97 \
-drive file=OS-image.img,index=0,media=disk,format=raw \
-vnc :0 \
-netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no -device e1000,netdev=mynet0,mac=52:55:00:d1:55:01 \
-device piix4-ide,bus=pcie.0,id=piix4-ide -device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on -device vfio-pci,host=02:00.1,bus=pcie.0 \
exit 0