Die Kommunikation mit dem Windows-Gastbetriebssystem wird in Qemu ausgeführt

1046
bkane521

Ich verwende einen Ubuntu 14.04-Headless-Server und führe einen Windows 7-Gast in Qemu aus, zu dem ich die GPU (für die Leistung) durchgehe. Ich schreibe eine Anwendung, für die ein Teil unter Linux ausgeführt wird, und ein Teil wird auf dem Windows-Gast ausgeführt, und ich muss zwischen den beiden kommunizieren. Das Nachforschen veranlaßte mich zu der Überzeugung, dass meine beste Option die Verwendung von seriellen Virtio-Treibern wäre, sodass ich einfach zwischen den beiden kommunizieren kann, als ob sie eine serielle Verbindung hätten. das klingt fabelhaft, aber ich kann nicht für mein Leben herausfinden, wie ich es zum Laufen bringen kann. Ich habe ein paar Ressourcen gefunden, die die erforderlichen Qemu-Befehlszeilenoptionen detailliert beschreiben, wie hier, aber ich habe keine Ressourcen gefunden, wie die Kommunikation vom Guest initiiert werden kannSeite. Es scheint, dass die meisten Leute, die diese Art von Dingen machen, dies mit Linux-Gastbetriebssystemen tun, was die Dinge sicherlich vereinfacht.

Netzwerkkommunikation ist möglicherweise keine Option, da wir die NIC höchstwahrscheinlich auch an das Gastbetriebssystem weiterleiten (wiederum ist die Leistung für das Gastbetriebssystem von entscheidender Bedeutung). Auch wenn nicht, scheint dies eine unnötig schwere Option für die einfache Kommunikation zwischen Anwendungen zu sein.

Ich habe auch darüber nachgedacht, eine SMB-Freigabe zu erstellen und dort eine Datenbank zu speichern, mit der von mehreren Hosts aus eine Verbindung hergestellt werden kann. Anschließend wird mysql auf dem Host und dem Gast ausgeführt. Aber das scheint auch alles andere als ideal zu sein ... Hat jemand Erfahrung damit oder vielleicht einen offensichtlichen Vorschlag, den ich vermisse?

Bearbeiten:

Ich wollte mein Qemu-Shellskript einschließen:

sudo qemu-system-x86_64 -enable-kvm -M q35 -m 3072 -cpu host -smp 4  -bios /usr/share/qemu/bios.bin -vga none -nographic -serial mon:stdio  -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1  -device vfio-pci,host=00:01.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on  -device vfio-pci,host=00:01.1,bus=root.1,addr=00.1  -device virtio-scsi-pci,id=scsi  -drive file=/utils/WES7.img,id=disk,format=raw,if=none -device ide-hd,drive=disk  -drive file=/home/mvsuser/virtio-win-0.1-100.iso,id=virtiocd,if=none -device ide-cd,bus=ide.1,drive=virtiocd  -usb -usbdevice host:046d:C52B  -net bridge -net nic,model=virtio  -chardev socket,path=/tmp/port0,server,nowait,id=port0-char  -device virtio-serial  -device virtserialport,id=port1,name=vioserial,chardev=port0-char  
0

1 Antwort auf die Frage

0
gopher

Die Seite, auf die Sie sich beziehen, enthält einen Link zur API, die von Windows-Gästen (sowie Linux-Gästen) verwendet werden kann. Ich glaube, das ist, wonach Sie suchen.

Der QEMU-Guest-Agent-Quellcode enthält ein funktionierendes Beispiel dafür, wie der qemu-Guest-Agent virtio-seriell in Windows verwendet.