Look Ma, no OS
slides.com
slides.com
- no one ever
Just hitting right will show the you the headers for each section. Right jumps from section to section
Hitting down goes slide to slide.
Can you go down? Space will go down. Otherwise, Space will go to the right. It re-linearizes the presentation, while still preserving the 2D layout for quick navigation between major topics.
- [name] is a kernel thread not a user space process.
- its libssl, not "libopenss"
- installing rpc, some obscure 55k listening port, and calling it bloated.. heh so cheap.
Once past all this FUD - what does a unikernel (basically the same as running linux and your app as /sbin/init except it's in Erlang and not C here)?
- its obscure. you get security mainly because nobody knows what you're running.
- its library based. like regular OSes.
- it runs only one program. or a million of them, like a regular OS, but with zero separation between them so compromise one means compromise all, actually. Else you have to add the separation layer yourself by writing more apps per "system" and make them communicate.
- its undebuggable without a lot of knowledge
- 'script kiddies' will run ./erlang-hack-for-x instead of ./rootshell.sh, this changes nothing to that. Remember the XEN exploit a few month ago? That'd still work and give access to all the Erlang instances. Its not that hard.
- its not faster, its actually slower, when compared to C kernel+code.
- it doesnt compile itself, you need a "regular OS" to deploy it
- it uses the same memory space for mostly everything (regular OSes use protected memory per process, its hardware enforced by the CPU)
- namespaced linux boots in < 10ms already...
There are much better implementations of safer, faster, cleaner OSes with better paradigms that also do away with backward compat and using modern, memory safe languages (http://en.wikipedia.org/wiki/Singularity_%28operating_system... for a well-known one). For the record MS also developed Drawbridge (process+lib, so not exactly a unikernel) because they could not do away with windows compatibility. So yeah.
If you have doubts, look at the example code at https://github.com/technolo-g/unikernel-demo
Most of the claims you've made seem to be coming from the existing paradigm of how people write code for the cloud. If you're determined to stay in that mindset, then unikernels will probably not make much sense to you. The whole point is to reevaluate our assumptions about developing for cloud-native environments, which leads to different approaches (many cloud-services are already single-purpose). No-one is claiming that unikernels are some kind of panacea but they are a useful addition to the toolbox.
Also, if you really want to compare security and vulnerabilities, then you should consider things like TCB and look at CVEs for both Xen and Linux. The way you describe it is almost disingenuous. The following talks have useful discussion points.
https://fosdem.org/2015/schedule/event/zombieapocalypse/
https://media.ccc.de/browse/congress/2014/31c3_-_6443_-_en_-...
I'm all for the positive attitude stuff - unless the presentations start like that, I then have no sympathy.
The linked presentation actually claims unikernels are the panacea, by the way. Have you read it?
Personally I see application compartments, wider adoption of Swift, Java, .NET Native, OCaml, Haskell, Go, D, Rust, Erlang, ..., alongside unikernels as the way forward to mainstream adoption.
One day we will get C free OS stacks.
I guess Rust and Nim are the real contenders, as only a language with "zero runtime" is going to cut it.
This wasn't true in other OSes.
Windows is currently moving to COM as the main OS ABI, specially with the WinRT focus.
Android also has little support for C ABI, beyond wrapping .so in JNI wrappers.
Another example are mainframe systems like OS/400, where the ABI is bytecode based (TIMI).
It might help bridging the current solutions, hopefully (even thus that will perhaps take 10 years)
Can someone show me this?
Had to look for it in the HN history, look at this guy's implementation:
https://www.youtube.com/watch?v=6SxLvz6pcGs ~30ms here, the post indicates some kind of intel NUC (so not exactly the fastest thing)
The syscalls themselves are probably sub-millisecond
the hypervisor separates unikernels from each-other.
Alas, the brilliance of Erlang has not been sufficiently appreciated, so hopefully Elixir -- aka: Erlang Returns -- might catch on and become a popular hipster language.
With Docker you still have all the overhead of Linux, and personally, I'm finding it a bit overwrought, and then on top of that more and more infrastructure is being built. All well intentioned and I'm not saying it's wrong-- but it's starting to feel like open stack.
One of the earlier demos of Erlang on Xen was a system where a VM was spawned to handle each requests. EG: An HTTP request would come in, an entire VM would be spawned, handle the request and go away. It was very fast.
I find that kinda astounding!
PS- Not intended to start a flame war, the dogmatic sounding parts of this post are all tongue in cheek.
I don't see how unikernels solve orchestration. You still need databases, load balancing, service discovery and so on. Kubernetes or something like it would still be a necessity.
This is a good path to job security, but I don't see what else.
Elixir is extremely active, growing and moving fast and even if you do have to roll it yourself, it can still be a net win.
For instance, I found it was easier to integrate a mail sending library or interface with mailgun than it was to get an STMP service working on linux.
But then, I'm a developer, not ops.
Eliding the virtualized network and disk interfaces is not what they are talking about though. They are sticking with those. So, given virtualized CPU, RAM, network and disk interfaces; a runtime that talks directly to those interfaces; and the intent to exclusively run a single process per VM; what do they really need Linux for?
Maybe it is overly simplified, but as i understand it we are looking at a "kernel" stripped down to handling the disk and network interfaces provided by the VM. No user separation (there is only a single "user"), no memory protection (it is only running a single process as best i can tell), and resource provisioning is done by the VM.
So you essentially don't separate your applications via users within your OS, but via VMs in your hypervisor.
Not sure if this turns out to be a good idea or not, but it's an interesting approach that shouldn't be put down easily.
If SysV had had filesystem-like means of allocating the right to listen on a particular port to particular user accounts, the world would have been very different, and we'd have been spared entire categories of security hole and workaround.
Plan 9 and later Inferno (with Alef and Limbo) would have been better, but they went nowhere.
This slide deck supports Elixir and Erlang languages.
(just adding details for people)
If your slide deck needs a secondary nav, it probably shouldn't be a slide deck.
Not only that but it also makes it much easier get an overview about what things are discussed in the presentation.
-> No confusion, great overview, direct jumps with hyperlinks, easy to realize with pure HTML.
I didn't bother to figure out the multi-dimensional navigation of these slides. Paraphrasing Tufte, Richard Feynman managed to write about much of physics without resorting to more than two levels of headings. I'm similarly unconvinced that multi-dimensional, nested documents are really that helpful here.
[0] https://github.com/cloudius-systems/osv-apps/tree/master/erl...
Edit: you should be able to import it into your google drive, and view it there if you do not wish to install libreoffice.
Twitter: @mattbajor
We launched Boxfuse last month with support for running JVM apps as unikernels on VirtualBox and AWS.
Here is a blog article from last week about deploying Dropwizard unikernels to EC2: https://boxfuse.com/blog/dropwizard-aws.html
Disclaimer: I'm the founder.
In a sense it follows the same principle as OSv, just with a proven Linux kernel instead of a custom one.
Update: Why the downvote? If you disagree, feel free to say why.
PS no idea who downvoted you, there is really no point in mentioning it.
That's not a problem you should get rid of, devs need to understand the underlying system.
> no shell == no shellshock
Only servers that needed the shell for some service exposed the issue, so this point is irrelevant.
> no libopenss = no heartbleed
no libopenssl = no ssl either.
https://github.com/rumpkernel/wiki/wiki/Info:-Community
Ask on the mailing list/irc if you need help... its still under development so not completetly obvious yet ;)
'nuff said.
Unikernels: Rise of the Virtual Library Operating System https://queue.acm.org/detail.cfm?id=2566628