why do people run unikernels inside vms? I thought the overhead of vm+unikernels could be more than processes+os?
shouldn't unikernels be run on bare metal?
Xen has something called "dom0", which is the "domain" of the privileged management OS. It has the drivers for the ACTUAL hardware. dom0 in Xen must be Linux AFAIK, so you are using Linux drivers to communicate with paravirtualized guest OSes.
The guest OSes can be Windows, Linux, Solaris, etc. What paravirtualization means is that instead of communicating with real hardware like those OSes are meant to do, they are modified to communicate with a special, portable Xen interface. Xen abstracts away hardware for both guest OSes and unikernels.
vm+unikernel is definitely higher overhead than process+os, but more many workloads using shared hosting (aka "the cloud") you're stuck with a vm. A unikernel is then the lightest weight abstraction to put on your vm.