Inferno OS auf Fedora Linux x86_64

Inferno ist ein kleines feines Betriebssystem, welches aus Plan 9 hervorgegangen ist. Inferno kann "nativ" direkt auf Hardware ausgeführt werden, für den Anfang ist jedoch eine "hosted" Installation einfacher. Inferno kann als "Anwendung" unter Windows, MacOS, Irix, Solaris, diversen BSD Unixen sowie auch unter Linux ausgeführt werden. Dieser Blogpost beschreibt, wie Inferno unter Fedora Linux (FC18) eingerichtet wird. Inferno Paket laden Das Basis-Inferno Paket kann bei Vita Nuova als TGZ Archiv geladen werden. Zum Zeitpunkt dieses Artikels ist dies die Datei "inferno-20100120.tgz". Inferno-Benutzer anlegen Als Superuser "root" legen wir einen neuen Benutzer mit dem Namen "inferno" an. Dieser Benutzer wird später der Besitzer aller Inferno-Dateien sein.

$ adduser inferno
$ passwd inferno
Changing password for user inferno.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

Inferno Paket auspacken Das Inferno-Paket wird in das Heimverzeichnis des Benutzers "inferno" ausgepackt und die Dateien dem Benutzer "inferno" zugeordnet:

$ cd /home
$ tar xfz /home/user/Downloads/inferno-20100120.tgz
$ chown -R inferno /home/inferno

notwendige Pakete nachinstallieren Auf einem 64bit Linux-System benörigen wir die Header-Dateien für X11, sowie die GNU-Libc für 32bit Linux. Mercurial wird von den Inferno-Entwicklern als Quellcode-Verwaltungstool benutzt, wir installieren daher Mercurial um im nächsten Schritt die Inferno-Quellen aktualisieren zu können:

# sudo yum install glibc-devel.i686 libgcc.i686 libX11-devel.i686 libXext-devel.i686 mercurial

Inferno Quellen aktualisieren Mercurial wird benutzt um die aktuelle Version der Inferno-Quellen zu laden. Diese Schritte müssen nun unter dem Benutzer "inferno" ausgeführt werden (und nicht als "root"):

# cd /home/inferno
# hg pull
# hg update

das Inferno "build"-System konfigurieren Die Datei "mkconfig" im Wurzelverzeichnis der Inferno-Installation anpassen:

#
#       Set the following 4 variables.  The host system is the system where
#       the software will be built; the target system is where it will run.
#       They are almost always the same.
#       On Nt systems, the ROOT path MUST be of the form `drive:/path'
ROOT=/home/inferno
#
#       Specify the flavour of Tk (std for standard builds)
#
TKSTYLE=std
#
#       Except for building kernels, SYSTARG must always be the same as SYSHOST
#
SYSHOST=Linux           # build system OS type (Hp, Inferno, Irix, Linux, MacOS X, Nt, Plan9, Solaris)
SYSTARG=$SYSHOST                # target system OS type (Hp, Inferno, Irix, Lin ux, Nt, Plan9, Solaris)
#
#       specify the architecture of the target system - Plan 9 imports it from the
#       environment; for other systems it is usually just hard-coded
#
OBJTYPE=386                     # target system object type (eg, 386, arm, mips, power, s800, sparc)
#
#       no changes required beyond this point
#
OBJDIR=$SYSTARG/$OBJTYPE
<$ROOT/mkfiles/mkhost-$SYSHOST                  # variables appropriate for host system
<$ROOT/mkfiles/mkfile-$SYSTARG-$OBJTYPE # variables used to build target object type

Das Inferno-Werkzeug "mk" bauen "mk" ist die Inferno-Version des bekannten "make" Tools von Unix:

# ./makemk.sh 
[...]
gcc -o mk Posix.o sh.o arc.o archive.o bufblock.o env.o file.o graph.o job.o lex.o main.o match.o mk.o parse.o recipe.o rule.o run.o shprint.o symtab.o var.o varsub.o word.o /usr/local/inferno/Linux/386/lib/libregexp.a /usr/local/inferno/Linux/386/lib/libbio.a /usr/local/inferno/Linux/386/lib/lib9.a
mk binary built successfully!

Das Inferno-Verzeichnis für ausführbare Dateien in den Unix-Suchpfad anhängen Die Inferno-Programmdateien werden im Verzeichnis "/home/inferno/Linux/386/bin" erstellt. Damit diese Dateien vom Linux gefunden werden, fügen wir dieses Verzeichnis dem Suchpfad hinzu:

# export PATH=$PATH:/home/inferno/Linux/386/bin

Inferno neu kompilieren Nun wird das Inferno-System aus dem Quellen neu übersetzt:

# mk nuke
# mk install

Inferno ausprobieren Nun haben wir ein aktuelles Inferno-System. Wir testen Inferno von der Kommandozeile (als Benutzer "inferno"):

# emu -g1024x768 -r/home/inferno wm/wm

Inferno wird hier mit einer Auflösung von 1024x768 Bildpunkten gestartet, Wurzelverzeichnis ist "/home/inferno" und der Inferno-Windowmanager "wm" wird gestartet. Ein Inferno Startscript Wenn sich Inferno von der Kommandozeile starten lässt, erstellen wir ein Startscript "/home/inferno/startinferno.sh":

1
2
3
4
#!/bin/sh
export INFERNO=/home/inferno
export PATH=$PATH:$INFERNO/Linux/386/bin
emu -g1024x768 -r$INFERNO wm/wm

Bei einer anderen Bildschirmauflösung als 1024x768 die letzte Zeile entsprechend anpassen. Inferno in den GDM Display Manager einbauen Damit sich Inferno direkt als "Windowmanager" unter Linux starten lässt, erstellen wir eine Konfigurationsdatei "/usr/share/xsessions/inferno.desktop":

[Desktop Entry]
Encoding=UTF-8
Name=Inferno
Comment=Start Inferno
Exec=/home/inferno/startinferno.sh
Type=Application

[Window Manager]
SessionManaged=true

Nun lässt sich Inferno direkt vom GDM Display Manager beim Login in Linux auswählen. Inferno verlassen Inferno wird über den "shutdown -h" (halt) Befehl wieder verlassen. Um einen "Logout Inferno" Eintrag im Inferno-Systemmenü zu bekommen, editieren wir die Datei "/home/inferno/lib/wmsetup" und fügen vor der Zeile "menu Shell" eine neue Zeile ein:

menu Logout           {wmrun shutdown -h}

Das Inferno-System ist nun einsatzbereit. Viel Spass mit Inferno!

Inferno on Fedora Linux

All posts

  1. Plan 9, Linux und ein Raspberry Pi