An Internet-Ready OS From Scratch in a Week – Rump Kernels on Bare Metal
blog.netbsd.org
blog.netbsd.org
> If you do the math (and bc did), there are 86400 seconds in a week.
you might want to check bc's math ;)
There are lots of reasons why my hobby operating system project has been abandoned, but device drivers was one of the biggest reasons.
I've been planning to revive my kernel programming projects and when I do, I'll definitely take a look at rump kernels and the BSD device drivers.
bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'.
606024*7
604800
60 * 60 * 24 * 7 = 604,800
The author's command of the English language easily trumps any deficiencies in multiplication. His little quips crack me up. "All that and a can of paint."
"Rump" is just a cool name in my opinion. I liked rump(3) before I even knew what it did. Naming and coming up with clever acronyms that are not annoying is difficult. Props to the author for that alone.
Whereas something like "Docker" makes me cringe. No matter how good it is. Some of these names people come up with are just terrible.
Anyway, we know that rump can be used for mounting filesystems (e.g., ones containg applications) that reside on USB sticks or other removable media. By using rump_ffs, there is no kernel panic on errors associated with the mounted filesystem. For that one use alone, nevermind its otherwise enormous potential, I'd say rump is worth the rumpification of the NetBSD source tree. It is not easy to crash the netbsd kernel, but filesystem errors are one way to do it, in my experience.
I think the author should have at least one article about rump that uses a certain song title from Exile on Main Street.
It's all good fun in library OS land :)
There are microkernels using the rump kernel code, eg Genode.
Microkernel: yes, though strictly speaking you'd use rump kernels for the servers in a microkernel OS. (that was actually the first use case back in 2007)
There are multiple example implementations for the hypercall interface ("rumpuser") at http://repo.rumpkernel.org/
You can find full details from http://book.rumpkernel.org/ (it's a bit out of date in describing what has been built using rump kernels, but the parts describing basic functionality are accurate).
It doesn't contain the pretty css, and I probably fixed a tyop or two when posting, but the content should be 99.9% same.