
私は、ソフトウェア ビルドで使用する s390x Linux 仮想マシンを作成するために QEMU の使用を評価しています。RHEL 8 や Ubuntu 20 などの新しい Linux ディストリビューションを使用してマシンを作成することに成功しましたが、本当に必要なのは RHEL 7 マシンです。
私は Fedora 36 x86 を使用しており、Fedora QEMU 6.2 パッケージとソースからビルドされた現在の QEMU 7.x の両方で次のことを試しています。
qemu-img create -f qcow2 rootfs.qcow2 20G
qemu-system-s390x \
-M s390-ccw-virtio -m 4G -smp 2 -cpu max \
-drive file=rhel-server-7.9-s390x-dvd.iso,media=cdrom,if=none,id=drive-virtio-disk1 \
-device virtio-scsi -device scsi-cd,drive=drive-virtio-disk1,bootindex=1 \
-drive file=rootfs.qcow2,if=none,id=drive-virtio-disk0 \
-device virtio-blk-ccw,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=2,scsi=off \
-net nic,model=virtio,netdev=net1 -netdev user,id=net1 \
-nographic -display none -serial mon:stdio \
-d guest_errors \
-kernel kernel.img -initrd initrd.img
DVD のイメージ領域からカーネル + initrd イメージを試しましたが、DVD のカーネル 3.10 RPM パッケージから抽出したものも試しました。さまざまな RHEL 7.x リリースを試しましたが、すべて同じ結果になりました。エミュレーターはデバッグ出力のみですぐに終了します。例:
Guest crashed on cpu 0: disabled-wait
PSW: 0x000a000000000000 0x000000008badcccc
RHEL 7 s390x を動作させるためのアドバイスはありますか?
答え1
答えは、RHEL7のどのリリースにも含まれていないカーネル機能のため不可能であるということのようです。QEMU 問題 906
私は、Fedora 36 を実行する s390x エミュレーションでビルドし、crosstool-ng ツールチェーンを使用して gcc/libc/libstdc++ などのバージョンを制御し、古い O/S でリンク/実行される成果物を生成することで問題を解決しました。