Inferno (operating system)
Inferno is a distributed operating system started at Bell Labs and now developed and maintained by Vita Nuova Holdings as free software. Inferno was based on the experience gained with Plan 9 from Bell Labs, and the further research of Bell Labs into operating systems, languages, on-the-fly compilers, graphics, security, networking and portability. The name of the operating system and many of its associated programs, as well as that of the current company, were inspired by Dante Alighieri's Divine Comedy. In Italian, Inferno means "hell" — of which there are nine circles in Dante's Divine Comedy.
Design principles
Inferno was created in 1995 by members of Bell Labs' Computer Science Research division to bring ideas of Plan 9 from Bell Labs to a wider range of devices and networks. Inferno is a distributed operating system based on three basic principles drawn from Plan 9:- Resources as files: all resources are represented as files within a hierarchical file system
- Namespaces: a program's view of the network is a single, coherent namespace that appears as a hierarchical file system but may represent physically separated resources
- Standard communication protocol: a standard protocol, called Styx, is used to access all resources, both local and remote
The virtual machine provides memory management designed to be efficient on devices with as little as 1 MiB of memory and without memory-mapping hardware. Its garbage collector is a hybrid of reference counting and a real-time coloring collector that gathers cyclic data.
The Inferno kernel contains the virtual machine, on-the-fly compiler, scheduler, devices, protocol stacks, and the name space evaluator for each process' file name space, and the root of the file system hierarchy. The kernel also includes some built-in modules that provide interfaces of the virtual operating system, such as system calls, graphics, security, and math modules.
The Bell Labs Technical Journal paper introducing Inferno listed several dimensions of portability and versatility provided by the OS:
- Portability across processors: it currently runs on ARM, SGI MIPS, HP PA-RISC, IBM PowerPC, Sun SPARC, and Intel x86 architectures and is readily portable to others.
- Portability across environments: it runs as a stand-alone operating system on small terminals, and also as a user application under Bell Plan 9, MS Windows NT, Windows 95, and Unix. In all of these environments, Inferno programs see an identical interface.
- Distributed design: the identical environment is established at the user's terminal and at the server, and each may import the resources of the other. Aided by the communications facilities of the run-time system, programs may be split easily between client and server.
- Minimal hardware requirements: it runs useful applications stand-alone on machines with as little as 1 MiB of memory, and does not require memory-mapping hardware.
- Portable programs: Inferno programs are written in the type-safe language Limbo and compiled to Dis bytecode, which can be run without modifications on all Inferno platforms.
- Dynamic adaptability: programs may, depending on the hardware or other resources available, load different program modules to perform a specific function. For example, a video player might use any of several different decoder modules.
Features
Inferno programs are portable across a broad mix of hardware, networks, and environments. It defines a virtual machine, known as Dis, that can be implemented on any real machine, provides Limbo, a type-safe language that is compiled to portable byte code, and, more significantly, it includes a virtual operating system that supplies the same interfaces whether Infernoruns natively on hardware or runs as a user program on top of another operating system.
A communications protocol called Styx is applied uniformly to access both local and remote resources, which programs use by calling standard file operations, open, read, write, and close. As of the fourth edition of Inferno, Styx is identical to Plan 9's newer version of its hallmark 9P protocol, 9P2000.
Commands
Most of the Inferno commands are very similar to Unix commands with the same name. The following list of commands is supported by Inferno.- 9win
- acme
- alphabet-abc
- alphabet-fs
- alphabet-grid
- alphabet-main
- ar
- asm
- auplay
- avr
- basename
- bind
- blur
- brutus
- cal
- calc
- calendar
- cat
- cd
- charon
- chgrp
- chmod
- cleanname
- cmp
- collab
- collab-clients
- comm
- cook
- cp
- cprof
- cpu
- crypt
- date
- dd
- deb
- diff
- disdep
- dmview
- du
- ebook
- echo
- emu
- env
- fc
- filename
- fmt
- fortune
- freq
- fs
- ftest
- ftree
- gettar
- grep
- grid-monitor
- grid-ns
- grid-query
- grid-register
- grid-session
- gzip
- idea
- intro
- itest
- keyboard
- kill
- limbo
- listen
- logon
- logwindow
- look
- ls
- m4
- man
- mash
- mash-make
- mash-tk
- math-misc
- mc
- mdb
- miniterm
- mk
- mkdir
- mprof
- mux
- mv
- netkey
- netstat
- ns
- nsbuild
- os
- p
- passwd
- plumb
- prof
- ps
- pwd
- rcmd
- read
- rm
- runas
- secstore
- sendmail
- sh
- sh-alphabet
- sh-arg
- sh-csv
- sh-expr
- sh-file2chan
- sh-mload
- sh-regex
- sh-sexprs
- sh-std
- sh-string
- sh-test
- sh-tk
- sleep
- sort
- spree-join
- stack
- stream
- strings
- sum
- tail
- tcs
- tee
- telnet
- time
- timestamp
- tiny
- tkcmd
- tktester
- toolbar
- touch
- tr
- tsort
- unicode
- uniq
- units
- uuencode
- vacget
- wc
- webgrab
- wish
- wm
- wm-misc
- wm-sh
- xd
- yacc
- zeros
History
Inferno shares with Plan 9 the Unix heritage from Bell Labs and the Unix philosophy. Many of the command line tools in Inferno were Plan 9 tools that were translated to Limbo.
In the mid-1990s, Plan 9 development was set aside in favor of Inferno.
The new system's existence was leaked by Dennis Ritchie in early 1996, after less than a year of development on the system, and publicly presented later that year as a competitor to Java. At the same time, Bell Labs' parent company AT&T licensed Java technology from Sun Microsystems.
, Volume 1, Number 2, March–April 1997
In March–April 1997 IEEE Internet Computing included an advertisement for Inferno networking software. It claimed that various devices could communicate over "any network" including the Internet, telecommunications and LANs. The advertisement stated that video games could talk to computers,–a PlayStation was pictured–cell phones could access email and voice mail was available via TV.
Lucent used Inferno in at least two internal products: the Lucent VPN Firewall Brick, and the Lucent Pathstar phone switch. They initially tried to sell source code licenses of Inferno but found few buyers. Lucent did little marketing and missed the importance of the Internet and Inferno's relation to it. During the same time Sun Microsystems was heavily marketing its own Java programming language, which was targeting a similar market, with analogous technology, that worked in web browsers and also filled the demand for object-oriented languages popular at that time. Lucent licensed Java from Sun, claiming that all Inferno devices would be made to run Java. A Java byte code to Dis byte code translator was written to facilitate that. However, Inferno still did not find customers.
The Inferno Business Unit closed after three years, and was sold to Vita Nuova. Vita Nuova continued development and offered commercial licenses to the complete system, and free downloads and licenses for all of the system except the kernel and VM. They ported the software to new hardware and focused on distributed applications. Eventually, Vita Nuova released the source under the GPL license and the Inferno operating system is now a Free/Libre/Open Source Software project.
Ports
Inferno runs directly on native hardware and also as an application providing a virtual operating system which runs on other platforms. Programs can be developed and run on all Inferno platforms without modification or recompilation.Native ports include these architectures: x86, MIPS, ARM, PowerPC, SPARC.
Hosted or virtual OS ports include: Microsoft Windows, Linux, FreeBSD, Plan 9, Mac OS X, Solaris, IRIX, UnixWare.
Inferno can also be hosted by a plugin to Internet Explorer. Vita Nuova said that plugins for other browsers were under development, but they were never released.
Inferno has also been ported to Openmoko, Nintendo DS, SheevaPlug, and Android.