LPIC-1 // INTERAKTIVE PROJEKTARBEIT
Bau dir ein Linux: Eine kurze Systemrettung, bei der aus richtigen Diagnoseentscheidungen Schritt für Schritt ein funktionierender Rechner entsteht.
Projekt: André Stiebitz
Abschlussprojekt im Linux-Kurs · Stand 30.07.2026
andrestiebitz.de/kernel-panic/
Vollständige Projektdokumentation · MIT Open Source
01 // Projektauftrag
Als Abschlussprojekt des Linux-Kurses sollte ein frei gewähltes, nachvollziehbares Projekt entstehen. Meine Wahl ist „Kernel Panic — Bau dir dein Linux“: ein Browsergame, in dem der Spieler ein gestörtes Linux-System Schritt für Schritt wieder in Betrieb nimmt. Die fertige Abgabe besteht aus dem öffentlichen Spiel, dieser Dokumentation, einem Download-Paket und dem offenen Quellcode.
02 // Lernkonzept
Das Projekt fragt Befehle nicht isoliert ab. Jede Aufgabe beginnt mit einer beobachtbaren Situation und folgt demselben Denkweg. Damit wird nicht nur „Welcher Befehl?“ gelernt, sondern auch „Warum dieser Befehl und welches Risiko vermeide ich?“.
| Kapitel | LPIC-Bezug | Schwerpunkte im Fragenpool |
|---|---|---|
| Boot | 101.1–101.3 | Hardware, Kernel, GRUB, Journal und Units |
| Pakete | 102.3–102.5 | APT, dpkg, RPM, DNF und Bibliotheken |
| Text | 103.2–103.8 | Filter, Streams, Umleitungen und Archive |
| Prozesse | 103.5 / 103.6 | Jobs, Signale, nice und Prozesszustände |
| Storage | 104.1–104.3 | Blockgeräte, fstab, Inodes, Swap und Mounts |
| Rechte | 104.5–104.7 | Modi, Spezialbits, Links, find und stat |
| Shell | 105.1 / 105.2 | Variablen, Tests, Schleifen und Skripte |
| Netzwerk | 109.1–109.4 | IP, Routing, Sockets, DNS und CIDR |
| Sicherheit | 107 / 110 | Konten, Gruppen, SSH-Schlüssel und sudo |
| Betrieb | 107 / 108 | Zeitplanung, Locale, Logs und Verify |
Die Zuordnung dient der fachlichen Orientierung. Das Spiel bildet nicht jedes einzelne LPIC-Lernziel ab und ersetzt weder Kursunterlagen noch Prüfungsvorbereitung.
Die bereitgestellten Linux-Kursunterlagen wurden ausschließlich genutzt, um die Themenabdeckung zu kontrollieren. Sämtliche Spieltexte und Szenarien wurden für dieses Projekt neu formuliert. Kursoriginale, Lösungssammlungen und Prüfungs-Screenshots sind nicht enthalten.
03 // Spielablauf
Pro Kapitel werden drei Fragen zufällig ausgewählt. Der Lauf dauert ungefähr 30 Minuten und eignet sich für Vorführung und Wiederholung.
Alle zehn Fragen jedes Kapitels werden gespielt. Der gespeicherte Fortschritt ermöglicht mehrere Sitzungen.
Eine Diagnose oder sichere nächste Aktion wird aus mehreren Antworten gewählt. Genau eine Antwort ist richtig.
Der Spieler tippt einen Befehl selbst. Leerzeichen und Pipes werden normalisiert, Groß-/Kleinschreibung bleibt absichtlich relevant.
Gemischte Befehls- oder Skriptbausteine werden in eine ausführbare Reihenfolge gesetzt. Ablenker müssen bewusst weggelassen werden.
Fehler kosten XP und Systemintegrität, Hinweise kosten XP. Nach einer Antwort werden Signal, Werkzeug, Entscheidung und Risiko erklärt.
04 // Fehler und Lernübersicht
Lernen entsteht an der Stelle, an der eine Antwort nicht stimmt. Die Fehlerbehandlung ist deshalb kein Abbruch, sondern ein eigener Lernschritt: sie benennt den Preis, zeigt die Lösung und führt weiter.
Eine falsche Antwort kostet zehn XP und zwei Prozentpunkte Integrität. Der Abzug steht in der Fehlermeldung, statt unbemerkt in der Statistik zu verschwinden.
Die Meldung nennt den richtigen Befehl beziehungsweise die richtige Antwort. Das Schema Signal → Werkzeug → Entscheidung → Risiko klappt automatisch auf.
Nach dreieinhalb Sekunden erscheint die nächste Frage. Ein „Weiter“-Knopf ist immer vorhanden und überspringt die Wartezeit sofort.
Drei Fehler in einem Kapitel setzen auf den Kapitelanfang zurück. Gelöste Fragen und gesammelte XP bleiben erhalten; nur der Einstiegspunkt wandert zurück.
Eine falsch beantwortete Frage gilt nicht als gelöst und wird am Ende des Kapitels erneut vorgelegt. Ein Kapitel ist erst abgeschlossen, wenn alle seine Fragen sitzen. Das hält den Lauf vollständig abschließbar und bewahrt gleichzeitig den Vertrag mit der Score-API, die für jede Frage des Laufs ein Einzelergebnis erwartet.
Am Ende eines Laufs gibt die Abschlussseite einen persönlichen Lern-Spickzettel heraus, als Markdown-Datei und als Druckansicht. Er beginnt mit den Fragen, die einen zweiten Versuch oder einen Hinweis gebraucht haben — jeweils mit Lösung und vollständigem Lernschema —, und endet mit der Bilanz pro Kapitel. Er entsteht vollständig im Browser, ohne Serveranfrage und ohne persönliche Daten.
05 // Oberfläche
Die Oberfläche verbindet eine reduzierte Terminal-Ästhetik mit klaren hellen Aufgabenflächen. Kapitelstatus, XP, Integrität und Fortschritt bleiben jederzeit sichtbar. Die vier Ansichten zeigen den vollständigen Weg von der Moduswahl bis zum Kapitelbericht.
06 // Technische Umsetzung
„Kernel Panic“ ist mit Next.js 16 und React 19 umgesetzt und wird als statische Website exportiert. Das gesamte Lernen funktioniert ohne Anwendungsserver. Nur die optionale Bestenliste spricht mit einer getrennten Python-API und einer privaten SQLite-Datei. CSS erzeugt die Oberfläche; der Systemplan ist ein eigenes SVG.
| Start | Der Spieler wählt Kurslauf oder Lernmodus. |
|---|---|
| Auswahl | createRunQuestionIds() mischt je Kapitel 3 oder 10 eindeutige IDs. |
| Speicherung | Modus, IDs, Fortschritt, XP, Integrität, Fehler und Hinweise landen unter kernel-panic-progress-v2 im Browser. |
| Validierung | Beim Laden entfernt sanitizeProgress() unbekannte oder widersprüchliche Werte. |
| Darstellung | React rendert die aktuelle Frage und den aus dem Zustand abgeleiteten Kapitelstatus. |
| Scoreboard | Erst am Abschluss lädt oder speichert die optionale „Hall of Tux“ einen anonymen Alias. |
| Ausfallsicherheit | Ist die API nicht erreichbar, bleiben Spiel, Fortschritt und Abschluss vollständig nutzbar. |
07 // Betrieb und Erweiterung
Für das Spiel werden Node.js 20 oder neuer, npm und ein aktueller Browser benötigt. Die lokale Score-API braucht zusätzlich Python 3.13; ihr Produktionsbetrieb ist per Docker Compose dokumentiert. Das Repository kann von Codeberg geklont oder als ZIP geladen werden.
git clone https://codeberg.org/andremadstop/lpic-kernel-panic.git cd lpic-kernel-panic npm install npm run dev # Browser: http://localhost:3000/kernel-panic/
npm audit npm run check npx playwright test # npm run check erzeugt die Schatz-DB, testet die Score-API # und führt Linter, Logiktests sowie statischen Build aus. # Das fertige Webprojekt liegt danach in out/.
Neue Aufgaben werden in lib/question-bank.js einem Kapitel
zugeordnet. Jede Frage enthält eine eindeutige ID, Typ, LPIC-Ziel,
Aufgabenstellung, Lösung, Signal, Werkzeug, Entscheidung, Risiko,
Hinweis und XP. Abhängig vom Typ kommen Auswahlmöglichkeiten,
akzeptierte Terminalantworten oder Sequenzbausteine hinzu.
Der Banktest kontrolliert Anzahl, eindeutige IDs, Pflichtfelder, genau eine richtige Auswahlantwort sowie vollständige Terminal- und Sequenzlösungen. Eine Änderung ist erst fertig, wenn alle Prüfungen grün sind.
08 // Qualität und Sicherheit
100 / 100 FRAGEN VALIDE 6 / 6 BROWSERTESTS BUILD GRÜN 0 VULNERABILITIES
| Prüfung | Was kontrolliert wird | Ergebnis |
|---|---|---|
| Fragenbank | Exakt 10 × 10, eindeutige IDs, Pflichtfelder und typspezifische Lösungen | grün |
| Spiel-Logik | Normalisierung, Mischen, 30/100-Auswahl, Punkte, Speicher-Sanitisierung und Kapitelbericht | grün |
| Komplettweg | Ein zufälliger 30-Fragen-Kurslauf wird automatisch bis zum Systembericht gelöst | grün |
| Lernmodus | Start mit allen 100 Fragen und 10 Fragen pro Kapitel | grün |
| Persistenz | Fragenauswahl bleibt nach Neuladen identisch | grün |
| Score-API | Validierung, serverseitige Neuberechnung, SQL-Constraints, Ranking und Idempotenz | grün |
| Mobil | 390 × 844 Pixel ohne horizontalen Überlauf | grün |
| Auslieferung | PDF, ZIP, API-Health, Schatzdatei und Security-Header live vorhanden | grün |
| Abhängigkeiten | npm audit gegen die npm-Sicherheitsdatenbank | 0 Befunde |
localStorage des Geräts.Fortschritt synchronisiert nicht zwischen Geräten. Freitext wird nur gegen definierte Befehlsvarianten geprüft. Weil Fragen und Clientcode offen sind, ist die Bestenliste ein spielerischer Vergleich und kein manipulationssicherer Prüfungsnachweis.
09 // Erfolg, Community und Easter Egg
Ein reines Quiz quittiert meist nur „richtig“ oder „falsch“. Dieses Projekt setzt zusätzlich auf erkennbare Etappen: Nach jedem Kapitel fährt ein neues Systemmodul hoch. Eine kurze Animation nennt das erreichte Kapitelziel, fasst den Lerngewinn zusammen und zeigt drei konkrete Fähigkeiten. Nach Kapitel zehn startet das Gesamtsystem mit Abschlussanimation, Statistik und Ergebnisbericht.
Wer möchte, veröffentlicht am Ende einen frei gewählten Alias und seinen auf 1.000 Punkte normierten Score. Die API berechnet das Ergebnis aus den Einzelergebnissen neu. Klarnamen sind unnötig.
Fortgeschrittene können im Seitenquelltext eine Ops-Notiz und eine absichtlich öffentliche SQLite-Datei finden. SQL-Abfragen führen durch erfundene Wartungslogs bis zu einem kleinen Internet-Klassiker.
Die Schatzdatei ist ein statisches Fake-Artefakt ohne echte Nutzer-, Score- oder Serverdaten. Die produktive SQLite-Datei liegt außerhalb des Webroots und ist ausschließlich über die eingeschränkte Score-API erreichbar. So bleibt der Witz lehrreich, ohne die Infrastruktur zu öffnen.
10 // Veröffentlichung
npm run check rsync -a --delete out/ "$HOST:$WEBROOT/kernel-panic/" ssh "$HOST" "cd \$COMPOSE_DIR && docker compose up -d --build" BASE_URL=https://andrestiebitz.de npx playwright test
Host, Webroot und Compose-Verzeichnis stehen als Variablen, weil die Zielumgebung nicht Teil der Veröffentlichung ist.
| Spiel | https://andrestiebitz.de/kernel-panic/ |
|---|---|
| …/kernel-panic/kernel-panic-projektarbeit.pdf | |
| ZIP | …/kernel-panic/kernel-panic-lpic-projekt.zip |
| Git | https://codeberg.org/andremadstop/lpic-kernel-panic |
| API-Health | …/kernel-panic/api/health |
Quellcode und eigene Projekttexte stehen unter der MIT-Lizenz,
Copyright © 2026 André Stiebitz. Nutzung, Kopieren, Änderung und
Weitergabe sind erlaubt, sofern Copyright- und Lizenzhinweis erhalten
bleiben. Die Software wird ohne Gewährleistung bereitgestellt. Der
vollständige rechtsverbindliche Text liegt in der Datei
LICENSE im Repository und im ZIP.
Die MIT-Freigabe umfasst ausschließlich die selbst entwickelte Anwendung und die selbst formulierten Projekttexte. Bereitgestellte Kursunterlagen, fremde Lösungsblätter und Prüfungsbilder wurden nicht veröffentlicht und sind nicht Teil der Lizenz.
11 // Abschluss
„Ich wollte die LPIC-Befehle nicht nur als Quiz abfragen, sondern als zusammenhängende Systemrettung, bei der man aus einem Signal das passende Werkzeug und eine sichere Entscheidung ableitet.“
Das Projekt verbindet Linux-Fachinhalte, Webentwicklung und Qualitätssicherung in einer überschaubaren, direkt nutzbaren Abgabe. Sinnvolle spätere Erweiterungen wären ein frei wählbares Kapitel, barriereärmere Tastatursteuerung, weitere Erklärvarianten oder ein Export des persönlichen Ergebnisberichts. Die jetzige Fassung ist mit Lernpfad, Erfolgsmomenten, Bestenliste und Schatzsuche abgeschlossen.
LICENSE.
Live: https://andrestiebitz.de/kernel-panic/
Download: https://andrestiebitz.de/kernel-panic/kernel-panic-lpic-projekt.zip
Quellcode: https://codeberg.org/andremadstop/lpic-kernel-panic
Lizenz: MIT · Copyright © 2026 André Stiebitz