ANTS is a set of tools to structure and manage Plan 9 namespaces to make systems and grids more flexible, reliable, and easy to administer. It supports both the 9front and Bell Labs distributions of Plan 9. ANTS is well suited to cloud based hosting and scripts for use with vultr.com are provided.
Update and Status 7 January 2017
The main ANTS repo, found at bitbucket.org/mycroftiv/plan9ants
has been updated to revision 515 to compile with the February 2017 9front release r5736. Building from source is the preferred method for installing ANTS, I think most users who might be interested in ANTS are happier compiling locally. Development can be followed at bitbucket.org/mycroftiv/antsexperiments
Beginning in December 2016, I have been blogging intensively about development and testing of ANTS in 9front. The blog is found at doc.9gridchan.org/blog
ANTS is a modular toolkit. The components can be used separately:
- New boot script which creates a separate administrative namespace independent of the root fs
- Modified /proc which allows processes to modify each other's namespace via /proc/pid/ns
- Hubfs i/o muxer for persistent shared shells and general purpose network piping
- Namespace modification scripts including rerootwin, a network and rio aware chroot utility
- Progressive venti data replication and fossil cloning scripts to keep multiple roots available
- Grio modified rio with hubfs integration, colors, and customizable command menu
bitbucket.org/mycroftiv/plan9ants - The current release source code repo
bitbucket.org/mycroftiv/antsexperiments - Ongoing development code
Documentation, Walkthroughs, Tutorials
ants.9gridchan.org/ants.html - Code, manpages, and the description paper
doc.9gridchan.org/them - Walkthroughs for setting up a full ANTS grid with examples and support scripts for vultr.com [referrer link] hosting
doc.9gridchan.org/antfarm/tutorial - Tutorials for using ANTS features done with the QEMU vm images from 2013
Brief Guide to Installing
Installing from source (hg clone)
Inside the base ants directory, 'build 9front'. Then 'build fronthost'. This recreates the 9ants kernel and builds a new tools.tgz and installs the userspace components. Note this will overwrite a pre-existing 9ants and tools.tgz if have compiled previously. Copy the 9ants kernel to your 9fat partition. You probably also want to copy the tools.tgz to 9fat as well. Modify your plan9.ini to use the new kernel. An example for 9front is located at frontmods/plan9.ini. You may wish to leave bootfile= blank in plan9.ini and choose to use the 9ants or older 9pcf kernel by typing in 'bootfile=9ants' and 'boot' manually. If you are booting to gui, it is necessary to add the following line to the end of your /rc/bin/termrc:
home=/usr/$user; cd; . $home/lib/profile
Once correct plan9.ini variables are set, your system can be rebooted with the new kernel. Assuming proper configuration, there should be no disruption of your userland and the new ANTS namespace will be accessible via cpu or hubfs.
Inside the base ants directory, 'build everything'. This recreates the 9pcram.gz kernel and tools.tgz. Note that this will overwrite a pre-existing 9pcram.gz and tools.tgz if you have compiled previously. To install the userspace components to the main system, cd to the base ants2.1 directory and 'build labshost' Copy the 9pcram.gz kernel to your 9fat partition. You probably also want to copy the tools.tgz to 9fat as well. Modify your plan9.ini to use the new kernel. Setting up a boot menu is recommended. An example configuration is located at doc/PLAN9.INI. Once correct plan9.ini variables are set, your system can be rebooted with the new kernel. Assuming proper configuration, there should be no disruption of your userland and the new ANTS namespace will be accessible via cpu or hubfs.
Full installs to new Qemu instances
If you want to do a full automatic ANTS install into a Qemu vm that has just been set up from the .iso, special build options are provided.
In the base ANTS directory, do 'build everything' 'build isoinstall' 'cd cfg; stockmod'
In the base ANTS directory, do 'build 9front' 'build 9frontinstall'
In the base ANTS directory, do 'build vultr'. There is also an option to 'build vultrfossil' which requires hard drive partitioning during install described at doc.9gridchan.org/them/vultr
QEMU images from 2013
9worker.gz - A tiny image with only the ANTS kernel and tools for the administrative namespace
9queen.gz - A fully installed system image
Old ANTS 2.1 release tarball from 2015 - deprecated
ants2.1.tgz - Old ANTS 2.1 release tarball with source code and compiled kernels
Other Projects: Plan 9 Interactive Fiction
Interactive Fiction is pure old school text-based gaming, in the tradition founded by Colossal Cave Adventure and the works of Infocom. This style of game didn't die out from lack of commercial support - instead it developed a dedicated independent community. Plan 9 is a great OS environment for IF-games, and it is possible to play most of the best works of the genre, and develop new ones, within Plan 9. I keep a repository of software for playing and writing IF in 9front at
My own interactive fiction magnum opus is called "Harmonic Time-Bind Ritual Symphony" and can be played in the Frotz interpreter. The compiled game file is located at
The "harmonic" directory on files.9gridchan.org contains a map, soundtrack files, a full walkthrough solution, and a transcript of a playthrough. If you think people must be crazy to use Plan 9, this game will probably confirm your suspicions. A frotz interpreter binary is found at files.9gridchan.org/fictools/frotz
The old 9gridchan.org website and its downloads are still available at
the old site
Plan 9 from Bell Labs and 9front code and modifications are distributed under the preferred licenses for those projects.
Copyright 2017 Mycroftiv
Often found in #plan9chan and other plan 9 related irc channels on freenode
Occasionally reachable by email at mycroftiv at sphericalharmony.com
9gridchan.org - nine years and counting! Thanks to everyone who has participated and helped out with Plan 9 and Inferno and gridding.