qemu-system-sparc: общая память между хостом и гостем

qemu-system-sparc: общая память между хостом и гостем

Все,

Я изучал передачу данных между общей памятью хоста и общей памятью гостевой ОС и наткнулся наэта ссылка. Мне удалось успешно воспроизвести вывод, показанный по ссылке, используя виртуальную машину Ubuntu 20.04 и запустив ее с помощью 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?

решение1

По-видимому, это невозможно.qemu-система-sparcне поддерживает PCI иившмемустройства эмулируются как устройства PCI.qemu-система-sparc64с другой стороныделаетподдержка PCI, однако она может не соответствоватьMSI_NONBROKENсостояние вhw/misc/Kconfig(ЛИНУКСиИВШМЭМзависят от хоста, а не от гостевой системы):

config IVSHMEM_DEVICE
    bool
    default y if PCI_DEVICES
    depends on PCI && LINUX && IVSHMEM && MSI_NONBROKEN

Мне не удалось точно выяснить, что именно устанавливает MSI_NONBROKENx86/64, возможно, какое-то периферийное устройство системы.

Вы можете быстро проверить наличие поддерживаемых устройств в вашем эмуляторе QEMU следующим образом:

qemu-system-sparc -device help
qemu-system-sparc64 -device help

Вы увидите, что эмулятор SPARC поддерживает... ну, ничего. SPARC64 поддерживает немного больше, поддерживая PCI.


Насколько я понимаю, лучше всего попробовать использовать общий виртуальный диск для чтения и записи. Не знаю, как это будет работать на практике. Может быть, попробовать с небольшим файлом образа RAW (не QCOW2 или что-то в этом роде). Начальная точка задокументированаздесь(отключение блокировки и т. д.), но я не уверен, как это сделать. Вам нужно как-то добавить его как виртуальный жесткий диск SCSI к вашей виртуальной машине.

Связанный контент