Linux: Minimalsystem läuft im PDF-Dokument

Doom läuft auf allem, auch im PDF – warum nicht auch Linux? Das dachte sich ein Tüftler und startet ein Minimalsystem im PDF-RISC-V-Emulator.

vorlesen Druckansicht 141 Kommentare lesen
Linux läuft im PDF-Dokument

Linux startet im PDF-Dokument

(Bild: Screenshot / dmk)

Lesezeit: 2 Min.
Von
close notice

This article is also available in English. It was translated with technical assistance and editorially reviewed before publication.

Dass das Spiel "Doom" auf allem Möglichen – vielleicht bis auf einer Scheibe Salami, aber wer weiß, was da noch kommt – läuft, haben findige Tüftler immer wieder bewiesen. Nun hat einer jedoch den Linux-Kernel in ein PDF verfrachtet – und zwar nicht als Quellcode zum Lesen, sondern als startendes Betriebssystem.

Ausgangspunkt für den erfolgreichen Versuch war die Doom-Portierung nach PDF, die Mitte Januar publik wurde. Der Bastler ading2210 erörtert, dass LinuxPDF auf sehr ähnliche Weise funktioniert. Ausgangspunkt ist Javascript, das im PDF-Format unterstützt wird. Die Implementierungen in modernen Webbrowsern wie Chrome und Firefox seien begrenzt, anders als in Adobe PDF unterstützen sie nur eine Untermenge aller APIs – aufgrund von Sicherheitsbedenken. Das genügt jedoch, jedwede Berechnung auszuführen, die man will, lediglich mit recht begrenztem Input und Output.

Eine alte Version von Emscripten (ein LLVM-zu-Web-Compiler) kann das Ergebnis als "asm.js"-Ziel anstatt für WebAssembly ausspucken. Damit gelang es ading2210, eine modifzierte Fassung des TinyEMU-RISC-V-Emulators nach "asm.js" zu kompilieren. Und das läuft im PDF-Dokument.

Videos by heise

FĂĽr die Ein- und Ausgabe hat ading2210 den Code aus DoomPDF wiederverwendet. Jede Pixelreihe stellt ein eigenes Textfeld dar, deren Inhalte durch zahreiche ASCII-Zeichen erzeugt werden. FĂĽr die Eingabe steht ein virtuelles Keyboard zur VerfĂĽgung. Am einfachsten ist es, darin das angebotene Textfeld fĂĽr Eingaben zu nutzen.

Als größtes Problem bezeichnet ading2210 die Performance des Emulators. Der Linux-Kernel brauche 30 bis 60 Sekunden zum Starten, was mehr als hundertmal langsamer als normal sei. Daran lasse sich auch nichts ändern, da in der derzeitigen Version der Javascript-Engine V8 in der Chrome-PDF-Komponente der Just-in-Time-Compiler abgewürgt sei, was der Geschwindigkeit abträglich ist.

Der Programmierer ading2210 erörtert, dass als root-Dateisystem sowohl 32- als auch 64-Bit-Versionen möglich sind. Als Standard startet das 32-Bit-Buildroot-System, das aus den TinyEMU-Beispielen stammt. Auch ein 64-Bit-Alpine-Linuxsystem steht zur Verfügung, es erreicht jedoch nur die halbe Geschwindigkeit, weshalb es normalerweise nicht genutzt werde. Interessierte könne die Quellen im Github-Projekt forken und bearbeiten, er steht unter GPLv3-Lizenz. Dort lässt sich auch direkt das LinuxPDF ausprobieren.

(dmk)