My gut instinct is always that using traditional kernels in a unikernel way is a bit suboptimal because it doesn’t become a “library operating system” in the same way that Mirage does.
Only the bits of Linux which are used are linked in, same as when you link together any program. The big advantage of using Linux is driver support - you can run a UKL application on baremetal, linking to the drivers needed to run on the target hardware.
While that's true, the flip side is that "traditional" kernels have much better hardware (and general) support because they benefit from the long history of the "main project".
Does it really matter ? Are people actually planning of running unikernel on bare metal a situation where you would need significant tooling to manage them ?
MirageOS was initially clearly designed to run on top of an hypervisor. The idea was going from host os, guest os and application to just host os and unikernel.
As I see it, it was a different way of solving the same problem containers are now used for : do you really need both a host os and guest os when all you want is isolation ? Using container is pushing isolation in the kernel while losing the actual virtualization (in a way merging host os and guest os) while unikernel is pushing the useful part of the guest os into the application (merging guest os and application) keeping the benefits of full virtualization. I think it's why Docker bought the company making MirageOS.
I don't really see where rump kernels sit there. Clearly there is interest as people are working on them but I fail to see where they would be useful.
rwmj|5 years ago
reubensutton|5 years ago
masklinn|5 years ago
Stripping down traditional kernels to work as unikernels is not a new thing: https://github.com/rumpkernel/rumprun
brmgb|5 years ago
MirageOS was initially clearly designed to run on top of an hypervisor. The idea was going from host os, guest os and application to just host os and unikernel.
As I see it, it was a different way of solving the same problem containers are now used for : do you really need both a host os and guest os when all you want is isolation ? Using container is pushing isolation in the kernel while losing the actual virtualization (in a way merging host os and guest os) while unikernel is pushing the useful part of the guest os into the application (merging guest os and application) keeping the benefits of full virtualization. I think it's why Docker bought the company making MirageOS.
I don't really see where rump kernels sit there. Clearly there is interest as people are working on them but I fail to see where they would be useful.