尝试在 QEMU s390x 仿真下安装 RHEL 7

尝试在 QEMU s390x 仿真下安装 RHEL 7

我正在评估使用 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 上的 kernel 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++ 等的版本,以生成链接/在旧操作系统上运行的工件。

相关内容