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