web-dev-qa-db-ja.com

Linux KVM uefi vs bios&PCI-パススルー

Linuxkvmマシンをセットアップしようとしています。私はいくつかの奇妙な問題に遭遇しています。少し背景。ホストマシンはuefih170ボードですが、MSI Radeon R7 240はuefiをサポートしていることを知っています。これは、kvmで遊ぶ前に、それを使用してホストOSをインストールする必要があったためです。

Seabiosを使用する場合、pciパススルーは正常に機能します。私は実際に、パススルーされたマウス、キーボード、およびradeonカードのモニターを介してWindows全体をインストールします。

ただし、virt-managerを使用して同じマシンを構築し、ビデオをパススルーすると、機能しません。

virt-managerまたはcli経由でuefiを使用すると、ビデオパススルーが機能しません。

これが私の作業文字列です(どういうわけか2つのNICで終わりますが!?)

qemu-system-x86_64 -enable-kvm -M q35 -m 3072 -cpu Host \
-smp 2,sockets=1,cores=2,threads=1 \
-bios /usr/share/qemu/bios.bin -vga none \
-device virtio-scsi-pci,id=scsi \
-drive file=/srv/wip.img,format=raw,id=disk,if=none,cache=directsync,aio=native \
-device scsi-hd,drive=disk \
-cdrom /home/driz/win10.iso \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,Host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device virtio-net-pci,mac=52:54:00:ea:c8:8d \
-usb -usbdevice Host:040b:2000 -usbdevice Host:046d:c01e -usbdevice Host:0d8c:0014 \
-boot menu=on

これは機能しないテスト文字列です

qemu-system-x86_64 -enable-kvm -M q35 -m 3072 -cpu Host \
-smp 2,sockets=1,cores=2,threads=1 \
-mem-path /dev/hugepages \
-mem-prealloc \
-drive file=/srv/ovmf-x64/OVMF_CODE-pure-efi.fd,if=pflash,format=raw,unit=0,readonly=on \
-drive file=/srv/ovmf-x64/OVMF_VARS-pure-efi.fd,if=pflash,format=raw,unit=1 \
-device i82801b11-bridge,id=pci.1,bus=pcie.0,addr=0x1e \
-device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.1,addr=0x0 \
-device virtio-scsi-pci,id=scsi0,bus=pci.2,addr=0x2 \
-drive file=/srv/wip2.img,format=raw,if=none,id=drive-scsi0-0-0-0 \
-device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0 \
-cdrom /srv/win10.iso \
-device virtio-net-pci,mac=52:54:00:ea:c8:8d \
-device vfio-pci,Host=01:00.0,multifunction=on \
-nographic \
-usb -usbdevice Host:040b:2000 -usbdevice Host:046d:c01e -usbdevice Host:0d8c:0014 \
-device virtio-balloon-pci,id=balloon0,bus=pci.2,addr=0x4 \
-boot menu=on

私は今これに取り組んで、私ができるところならどこでも研究するのに約4日を費やしました、そして私の子供たちはついに遅れに腹を立てています。どんな助けでも大歓迎です!

1
driz

ビデオROMを手動で指定すると、CLIバージョンの問題が修正されました。 virshでは、以下に示すようにromを(適切なバージョンで)定義できます。

   <hostdev>
     ...
     <rom file='/etc/fake/boot.bin'/>
     ...
   </hostdev>

cLIで

追加 romfile=/path/to/your/rom/romfile.rompciパススルーデバイスの最後まで

2
driz