
Я оцениваю использование QEMU для создания виртуальных машин Linux s390x для использования в сборках программного обеспечения. У меня были некоторые успехи в создании машин с использованием новых дистрибутивов Linux, таких как RHEL 8 и Ubuntu 20, но мне действительно нужна машина 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
Я пробовал образы kernel+initrd из области образов DVD, а также те, что были извлечены из пакета RPM ядра 3.10 на DVD. Я пробовал различные релизы RHEL 7.x, все с тем же результатом - эмулятор сразу же завершает работу, оставляя только отладочный вывод, например:
Guest crashed on cpu 0: disabled-wait
PSW: 0x000a000000000000 0x000000008badcccc
Есть ли у кого-нибудь советы, как заставить работать RHEL 7 s390x?
решение1
Похоже, ответ в том, что это невозможно из-за функций ядра, которых нет ни в одной версии RHEL7, согласно комментариямQEMU выпуск 906
Я решил свою проблему, собрав проект под эмуляцией s390x с Fedora 36, используя цепочку инструментов crosstool-ng для управления версиями gcc/libc/libstdc++ и т. д., чтобы создавать артефакты, которые связываются/работают на старых операционных системах.