Comment 0 for bug 2023211

Revision history for this message
Colin Watson (cjwatson) wrote :

(Filing this here on the advice of ~freyes. I don't operate the actual Nova installation I'm working with here, so I can't provide most of the software versions and such, but hopefully Canonical people will be able to work out what's involved with PS6.)

In the Launchpad build farm, we run a cluster of riscv64 virtual machines that deal with building riscv64 artifacts, including .debs for Ubuntu itself. We don't currently have hypervisor-capable riscv64 hardware to run these on, so we're using qemu system emulation on commodity amd64 hardware. This works OK, but we currently do this in manually-configured libvirt instances; we'd much rather be able to do it on our internal OpenStack clouds.

What I've tried so far (on PS6, for Canonical folks to whom that's meaningful):

  $ wget http://cloud-images.ubuntu.com/server/releases/jammy/release-20220420/ubuntu-22.04-server-cloudimg-riscv64.img
  $ openstack image create --disk-format qcow2 --file ~cjwatson/ubuntu-22.04-server-cloudimg-riscv64.img --private --property architecture=riscv64 --property item_name=disk1.img --property os_distro=ubuntu --property os_version=22.04 cjwatson-riscv64-test
  $ openstack image set --property hw_emulation_architecture=riscv64 cjwatson-riscv64-test
  $ openstack image set --property hw_machine_type=virt cjwatson-riscv64-test
  $ openstack server create --image cjwatson-riscv64-test --flavor vbuilder --network vbuilder_staging_test_net cjwatson-riscv64-test
  Invalid image metadata. Error: Architecture name 'riscv64' is not valid (HTTP 400) (Request-ID: req-023932ea-7c90-4be3-89b8-6bd19718919a)

This causes me to think that, even if I've left out some property or other (e.g. firmware), basic things like the riscv64 architecture name being valid aren't currently in place. But it's certainly possible I've got something wrong here. If there's a known way to make this work, could it please be documented?

I've attached `virsh dumpxml` output from one of the manual libvirt instances we use at present, in case it's useful.