
我正在評估使用 QEMU 創建 s390x Linux 虛擬機器以用於軟體建置。我已經在使用較新的 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
我嘗試過 DVD 映像區域中的 kernel+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++ 等的版本,以產生在舊作業系統上連結/運行的工件。