Resurrecting the Devil

9 min read, 2012 words

Book I

Resurrecting the Devil

“Soon you will be where your own eyes will see the source and cause and give you their own answer to the mystery.” Dante Alighieri, The Divine Comedy, Inferno

The first question that arises is whence one can obtain a copy of this operating system and it seems the official source code is currently available on GitBucket; but one may also download it from the current maintainers’ website: http://www.vitanuova.com/index.html. The appearance of this website, too, reminds one of those long forgotten sites filled with flashing GIFs and strangely formatted text from the late 1990s or early 2000s. Yet it appears that it has yet to be abandoned — why, there seem to exist discussion forums dedicated to Inferno still! What a site to behold they are; and though posted on only occasionally, it is a pleasure to see discussions being conducted about Inferno — there may be hope still! But let us continue on our bottomward journey leading us into the depths of hell.

Obtaining the latest version of this operating system is a task swiftly completely; indeed, it is a mere 70 megabyte large archive — ’tis truly devilish sorcery worthy of the name “Inferno”.

Yet already we stumble across something strange; something unusual; something you may not see on an operating system of current times —, for why are there different downloads for different operating systems? Surely, you cannot imply it is to be run on top of another operating system? Why yes, you can.

Indeed, something I had neglected to mention previously was the fact Inferno is no ordinary operating system — no, it is meant to be installed on top of the one already running on one’s machine; and whilst it is indeed possible to install it onto bare hardware, only a madman would do such a thing. Really, its main intent was to be a complementary system to Plan 9 and one was meant to install it on top of Plan 9 to have a more complete experience.

Thus choose wisely; do not download the wrong archive, for it may not work. As I am running Linux, I chose their archive meant to be used with Unix-like systems, of which Linux is one. It is, as previously mentioned, an archive and must thus be extracted, a task easily accomplished with Linux’ helpful tar command; one must simply type tar xf followed by the name of the archive and it is extracted into its own directory.

Upon entering the directory so thoughtfully created by the tar command, one is greeted by files upon files and folders upon folders. Indeed, it may be slightly disorienting — even off-putting — to those uninitiated to Unix-like systems; but, as one is swift to notice, there are two helpful documents to guide us in our installation journey: a README.md and an INSTALL document. You will find included therein a lot of information imperative in performing in our task of installing Inferno; thus, let us first take a look at the README.

Inside the README one finds general information regarding the operating system, detailing its creators and purpose. Additionally, it highlights what makes it so singular — yet also similar to Unix: —

The use of a high-level language and virtual machine is sensible but mundane. The interesting thing is the system’s representation of services and resources. They are represented in a file-like name hierarchy. Programs access them using only the file operations open, read/write, and close. The ‘files’ may of course represent stored data, but may also be devices, network and protocol interfaces, dynamic data sources, and services.

It is truly remarkable; a system whereon everything is a file — something that can readily be read and edited — is revolutionary and yet it is simple — why, even mundane! A mere child could think of it. It is, beyond any doubt, an elegant and ingenious idea.

But withal, this helped but little in embarking onto our journey into Inferno; and whilst it was indeed interesting to be given some information regarding its background, we are none the wiser. Thus, let us read the INSTALL file, wherein we shall — hopefully — find our answers; and indeed we do! For therein we are presented with actual instructions, but as they may appear cryptic to those who have never — or perhaps only rarely — used a Unix-based operating system, I shall try to elaborate on their instructions; for they merely appear cryptic — or, perchance, even challenging — and are, in actuality, quaint and mundane.

It is, however, to be noted that my instructions henceforth will work only on Linux x86; should you wish to be presented with instructions regarding other systems — systems whose name should not be spoken, for they are vicious and vile, forged somewhere far below hell itself; in a place Beëlzebub himself does not dare to enter — you may cease your reading here, for you may not find the information you desire. The following chapter is akin to a recipe from a cook book; hence follow the instructions with care, or your “meal” may turn out wretched, ugly and inedible.

One must first define the root of the installation; this may sound somewhat strange, yet in actuality one is simply required to aid Inferno in knowing where on your system it is located — it cannot know on its own and assumes it is located in /usr/local/inferno. Hence, should you not wish Inferno to be installed there, you must alter the mkconfig file; therein you can modify the ROOT variable to point to your Inferno directory. Yet withal, I would recommend simply using the directory Inferno wishes to be inside of, by creating it using sudo mkdir /usr/local/inferno and thereafter copying the contents from the old directory to the new one by typing sudo cp -r * /usr/local/inferno; I have found this to be much more simple. You must then move into this directory by typing cd /usr/local/inferno.

But be aware! Apart from the ROOT variable, there exist two others, namely SYSHOST and OBJTYPE; it is crucial to modify these so that they match your system, for otherwise your installation will fail — indeed, this is akin to letting a scoundrel wreak havoc on your system. Thus — this is, unless you are using one of the aforementioned systems whose names should never be mentioned, for they cause terror and fear far greater than that caused by the devil himself —, pay heed to the values of these two variables, for they ought to be set to Linux and 386 respectively. The latter should be modified to equal arm should your Linux installation be ARM-based, such as those running on the Raspberry Pi.

Having completed this task, you will thence be able to execute makemk.sh, a shell script that will spawn hither the mk executable which shall thenceforth be used for building Inferno itself; a infernal tool for certain, yet one that shall prove invaluable.

I implore you to act with as much care as you can permit henceforth, for the following commands utilise sudo; an almighty tool whose purpose is to allow you to be the lord of your system; a tool that grants you the permissions to do every conceivable thing on your machine; a tool that is a juxtaposition of both Good and Evil, for it imparts you with the power of achieving your every desire, but it may also destroy what you have created in an instant. Should your machine contain data you believe invaluable, I urge you create a copy of it elsewhere; in a place where Satan cannot touch it.

Notwithstanding, it must be used, for our machine will not permit us to make changes without it; you may attempt to run makemk.sh without sudo, but you shall be given an error, as one may not make any changes to the system without having been having been granted the appropriate privileges.

If you deem yourself to be prepared, execute sudo ./make
mk.sh whereupon you may be presented with a number of warnings that can, however, be ignored; for if, after a few seconds, you are told that “mk binary built successfully!”, everything has worked and a binary has been concocted and can thence be found inside /usr/local/inferno/Linux/386/bin.

But alas, our machine is dim-witted, for running mk does not yield anything; nay, it appears the command does not exist — which is undoubtedly wrong, for its existence can be ascertained by looking at the aforementioned directory. So what is one to do? The machine needs to be told where to find it — and the binaries that shall be brought into existence soon —, which means that we will need to modify the PATH variable.

The contents of this variable tell our machine where binaries are located and one must thus affix the path to our previously created binary onto the PATH variable, a task swiftly accomplished; but first it is imperative to know what Shell is currently being used. This is achieved by typing echo $SHELL into one’s terminal, which, in my case, yields /usr/bin/zsh, for I use Zsh; on your system, a likely candidate will be /usr/bin/bash, since the Bourne Shell, as it is called, is one of the most prominent ones in use today.

Nevertheless, one needs to add the following line to one’s  /.bashrc or  /.zshrc whose purpose it is to inform the machine of our newly built binary’s location, so that by typing its name it will be executed: export PATH="/usr/local/bin/
inferno/Linux/386/bin:$PATH".

Should you have neglected to heed my previous warnings regarding the usage of a different operating system, you must change the path accordingly; though I do trust you did no such thing.

Furthermore, the adding of this line to one’s  /.profile file is also recommended, though not a strict requirement.

Upon the completion of this task, please restart your terminal, for this causes it to renew its settings and take those into account you have just added; typing mk --help should return some information regarding the command’s usage.

Yet you may wonder — why, even be bothered —, for what has all this effort lead to? How has this file aided us in our journey towards Inferno? Fret not, for this file is but the beginning — why, it is akin to the apple that those whom God created first, Adam and Eve, had fallen for; the apple that initiated their fall from Eden; and just as they were cast from Eden, we, too, shall be cast from our current operating system and into Inferno. We, too, have sinned — albeit knowingly — to continue our descent into Inferno; mk is our apple, our forbidden fruit, wherewith we shall enter hell.

Having gained access to such a powerful tool, we must return to our Inferno installation in /usr/local/inferno and, upon having arrived, we must commence with the creation of the system itself.

The first command that must be run is sudo mk nuke — just a reminder of what is to come; for if we must nuke something, this surely cannot be a system of good. Running this command will erase files which are not necessary for us; thereupon we may begin the actual installation.

Finally, the time has come for us to install Inferno; the final command that will push open the gates that shall unveil the long-forgotten mystery of Inferno — sudo mk install; but first, you must wait, for this may take some time, depending on how powerful of machine you own.