virt-builder now has Fedora 21 ppc64 and ppc64le images available, and you can run these under emulation on an x86-64 host. Here’s how to do it:
$ virt-builder --arch ppc64 fedora-21 \ -o fedora-21-ppc64.img
$ virt-builder --arch ppc64le fedora-21 \ -o fedora-21-ppc64le.img
To boot them:
$ qemu-system-ppc64 -M pseries -cpu POWER8 -m 4096 \ -drive file=fedora-21-ppc64[le].img \ -serial stdio
Oddly the boot messages will appear on the GUI, but the login prompt will only appear on the serial console. (Fixed)
Libvirt also has support, so with a sufficiently new version of the toolchain you can also use:
$ virt-install --import --name=guestname \ --ram=4096 --vcpus=1 \ --os-type=linux --os-variant=fedora21 \ --arch=ppc64[le] --machine pseries \ --disk=fedora-21-ppc64[le].img,format=raw $ virsh start guestname
It’s quite fun to play with Big Iron, even in an emulator that runs at about 1/1000th the speed of the real thing. I know a lot about this, because we have POWER8 machines at Red Hat, and they really are the fastest computers alive, by a significant multiple. Of course, they also cost a fortune and use huge amounts of power.
Some random observations:
virt-builder --sizeparameter cannot resize the ppc64 guest filesystem correctly, because Anaconda uses an extended partition. Workaround is to either add a second disk or to create another extended partition in the extra space.
- The disks are
ibmvscsimodel (not virtio or ide). This is the default, but something to think about if you edit or create the libvirt XML manually.
Somehow the same CPU/machine model works for both Big Endian and Little Endian guests. It must somehow auto-detect the guest type, but I couldn’t work out how that works. Anyway, it just works by magic.it’s done by the kernel
- libguestfs inspection is broken for ppc64le
- Because TCG (qemu software emulation) is single threaded, only use a single vCPU. If you use more, it’ll actually slow the thing down.
Thanks: Maros Zatko for working out the virt-install command line and implementing the virt-builder script to build the images.