Unix isn’t the only operating system that came out of Bell Labs. In an effort to decouple hardware from user interfaces over a network, Bell also developed an OS named Plan 9 (named after the famously bad Ed Wood movie). While Plan 9 is still in use, it never got the momentum that Unix did. In 1996, Bell Labs (now AT&T) decided to shift its focus to Inferno, an operating system that was meant to challenge Java as a cross-platform virtual machine environment. Now LynxLine Labs has ported Inferno to the Raspberry Pi.
Not only did they do the work, they documented it in 26 labs if you want to follow along. Or, you can just head over to the project page and get the results along with updates (judging from the commit log, the project is under active development).
Dante would be proud, as the company that is now maintaining Inferno is named Vita Nuova Holdings. The virtual machine is named Dis, the base language is Limbo, and the communications protocol is named Styx. Styx, by the way, is identical to the latest Plan 9 file system protocol.
Given its heritage, it isn’t very surprising that Plan 9 and Inferno share a lot of common ideas. In particular, all resources are files, even network resources. Styx manages all communications to resources, both local and remote. It isn’t quite the same as Raspberry Pi, but Sandia National Labs has even ported Inferno to an Android phone (see video below).
If you are looking for more education on using the Pi for OS development, we found a course for that. If you are impressed that Plan 9 and Inferno make all resources look like files via software, don’t forget that you can do it with hardware, too.
Since Hellaphone and the Plan9 port to the pi I wondered nobody has ported Inferno for the Pi yet. I am delighted to finally see it done!
Fascinating! I’ve never heard of any of this before…
Another virtual machine to slow things down. Great for programmers of limited skill and experience, but I can’t wait hours for the OS to boot, churn the limited memory available, and then crash due to some stupid stack error, and give an obscure error message, running code in the debugger making it “only” 10X slower.
What matters is the journey, not the destination.
Yeah, but if we learned anything from Oregon Trail it is that long journeys end in cholera.
http://www.reactiongifs.us/wp-content/uploads/2013/03/slow_clap_citizen_kane.gif
Well said, the video looks like the invention of hot water once again
By the same argument I sure hope you’re money’s where your mouth is and you’re writing in assembler.
Programming languages, like Operating Systems, are tools to accomplish your goal. I use a screwdriver to drive in screws, I use a hammer to pound nails, and wouldn’t switch them because it would make the end goal harder to achieve. I use Linux for networking, I use Windows for gaming, I use Mac for design/art. I use assembly for engines and time-critical uC tasks, and I use VMs and high level languages for quick prototypes and portable code that needs teamwork.
Every tool has its purpose.
People used to call a hammer “The Birmingham Screwdriver”. Yes, you can say those things are tools but the difference is that an operating system can (if designed accordingly) teach the operator about how the computer works and the same can be said for programming languages. Calling any of those things tools is such a limited world view.
DIS (virtual machine / jit compiler) It is not quiet exactly same as “normal” virtual machines like in Java.
There is little different idea. The Dis assembler is pretty same as general computer architecture is, except that it does not have registers. So Dis machine operation to add two numbers looks like ADD mem1,mem2,mem3, so it operates only references to memories. Due to this, on JIT phase every Dis instruction is straightforward translated into only 1-5 ARM or x86 instructions and then they will run. Translation Dis ->Arm also straightforward and less than loading time of dis file from disk.
Still in case of need “high speed” there are still possibilities to develop native C code module with Api which is accessed from Dis.
That’s why it is very fast actually and extremely flexible.
Anyone remember the Transputer? Admittedly it had Local/Non-Local register stacks and not a completely flat memory space, but sounds rather familiar in terms of opcodes… ST were baking the Transputer core into the ST20 Set top box unit still, and the C compiler for it identifies as ‘ICC’ – Inmos C Compiler ;-) The transputer is dead, long live the transputer!
All Hail The Transputer! I used to do coding on them back in college. Neat devices
Bell Labs is now Alcatel-Lucent… soon to be Nokia ;-)
I shall expect a heavenly user experience using Inferno?
Plan 9 both intrigues and frightens me.
Plan 9 started out within AT&T’s Research Unix program, and in many ways was the continuation of it when the research unix program was shut down.
https://en.wikipedia.org/wiki/Research_Unix
I believe it got the name “Plan 9” partly from the fact that development initially started right around the same time Unix Version 8 was released.
Plan 9 got its name from the B movie “Plan 9 from outer space”
Yes, but his comment does explain more about why they chose that movie title as the name…
Awesome! the best tutorial i’ve ever seen on how to port an OS ; tons of things to learn.