There were a couple of minor log errors below, so I attach a script that does it all, tested on 32-bit Debian Jessie. cheers -ben On Sat, Dec 12, 2015 at 2:57 PM, Ben Coman <btc@openinworld.com> wrote:
Here is the recipe for my first successful build and run through to an error... StackVM.unikernel: could not find any display driver
This is done under 32-bit Debian 8 Jessie. Attached is StackRumpXenUnikernelConfig.st
# Built the Rumprun Platform
$ mkdir -p cogunikernel $ git clone http://repo.rumpkernel.org/rumprun $ cd rumprun $ git submodule update --init $ CC=cc ./build-rr.sh xen
toolchain tuple: i486-rumprun-netbsdelf cc wrapper: i486-rumprun-netbsdelf-gcc installed to "/home/ben/Repos/cogunikernel/rumprun/./rumprun"
# Generated Cog VM sources
$ cd ../../cogunikernel $ git clone https://github.com/pharo-project/pharo-vm.git $ cd pharo-vm/image $ ./newImage.sh $ ./pharo-ui generator.image Tools > File Browser Filed in StackRumpXenUnikernelConfig.st From class comment, evaluated... StackRumpXenUnikernelConfig new generateSources; generate.
# Built the StackVM and StackVM.unikernel
$ bash build.sh
# Tested them...
$ cd ../results $ ./StackVM
bash: ./StackVM: cannot execute binary file: Exec format error Good. That was the expected result.
$ rumprun xen -i StackVM.unikernel
StackVM.unikernel: could not find any display driver
# Stop unikernel machine running, from another terminal... $ xl list $ xl destroy rumprun-StackVM.unikernel
================
Now I basically just poked, cut and slashed the config until it could compile and boot up the unikernel, without regard for what that may break. Making the VM *actually* work is bigger step that for now is beyond me, but I'll have a bite at it. Really my motivation in doing this after I stumbled on the rumprun tutorial, was I wanted to crack the seal on it to interest others capable :). I'd be interested if the above recipe is successful for others.
Todo: * incorporate rumprun as an auto-built third party library, rather than outside, perhaps using git submodule like the rump kernel already does (if these can be nested) * determine how to deal with different rumprun toolchains (depending on which platform the target) * move the baking step from the build script to the generated CMake configuration * determine how to deal with lack of display * determine how an image file might be passed to the VM - maybe baking the VM and image into a ram disk (?)
cheers -ben