Beta Inferno Operating System

Magic Sam

Forever Homebrew
Aug 10, 2007
Yuzu onsen
Hi all,

I've compiled the Inferno Operating System on the Pandora :)
Inferno® is a compact operating system designed for building distributed and networked systems on a wide variety of devices and platforms. With many advanced and unique features, Inferno puts an unrivalled set of tools into your hands.


Grab it on the Repo while it's hot !

It's running hosted (through the "emu" application) inside our regular GNU/Linux distribution (Angström). Very few binaries have been compiled for the ARM architecture, most of them (in the /dis directory) are running through the Dis Virtual Machine !

The package starts the window manager and the login application (wm/logon) inside an X11 800x424 window:
exec emu -s -S -g 800x424 -C m8 /dis/wm/wm.dis wm/logon

/!\ Default user is: inferno /!\

New in build #2:
one can log into Inferno with his/her regular credentials

New in build #1

- Inferno 4th edition from March 2015 + latest commits from the Bitbucket repository
- Compiled with @ptitSeb beta Code::Blocks
- Removed the -m32 flag (only for x86 ? ) from the compilation options
- Had to symlink gcc to arm-gcc
- Made some directories available on appdata/inferno-magicsam to the "inferno" user
- Source is inside the package

Known bugs:

- Charon (web browser) doesn't start (floating point errors ?) (fixed in build #4)


- Make Charon work (recompile with default CFLAGS from @ptitSeb 's Code::Blocks ?) (fixed in build #4)
- Provide actual screenshots from the Pandora (fixed in build #3)
- Provide better documentation instead of the simple file (fixed in build #3)
- Double check licensing terms (GPLv2 only ? )
- Use sane file permissions on appdata/inferno-magicsam (i.e not chmod a+rwx) (fixed in build #3)

Cheers, Magic Sam

N.B: this package relies heavily on file permissions and symlinks. I doubt I'd work on FAT32 SD cards...
Last edited:
Hi @Linux-SWAT :)

Would you know how to properly operate Plan 9 and / or Inferno ?

If yes, could you please give Inferno a thorough try and report whether things are working correctly on your end or not ?

I'm still learning how to use it, so any help would be really appreciated :D

Cheers, Magic Sam
@Cloudef , where are yoooouuuuuu... ?! :p

On a side note, I managed to compile my first limbo program ("Hello, world") on Inferno ;)

Cheers, Magic Sam
[doublepost=1476456864,1476455817][/doublepost]It's bug report time already !

I managed to create a text file in /usr/inferno (hello.b, see above), but I couldn't overwrite it, so I had to create a new file each time (hello2.b, hello3.b, etc...) (fixed in build #2)

I guess I'll have to play with umask values on /usr/inferno...

An alternative would be that the runscript finds who the user is (with $USER) and creates the home directory in /usr accordingly. Then, one would just log in with his/her regular credentials...
(fixed in build #2)

EDIT: ^ it works ! I don't know if that's the correct procedure to add users to Inferno though...

Opinions ?

Cheers, Magic Sam
Last edited:
@Linux-SWAT : thanks for the link, it's way easier to understand than the official documentation :D

EDIT: another bug report: I couldn't set the correct timezone, because /locale/timezone is inside the PND, thus in read-only mode. I'll take care of this ASAP ! (fixed in build #2)

EDIT 2: @Linux-SWAT : I managed to "mount" in /n/ftp, YEAH !!! :D

Cheers, Magic Sam
Last edited:
I'll go for a 4gb
I did push the 4Gib too, but just because the others (competitors to Pyra) were doing it. Then it would look like inferior, just because of the RAM specs. With the extra unused RAM, Ill probably make use of ramdisks, or mount iso's so there is even less wait time.

@Shenmue : Pandora's box, filled to the brim with demons
In Shenmue3, the box is filled with kittens. And only Ranma Saotome would call them demons... from HIFL
Hi all :)

Slightly off-topic, but I have just found out that Bell Labs now belongs to Nokia.

This could lead to some interesting developments IMHO...

Back on track now: did you guys have a chance to test Inferno on the Pandora ? It's working correctly on my end AFAIK, but I'm not doing anything serious with it at the moment...

Thanks for your help !

Cheers, Magic Sam
I'm not coinvinced Nokia really has the assets to be anything more than a patent troll these days, unfortunately. Shame it didn't end up with Trolltech really. Wiki seems to reckon Inferno is currently being developed by a British company called Vita Nuovo, which ties in with where I've found the most documentation for it.

So, I gave Inferno a quick go. I was mostly successful. ls and grep appear to work like on any BSD/Linux, and even ps and pwd work as I expected while I thought those were linuxisms not found on the BSDs. Piping works, but there's no tab completion in the shell which is kind of out of my comfort zone personally. I played a game of tetris and a bit of bounce, inspecting the latter using the task manager. I managed to get lost in an ed session, but managed to kill it using another shell and the kill command which doesn't take a signal number here, just a pid and -g if you want to kill all subprocesses/sister processes. I then discovered Brutus, with which I was able to make a file just fine.

I ended up trying to start charon, the web browser, but didn't succeed. Starting from a terminal, it seemed to stall the shell but not spawn a subprocess, so there was nothing to kill to get my shell back. I took that as a signal to curtail my investigations for the day.

Thanks for the port! I've yet to really discover what Inferno can do that Linux can't easily, but so far it's not a completely alien environment to hack about in.
Hi all :)

@levi : thanks for giving this package a try !

You're right, current developers are Vita Nuova. Ownership went from Bell Labs to Alcatel Lucent, and from Alcatel Lucent to Vita Nuova.I found out only yesterday that Nokia owns Alcatel Lucent (and Bell Labs) now.

Charon failing to start is a known bug (see my first post). I don't know what's happening though, as the whole thing remains silent. If you start the memory monitor before trying to start Charon, you should see the heap memory usage going up and down a lot, so I guess there's something going on in the background, but I still don't know what :p

Cheers, Magic Sam
Hi all !

@Linux-SWAT : I've found some quality documentation here on and there (bad translation from Russian though...)

Looks like copying /usr/inferno to usr/$USER would be sufficient to add a new user to Inferno (it's some kind of template). I know the documentation you pointed to mentions a script to mount the user's home directory from the host OS into Inferno , but I don't think that would be a great idea on the Pandora (home directory could be on NAND for example...). I'd rather stick to appdata/inferno-magicsam/inferno/usr/$USER being symlinked to /mnt/utmp/inferno-magicsam/inferno/usr for the moment, it's safer IMHO :) (fixed in build #2)

@levi : one of the Inferno maintainers told me our issue with Charon could come from floating point operations. Stay tuned :)

Cheers, Magic Sam
Last edited:
Thanks for looking into it. I don't really expect Charon to be very usable in today's internet, but if it's a general problem with floating point maths then it's worth fixing!

FWIW I tested copying /usr/inferno, and it let me log in as the new user. I'd hope native inferno has some concept of passwords, but hosted doesn't (by default), so a new /usr directory is all you need to provide a login name. I forgot to test overwriting a file, but I'll have to leave that for another test session.
Hi all :)

Build #2 is on the Repo !

Grab it here while it's hot !

New in build #2

- Timezone can be set correctly (locale directory is on appdata/inferno-magicsam now)
- /usr/$USER is created on first boot (/usr/inferno is used as a template)
- As a result, one can log into Inferno with his/her regular credentials
- New "emu" options: -s for easier debugging and -S for stylus imput behaviour for Tk mouse events

As always, if you guys could give this new version a try and post some feedback here on the boards or on the Repo, that would be really appreciated ;)

Cheers, Magic Sam
Last edited:
Hi all :)

@levi : I tweaked and mkfiles/mkfile-Linux-arm some more, added the default CFLAGS from the latest @ptitSeb beta Code::Blocks.

Let's hope it solves the floating point issues with Charon :)

Cheers, Magic Sam
Thanks; are you releasing that version to the repo, or is there some other way for me to test it?

Also, I'll note that I meant to test build 2 already, but haven't got round to it yet. I'm a little concerned that if we login with out linux username, that will conflict with the system user that inferno build 1 created under that name, but I'm not sure what's the best way to test for such conflicts in inferno. I should just dive in and see if I can see anything, but so far I've put that off.
@levi : I'm still building that new version, it's not yet ready for the repo :p

Before trying build 2, you should get rid of the old appdata/inferno-magicsam directory first (if there's nothing valuable in there of course)

Cheers, Magic Sam
[doublepost=1477769140,1477767052][/doublepost]Hi again :)

@levi : packaging is now complete... but unfortunately Charon is still not starting :( It's not worth uploading this new version, as the other changes are pretty minor IMHO.

I'll keep on bugging people on Inferno's Google group about this issue, I'll even register an account on the Bitbucket repository to report that bug, until Charon works properly on the Pandora :p

Cheers, Magic Sam
[doublepost=1477770870][/doublepost]Hi again,

Interesting bug: starting emu with the "-c1" parameter (default is -c0) makes Inferno crash immediately, so compilation into native instructions seems not to work...

As always, the whole thing is completely silent, even with cX > 1 ... :mad:

Cheers, Magic Sam
As I suspected, logging in as your linux username breaks inferno security. If you log in as 'inferno' then open a shell and issue 'kill 1' it'll tell you permission is denied to modify that process. But if you log in as your linux user name you're effectly logging in as root, and now kill 1 will freeze the system. It's probably not a big deal as I don't think anyone's actually using this as a multiuser system for secure data, but it's not quite ideal.