Wie mache ich eine ziemlich spezielle Linux Distro?
Es wird vielleicht etwas länger werden, aber das sollte nicht so kompliziert sein.
Also, ich möchte aus meinem Raspberry Pi meine eigene Spielekonsole machen. Und ich meine nicht einfach: RetroPie installieren oder sowas. Ich möchte nicht, das meine Konsole einfach nur ein Emulator ist.
Erstmal: Warum möchte ich das machen? - Weil ich da Lust drauf habe. Ich habe diese Idee seit Monaten in meinem Kopf, und werde sie nicht los, bis ich es endlich gemacht habe.
Also, ich möchte meine eigene Linux-Distro machen, für meine eigene Konsole (Der Raspberry Pi, wo ich die Distro drauflade). Warum Linux-Distro? Weil ein komplett eigenes Betriebssystem quasi unmöglich ist.
Was soll die Distro können?
Sie soll ziemlich ähnlich einer PS1 sein (Einziges Beispiel von mir, da ich sonst nicht so wirklich eine vergleichbare Konsole kenne.) Also: Kein Desktop, kein Dateimanager, kein Texteditor, nichts. Nur eine einfache Instanz von cmd (Ich weiß nicht wie dass in Linux heißt, ich benutze hauptsächlich Windows.) welches aber nur Python installiert hat, und bei jedem Start einfach nur ein Python Script startet.
Warum Python? - Ich habe meine eigene Programmiersprache in Python geschrieben, auf die meine Spiele basieren sollen. Meine Programmiersprache ist nicht Grafisch oder so, sondern einfach nur Konsole, wie JavaScript (Standalone). Ich weiß, das ist nicht gerade "spiel-isch" um Spiele zu erstellen, aber Hey! Ich will es trotzdem.
Also, Ich drücke den An-Knopf auf meinem Pi, ein Startup-Jingle wird abgespielt mit dem Logo, python startet im Hintergrund shell.py (Die shell für meine Programmiersprache) welche direkt ein Skript ausführt (home.tlps, ausgeführt durch start("home.tlps"), welches ich direkt in der shell.py für die Konsole implementieren werde.) und dann einfach meine Programmiersprachen-Shell anzeigt, mit dem home.tlps Programm welches ich bereits geschrieben habe, und halt Spiele vom Internen Speicher anzeigt, abspielt, etc. Das ist alles in meiner Sprache schon erstellt worden.
Also Kurz: Eine Linux-Distro, welche beim Start nicht diesen ganzen Mount-Gibberisch und so anzeigt, kurz das Logo einblendet, den Startup-Jingle abspielt, cmd in Vollbild startet, und automatisch ein Python-Skript ausführt.
Eigentlich ganz einfach oder? Nur wie mache ich die Distro?
2 Antworten
Du könntest dafür Ubuntu Server nehmen. Download für den Raspi gibt es hier: https://ubuntu.com/download/raspberry-pi
Das bootet direkt in die Bash-Shell (das Äquivalent zur CMD). Python ist vorinstalliert, d.h. du musst nur noch dein Skript starten.
Dass da beim Starten so ein schönes Logo angezeigt wird, geht definitiv. Das kannst du irgendwo in Grub anpassen, die Option müsste "splash" heißen.
Und man kann auch beim Starten direkt ein Programm ausführen, z.B. mit einem Display-Manager wie sddm. Zur Not geht wahrscheinlich auch die .bashrc.
Du weißt schon, daß Du fast jede Distro quiet mit Splasher starten kannst?
Natürlich kannst du auch eien eigene Zusammenstellung machen,, hindert Dich keiner.
Rabiater Ansatz: Kernel+Initramfs, Initramfs, nur das notwendigste an libs etc. und Dein 'Menü' wird direkt als Init gestartet.
Allerdings sollte es dann hoffentlich auch die typischen Aufgaben von Init übernehmen.
Eine andere Möglichkeit wäre sowas wie busybox zu nutzen um ein extrem minimalistisches Linux-Userland zu bekommen.
P.S.: Vielleicht sollte ich noch erwähnen, daß man ein initramfs auch von Kernel Huckepack genommen werden kann.
Entschuldigung, das einzige Linux mit dem ich je gearbeitet habe ist Raspbian und Ubuntu. Ich benutze eher Windows, daher weiß ich hautsächlich (zumindest in meinem Wissen) dass alle Linux-Distros ziemlich gleich sind. Initramfs habe ich tatsächlich noch nie gehört. Natürlich würde ich nur die notwendigsten Librarys verwenden, jedoch habe ich noch nie von "busybox" gehört. Der Rest ergibt für mich Sinn.
initramfs= Ramdisk für die frühe Starphase
busybox ein Binary, das viele typischen Kommandozeilentools vereint, inklusive Shell.
Der Gibberish, wie Du ihn nennst, ist teilweise unumgänglich, wenn das System korrekt funktionieren soll, die Kunst besteht darin, es auf das wirklich wesentliche udn die konkrete Anwendugn zu reduzieren.
Es wäre schon gut, wenn Du Dich recht genau mit dem Gesamtprozess auskennst, sonst dürfte das schwierig werden.
Du könntest ja mal damit anfangen, daß Du eine der Distributionen nimmst, und sie so runterstrippst, wie Du es gerne hättest. Vielleicht bist Du dann schon nah genug an dem, was Du Dir wünschst.
Könnte ich tatsächlich versuchen. Ist es überhaupt möglich das Skript automatisch zu starten dann?
Ich sehe zumindest nichts, was generell dagegen spräche. Du mußt Dir klar machen: Dein Displaymanger für den Login wird gestartet, weil das Initsystem eben so eingerichtet ist. natürlich kann ich den Start abschalten.
Genauso kann ich auch abschalten, daß auf den VTs ein getty gestartet wird.
Aber Du wirst definitiv Dokumentation lesen müssen ;-).
Hört sich gut an! Kann man dass dann auch abändern, mit Splash, und Autorun, um automatisch das Skript zu starten?