"iso" target for rumprun (was: Re: file system access on cloud instances)

  • From: Antti Kantee <pooka@xxxxxx>
  • To: rumpkernel-users@xxxxxxxxxxxxx
  • Date: Tue, 19 May 2015 15:28:16 +0000

Ok, creating a self-contained iso now works.

Current limitations: it works only for the baremetal platform, only for virtio devices, and supports only one -b argument (*). Addressing none of those is rocket science, but it will just take time to do properly, multiplied by the number of things that need to be done properly.

Should we want to support the same method on the xen PV platform, one would have to figure out how to create a bootable Xen PV ISO and also adapt the json config scheme to the xen platform (which in practical terms means unifying the config code between baremetal and xen, so it good also in that sense).

*) if you want to test nginx, just put the nginx files under /etc

Howto:

First build rumprun/baremetal the usual way. Then build an application with rumprun-bmk-cc, also the usual way.

Now create the iso, e.g.:
rumprun iso -b ~/temp/rump-nginx/images/stubetc.iso,/etc -I myif -W myif,inet,static,10.0.0.2/24 testprog

You should now have a rumprun-testprog.iso in the current directory. That iso is the only file that you need to copy around for deployment. We may want to add a hybrid variant some day, where the config file is NOT baked into the iso, but that's one of those tinkering exercises.

You can now run qemu. You must specify virtio devices. For example, I have a suitably configured tap0 interface on my system, so I can run:

qemu-system-i386 -enable-kvm -drive if=virtio,file=rumprun-testprog.iso -net nic,model=virtio -net tap,ifname=tap0

You can also use "-net user" as the second -net argument to qemu.

I have no idea if AWS supports virtio, but PCI hardware drivers (for HVM) are already working in my private tree, so they're not too far away in any case.

At some point we'll add better probing to the guestside config routines so you don't need a quite so meticulous connection between rumprun args and deployment, but for now the above should get the party started.

- antti

Other related posts: