Plan 9, /9/grid, Inferno

UPDATED: 1 June 2009 - new release, version 2.0

We are very pleased to announce the release of version 2.0 of the Plan 9 Qemu gridtools, and also a variety of new Plan 9 services based upon them. To users of the old image, thanks - and we hope you will find the new version to be a great improvement. The old resources do remain available, but are now deprecated. Please note that at the time of this posting, the walkthrough screenshots gallery is currently outdated and applies only to the old image. The current full documentation for the image and related resources is in the docs section.

The new tools are available in several forms, to fit the needs of users of different operating systems and to aid in flexible configuration. The base version is designed for linux systems with Plan 9 Port and Drawterm installed in addition to qemu. Get these from Alternately, a version with x86 binaries of the needed tools is provided. A standalone alternate version with somewhat reduced functionality is available for users of any OS. (Drawterm still recommended but not necessary). An additional standalone version for systems with considerable resources restores the venti-based functionality with the use of an additonal, Qemu-hosted, venti server. Windows users with more powerful systems are recommended to use this version. This version is also suitable for users who want all functionality located within Plan 9 systems.

Linux version: Requires Qemu. Includes x86 binaries for plan9port venti/vac tools and Drawterm. (Note: precompiled binaries may not work in all distros)

md5sum: 474d2ed718964f2da587b8adc28b3ec1 gridtoolsplus.tgz

Linux version: Requires Qemu and Plan9Port. Drawterm Recommended.

md5sum: b938afccf5702ee5c64bdfef1190975b gridtools.tgz

All OSes: Standalone VM image. Qemu required, Drawterm recommended.

md5sum: 588a2027f01c1896885303cab52aad12 ventigridserver.qcow2.img.tgz

All OSes: Optional venti data disk image. Use as disk 2 (-hdb) of the standalone image.

md5sum: 6031518c386e90aaf8cd17d3652782a1 qventidata.qcow2.img.tgz

The standalone form of the image can be used in any OS with no additional tools to act as a preinstalled version of the standard bell labs distribution. If you boot it using qemu and select option '1' it will automatically boot to Glenda in GUI terminal mode as set up by Bell Labs. Option '2' selects Gridna, a mildly customized user. Note that the default boot option after timeout is to boot as a cpu server in text terminal mode. This is intended for access with drawterm on local loopback, or remotely.

How to Use as a CPU server:

In the case of the all-in-one gridtoolsplus Linux version, after downloading:

tar xzf gridtoolsplus.tgz && cd gridtoolsplus

(its gridtools.tgz and gridtools in the case of the version for systems with plan9port and drawterm installed independently)

sudo tools/iptablescript

(this script redirects tcp ports 21, 23, 567, and 564 to high ports to allow qemu to use them without root privileges. You do not need to use all these ports if you do not wish - port 567 for auth is the only one that is really essential.)


(choose option 1 to start the local venti server, then option 2 to start up an all-purpose VM server) Wait for the VM to finish its initial boot process (30s timeout at the menu, or just press enter in the VM) The select option 'g' or 'b' in the gridlord menu to startup drawterm to the local cpu server VM. The default password for both accounts is gridpass.

If using the gridtools version without included drawterm, just use your own drawterm to connect after the vm is waiting at the prompt. In a new shell:

drawterm -a localhost -c localhost -u gridna

enter password 'gridpass' when prompted


Download the free open source Qemu emulator. Download the standalone version of the 9gridchan qemu image as linked above. It is a .tgz file which needs to be extracted. As it is both tarred and gzipped so you may need to extract it twice. 7zip is a fine free utility that supports these formats. Place a copy of the extracted ventigridserver.qcow2.img file inside the qemu program folder. Start cmd.exe and cd to that directory, and start qemu with the following command line:

qemu.exe -L . -hda ventigridserver.qcow2.img -redir tcp:567::567 -redir tcp:17010::17010 -m 256

Then start drawterm with:

drawterm.exe -a localhost -c localhost

user: gridna

password: gridpass

If you wish to enable additional services, forward the appropriate ports to the VM.

Linux with no Plan9Port:

Download the standalone version and extract it. You will probably want to use iptables to bounce the auth port, 567, around to enable qemu to run as a nonprivileged user. These commands need to be run as root:

iptables -t nat -A PREROUTING -p tcp —dport 567 -j REDIRECT —to-port 2567

iptables -t nat -A OUTPUT -o lo -p tcp —dport 567 -j REDIRECT —to-port 2567

After these commands are run, starting qemu with:

qemu -hda ventigridserver.qcow2.img -redir tcp:2567::567 -redir tcp:17010::17010 -m 256

Will enable cpu server functionality.

drawterm -a localhost -c localhost -u gridna

password: gridpass

To login via drawterm.

Customizing and securing your image:

For convenience and out-of-the box testing and functionality - as well as for use on private LANs, or deliberately sandboxed, or shared publicly by choice - the accounts bootes, glenda, and gridna all have the initial password 'gridpass'. Please change this before exposing your VM to the public internet. Included is a tool called confighelper in /usr/bootes/bin/rc which can help with many administrative tasks, including personalizing your auth information. Here is a rough summary of the process: As bootes, run confighelper and choose the (r) reset option. Enter your desired information for the new system, taking special note of the authdom you choose. When you reboot and choose cpu server mode, you will see:


enter bootes as the answer for this. The next prompt is


this answer must match the answer you gave earlier, or your /lib/ndb/local information will be mismatched to your machine key. The next prompt is:


which is an optional store for passwords and keys. You can leave this blank. Next is crucial:


this is the machine key password for bootes, by convention the owner of the machine, similar to 'root' in UNIX. YOU ONLY GET ONE CHANCE to type it here, so be careful and remember it!. The machine will continue to boot and produce some errors about the existing netkeys. This is harmless. You now need to make your user passwords with the new machine key.

auth/changeuser bootes

and enter bootes password exactly the same as you did at the earlier prompt. After this, there are a lot more prompts which are basically irrelevant. All of them can basically be ignored, the password is whats important.

auth/changeuser glenda

and make a password for glenda, and then

auth/changeuser gridna

similarly. Following that, you want to

auth/changeuser -n bootes

for setting up netkey auth for services such as ftp and telnet - repeat this command for your other users as well.

please send bug reports, suggestions, and feedback to:

I want to respect your software licenses!

Thanks to all the developers and people who have made Plan9 and related tech so awesome. I want to comply fully with all the licensing terms of the software I'm distributing. Please let me know if I can improve anything. This is an attempt to package up a form of plan 9 I have found useful, any suggestions for software that should be added and configuration improvements is very welcome.