全部,
我一直在研究在主机的共享内存和来宾操作系统的共享内存之间传递东西,并且遇到了这个链接。我已经能够使用 Ubuntu 20.04 VM 成功重现链接中显示的输出,并使用qemu-system-x86_64
. 我很好奇等效命令可能适用于qemu-system-sparc
Solaris 8 来宾。
我尝试过以下命令:
./qemu-system-sparc -M SS-5 -m 128 -bios ./ss5.bin -drive file=sol8.qcow2,bus=0,unit=0,media=disk -object memory-backend-file,size=16M,share=on,mem-path=/dev/shm/shm1,id=shm1 -device ivshmem-plain,memdev=shm1,bus=pci.0,addr=0x10,master=on
由于以下原因,此操作失败:
qemu-system-sparc: -device ivshmem-plain,memdev=shm1,bus=pci.0,addr=0x10,master=on: 'ivshmem-plain' is not a valid device model name
这种通过共享内存传递数据的愿望可能吗qemu-system-sparc
?
看来这是不可能的。qemu-system-sparc不支持 PCI,并且ivshmem设备被模拟为 PCI 设备。另一方面,qemu-system-sparc64确实支持 PCI,但它可能无法满足hw/misc/Kconfig中的MSI_NONBROKEN条件(LINUX和IVSHMEM取决于主机,而不是客户系统):
我无法最终确定
MSI_NONBROKEN
x86/64 上的具体设置,可能是某些系统外围设备。您可以快速检查特定 QEMU 模拟器中支持的设备,如下所示:
您将看到 SPARC 仿真器支持……嗯,什么也不支持。SPARC64通过支持PCI来支持多一点。
据我所知,最好的选择是尝试使用读写共享虚拟磁盘。但不知道这在实践中会如何运作。也许可以尝试使用小型 RAW(不是 QCOW2 等)图像文件。起点记录在此处(禁用锁定等),但我不确定如何从那里开始。您需要以某种方式将其作为 SCSI 虚拟硬盘添加到您的 VM 中。