Inferno - hpaluch/hpaluch.github.io GitHub Wiki
Inferno
Inferno is another Experimental OS from Bell Labs. It is influenced by Plan9 but there are important changes:
- system typically run "hosted" - for example build and run under 32-bit Linux for i386
- programs run in JVM like environment (platform neutral bytecode files with extension .dis)
- programs are written in new Limbo language (a bit similar to Go, that actually is influenced by Limbo) using .m extension (Module declarations, like .h in C) and .b - implementation
Setup
My strong recommendation: used 32-bit and rather old Linux distribution:
- I installed Debian 9/i386 from: https://cdimage.debian.org/mirror/cdimage/archive/9.2.1/i386/iso-dvd/ it is old enough to avoid hipster gcc15 with its awful C23 standard (that breaks most of old C code).
- but avoid too old distributions - troubles with expired GPG repository keys, etc...
- downloaded all 3 DVDs (and supplied them as "extra CDs" when asked by installer)
- installed XFCE environment and SSH for remote access
NOTE: If you insist on using new 64-bit Linux host, rather try 9fronts distribution of Inferno called "purgatorio" from https://git.9front.org/plan9front/purgatorio/HEAD/info.html
I used (modified) very good guide to start from: https://seh.dev/limbo-intro/
But important notes:
- you should setup and build under
inferno
Unix user to avoid later/usr/USERNAME
not found when you start Inferno - I installed following packages in Debian 9/i386:
# required;
apt-get install libx11-dev libxext-dev git-core build-essential
# optional:
apt-get install sudo mc vim
Tested archive:
- inferno-20150328.tgz
- downloaded from https://www.inferno-os.org/inferno/downloads.html
with
curl -fLO https://www.inferno-os.org/dist/4e/inferno-20150328.tgz
- unpacked on /usr/local (so /usr/local/inferno)
- changed owner to
inferno
user
Added following part to ~inferno/.profile
(from seh.dev article):
export EMU='-g1024x768 -c1'
export INFERNO=/usr/local/inferno
export PATH=$PATH:$INFERNO/Linux/386/bin
And then build:
inferno$
source ~/.profile
cd /usr/local/inferno/
vim mkconfig # no change needed
./makemk.sh
mk mkdirs
mk clean
mk install
Now ensure that you are in GUI (using XFCE) logged as inferno
user and
run in terminal:
source ~/.profile
emu
wm/wm # run under emu ';' prompt
You should see new Window and Inferno's menu on left-bottom.
NOTE: If you see just blank Window it means that window is too small (cropped) so menu is not visible. Do one of:
- increase resolution of your X11 session (in XFCE menu Settings -> Display)
- lower resolution in
EMU
variable in~/.profile
, source it and try again.
NOTE: Limbo command sources are under app
folder (.m and .b extensions). Compiled
bytecode binaries are under dis
folder and using .dis extension.
You will find docs in PDF format under doc
folder.
Resources: