Using a headless Ubuntu 14.04 server, I'm running a Windows 7 guest in Qemu to which I am passing through the GPU (for performance). I am writing an application for which part will be running in Linux, and part will be running in the Windows guest, and I need communication between the two. Researching this has led me to believe my best option would be using Virtio-serial drivers so I can simply communicate between the two as if they had a serial connection; this sounds fabulous, but I can't for the life of me figure out how to get it working. I've found a few resources which detail the necessary Qemu command line options, such as here, but I've failed to find any resources on how to initiate communication from the Guest's side. It seems most people doing this type of thing are doing so with Linux guest OSes, which I'm sure greatly simplifies things.

Network communication may not be an option, as we will most likely be passing the NIC through to the Guest OS as well (again, performance is critical for the guest OS). Even if not, that seems like an unnecessarily heavy option for simple communication between applications.

I have also considered creating an SMB share, and storing a database there that can be connected to from multiple hosts, then running mysql on the host and guest. But this also seems far less than ideal... Does anyone have any experience with this, or maybe an obvious suggestion I'm missing?


I meant to include my qemu shell script:

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 

The page you refer to includes a link to the API to use from Windows guests (as well as Linux guests). I believe this is what you're looking for.

Also, the QEMU Guest Agent source code has a working example of how the qemu guest agent uses virtio-serial within Windows.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.