全て、
ホストの共有メモリとゲストOSの共有メモリの間でデータをやり取りする方法を調べていたところ、このリンク。Ubuntu 20.04 VM を使用して で起動すると、リンクに示されている出力を正常に再現できました。Solaris 8 ゲストの場合、qemu-system-x86_64
同等のコマンドが何になるのか興味があります。qemu-system-sparc
次のコマンドを試しました:
./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 システム sparcPCIをサポートしておらず、ivshmemデバイスは PCI デバイスとしてエミュレートされます。qemu システム sparc64一方でするPCIをサポートしていますが、MSI_非破損状態ハードウェア/その他/Kconfig(リナックスそしてIVSHMEMゲスト システムではなくホストに依存します):
config IVSHMEM_DEVICE
bool
default y if PCI_DEVICES
depends on PCI && LINUX && IVSHMEM && MSI_NONBROKEN
MSI_NONBROKEN
x86/64 で何が正確に設定されるのかを決定的に調べることはできませんでしたが、おそらく何らかのシステム周辺機器が原因でしょう。
次のようにして、特定の QEMU エミュレーターでサポートされているデバイスをすばやく確認できます。
qemu-system-sparc -device help
qemu-system-sparc64 -device help
SPARC エミュレータは何もサポートしていないことがわかります。SPARC64 は PCI をサポートすることで、もう少し多くの機能をサポートします。
私の見るところ、一番いい方法は、読み書き可能な共有仮想ディスクを使うことです。ただし、実際にどのように機能するかはわかりません。小さな RAW (QCOW2 などではない) イメージ ファイルで試してみるといいかもしれません。出発点は文書化されています。ここ(ロックを無効にするなど) ですが、そこからどうすればよいかわかりません。 何らかの方法で、SCSI 仮想ハード ドライブとして VM に追加する必要があります。