Plan 9 From Gentoo: Plan 9 Meets Gentoo
Plan 9 From Gentoo is a Google Summer of Code 2011 project to overlay a Plan 9-inspired userspace on top of a Gentoo base system. The project is inspired by and builds on the work of Plan 9 From Bell Labs. You can download it here.
i. History of Plan 9
To understand some of why Plan 9 From Bell Labs is exciting, a (short) history lesson is in order. Linux was originally created by a then college student named Linus Torvalds in 1991 and was intended to be a free operating system derived from Unix. Besides the Windows family of operating systems, all of today's popular, non-research operating systems are descended from Unix, including OSX, Linux, and the BSDs. Unix was designed and implemented by Ken Thompson and Dennis Ritchie, both of whom worked (at the time) for AT&T Bell Laboratories, in 1969. The design of Unix has had far ranging effects and literally shaped modern computing as we currently know it.
During the 1980s, Bell Labs began work on a new, experimental operating system called Plan 9 From Bell Labs. It was developed by members of the Computing Science Research Center at Bell Labs, the same group that developed the original Unix and C programming language which, naturally, includes many famous names from the realm of computer science: Rob Pike, Ken Thompson, Dave Presotto, Phil Winterbottom, and Dennis Ritchie. Plan 9 From Bell Labs was an attempt at a "modern" rethinking of Unix.
ii. Plan 9 Features
- First operating system to adopt support for unicode. In Plan 9 From Bell Labs, unicode is the default encoding, which explains it's popularity in non-English speaking nations. Plan 9 From Bell Labs seems to be, in your humble narrator's experience, especially popular in Asian countries.
- Plan 9 From Bell Labs took the "everything is a file" mentality from Unix and extended it to all parts of the system, including representing devices and configuration options as files. Plan 9 From Bell Labs was the inspiration for what would eventually become the /proc filesystem in Linux.
- Implemented in only 51 system calls, Plan 9 From Bell Labs implemented what can be thought of as a first generation microkernel.
- Filesystems were implemented in userspace, allowing for much more flexibility with what one could accomplish with filesystems alone.
- Plan 9 From Bell Labs implemented per-process namespaces, something only very recently supported by modern operating systems like Linux and DragonFly BSD.
- A novel permissions model, bypassing the concept of a "root" user, instead limiting access based on whether or not a user was using resources from their local machine.
- A standard protocol, called 9P, is used to access all resources, both local and remote.
- Users can easily spawn "clones" of themselves, modify them, and then remove them without affecting the resources from which they were created.
- Plan 9 introduced the idea of union directories, directories that combine resources across different media or across a network, binding transparently to other directories. For example, another computer's /bin (applications) directory can be bound to one's own, and then this directory will hold both local and remote applications and the user can access both transparently.
- 9P is a fast byte-oriented (rather than block-oriented) distributed file system that can virtualize any object, not only those presented by an NFS server on a remote machine. The protocol is used to refer to and communicate with processes, programs, and data, including both the user interface and the network.
iii. Intended Audience
Plan 9 From Gentoo is intended for an audience of both veterans from a Linux or Plan 9 background and newbies alike. While Plan 9 From Gentoo can most accurately be thought of as a gentle introduction to some of Plan 9's concepts from the comfort of a Linux-based system, it also includes features that make it a unique fit for users from a Plan 9 background who must use Linux on a day to day basis because of hardware or software compatibility, such as inclusion of the 9vx virtual machine, the inclusion of rio as the default window manager, and the inclusion of rc as the default shell.
iv. Why Plan 9 From Gentoo?
- Hardware compatibility. Plan 9 From Bell Labs hardware support is best described as spotty.
- Software compatibility. Few programs can be successfully compiled and run on Plan 9 From Bell Labs without significant modifications, whereas any program that runs on Gentoo can be installed and run on Plan 9 From Gentoo via the power of the Portage package manager.
- Culture shock. Many basic tasks in Plan 9 From Bell Labs are accomplished by wildly different means than by the familiar ones exposed by Linux. To add insult to injury, documentation for Plan 9 From Bell Labs can often be difficult to find, if it exists.
Under the hood, Plan 9 From Gentoo is all Linux, which allows Plan 9 From Gentoo to be hardware compatible with a wide-ranging selection of hardware and it allows Plan 9 From Gentoo to run a variety of different software. This is a combination you won't find in Plan 9 From Bell Labs.
On boot, users are greeted by an introductory message displayed in the Acme integrated development environment. The message introduces features from Plan 9 From Gentoo and helps familiarize users with foreign concepts from Plan 9.
Since Plan 9 From Gentoo has adopted a userspace inspired by Plan 9, window management is controlled by a context menu, available on right-click.
To create a new window, a user literally draws the window on the screen after selecting "New" from the context menu.
Since Plan 9 From Gentoo is Linux under the hood, it's able to run powerful, modern software, such as the Firefox web browser.
The 9vx virtual environment allows you to run Plan 9 From Bell Labs inside of Plan 9 From Gentoo by running "9vx" at a terminal prompt. This way, users are able to experience see a vanilla Plan 9 environment.
- Download x86 LiveCD
- Download Stage3 Tarball
Plan 9 From Gentoo is maintained by Robert Seaton, who can be contacted via email (seatonr at dupage.edu).
Updated August 1, 2011
Summary: Google Summer of Code 2011 project to overlay a Plan 9-inspired userspace on top of a Gentoo base system.
Donate to support our development efforts.