Dieser Guide führt einmal durch: Lyx OS starten, nachsehen was für Hardware da ist, welche Platten es gibt, und eine davon so einteilen und formatieren, dass ein System darauf liegen könnte.
→ Lyx OS · Werkzeuge in /bin · parted · Treibermodell · Systemarchitektur
Ein Installationsprogramm gibt es noch nicht. Dieser Guide bereitet den Datenträger vor — er installiert nichts. Was danach fehlt, steht am Ende unter „Was heute noch nicht geht„.
bash bootloader/build.sh # Abbild bauen — allein laufen lassen, nicht verketten
bash bootloader/run.sh # starten
run.sh sucht die OVMF-Firmware selbst (/usr/share/OVMF und Geschwister) und bricht mit einem Hinweis ab, wenn sie fehlt (sudo apt install ovmf). Vorgabe: KVM, 4 Kerne, 512 MB, serielle Ausgabe auf stdout, ein e1000-Netzgerät mit Portweiterleitung 8080 → 80.
| Schalter | Wirkung |
|---|---|
--headless | ohne Fenster — nur die serielle Ausgabe |
--no-kvm | ohne KVM (qemu64), wenn /dev/kvm belegt ist |
--usb | zusätzlicher USB-Stick (32 MB, FAT32) am xHCI |
--usbboot | vom USB-Stick booten statt von IDE |
--usbhid | USB-Maus und -Tastatur statt PS/2 |
--virtio-net / --rtl8139 | andere Netzkarte statt e1000 |
bash bootloader/build.sh
bash bootloader/vbox_create.sh <frischer-vm-name>
VBoxManage startvm <frischer-vm-name>
Nach jedembuild.shmussvbox_create.sherneut laufen. Es wandeltlyx_boot.imgneu nachlyx_boot.vdiund baut die VM neu. Ohne das bootet VirtualBox ein altes, zwischengespeichertes Abbild — gleicher Name, alter Inhalt, und die Fehlersuche zielt auf ein System, das es so nicht mehr gibt. Die serielle Ausgabe landet in/tmp/<vm-name>_serial.txt.
QEMU mit KVM und eine laufende VirtualBox-VM streiten um/dev/kvm— eines von beiden, nicht beides.
Der Kernel meldet früh, woher er geladen wurde und als was er sich versteht:
boot Quelle: SATA, Platte 0 — Modus: installiert
boot Quelle: USB (Wechselmedium), Platte 12 — Modus: live (abgeleitet, kein Marker)
Zwei verschiedene Dinge, und die Unterscheidung ist Absicht:
| Was es ist | Woher | |
|---|---|---|
| Quelle | eine Tatsache — über welchen Anschluss wurde geladen | die Firmware; der Bootlader liest sie aus dem Gerätepfad |
| Modus | eine Absicht — Installation, Installationsmedium oder Livesystem | settings/boot.cfg auf dem Bootmedium |
Steht kein Marker auf dem Medium, leitet der Kernel ab — festes Medium → installiert, Wechselmedium → live — und sagt dazu, dass er abgeleitet hat. installer wird nie geraten: ein Installationsmedium erklärt sich selbst oder ist keines.
Den Marker schreibt man als Datei auf das Medium:
# settings/boot.cfg
modus = installiert # oder: installer, live
Das Gleichheitszeichen ist Pflicht. Der Leser in kernel/config.lyx verlangt es; modus live mit Leerzeichen wird stillschweigend übergangen, und die Anzeige meldet weiterhin „abgeleitet, kein Marker“ — richtig, aber aus dem falschen Grund.
Danach startet vega.elf als Compositor. Fehlt es, startet stattdessen die Wartungs-Shell — die Rückfallebene, die auch ohne eingehängtes Dateisystem trägt.
Alles Folgende im Terminal des Compositors (oder in der Wartungs-Shell, wo es die Befehle gibt).
sysinfo
Geraete, die beim Hochfahren erkannt wurden:
Prozessor GenuineIntel Intel(R) Core(TM) i5-8250U
CPU 4 Kerne, 1,80 GHz (gemessen), Familie 6 Modell 142
Umgebung virtuell, KVMKVMKVM
RAM 512 MB verwaltet, davon 416 MB frei (131072 Seiten a 4 KB)
Disk id 0 sata Anschluss 0 32 GB (67108864 Bloecke a 512 Byte)
USB Slot 1 HID Protokoll 2 Controller 0
Audio Intel HD Audio PCI 0:31.3 Treiber hda (erkannt, wird beim ersten Ton in Betrieb genommen)
7 Eintraege
Zwei Feinheiten, damit die Zahlen richtig gelesen werden:
→ Einzelheiten: sysinfo · Geräte-Verzeichnis
dmesg # das ganze Protokoll
dmesg -40 # nur die letzten 40 Zeilen
dmesg sata # nur Zeilen, die "sata" enthalten
dmesg ist im Terminal eingebaut und liest den Ringpuffer des Kernels (sys_klog_read, 229). Es ist die erste Anlaufstelle, wenn eine Platte fehlt oder ein Treiber nicht angesprungen ist — dort steht, was beim Erkennen wirklich passiert ist.
Wenn ein Gerät zwar steckt, aber niemand es bedient, sagen das zwei Werkzeuge genauer:
lspci -k # was steckt drin, und wer hält es
lsdrv # IST gegen SOLL: wer hält es, wer sollte es halten
Steht bei lsdrv links nichts und rechts ein Treibername mit NICHT GELADEN, ist das ein Ladefehler und kein fehlendes Gerät.
diskinfo
[0] SATA (AHCI) 32 GB (67108864 Sektoren)
[8] RAM-Disk 64 MB (131072 Sektoren)
[12] USB-Massenspeicher 8 GB (16777216 Sektoren)
Die Nummer sagt schon, um was für ein Medium es sich handelt:
| Nummern | Bedeutung |
|---|---|
| 0–7 | physische Platten (ATA, SATA/AHCI, NVMe, virtio-blk) |
| 8–11 | RAM-Disks |
| 12 | USB-Massenspeicher |
Merken Sie sich die Nummer der Zielplatte — alle folgenden Befehle nehmen sie als erstes Argument. Und prüfen Sie zweimal: die Werkzeuge fragen nicht nach, ob die Platte die richtige ist.
Was heute auf der Platte steht, zeigt:
partinfo 0
Platte 0: GPT partition table:
#1 ESP LBA=2048 512 MB (1048576 Sektoren)
#2 Daten LBA=1050624 31 GB (65011712 Sektoren)
Kommt stattdessen no GPT (MBR or unformatted disk), ist die Platte leer oder trägt eine alte MBR-Tabelle — beides ist für den nächsten Schritt in Ordnung.
parted
parted fragt zuerst nach der Platte und zeigt dann die Übersicht mit Sektorgröße und vorhandenen Partitionen. Der Leitsatz: Sie nennen Typ und Größe, das Programm rechnet Start, Ende und Ausrichtung aus.
[A] Partition anlegen [L] Partition loeschen
[B] Groesse bearbeiten [T] Typ aendern
[I] Informationen
[N] Neue Partitionstabelle
[W] Aenderungen schreiben [V] Aenderungen verwerfen
[D] Andere Platte [Q] Beenden
[N] — neue Partitionstabelle. Entfernt sämtliche bisherigen Einträge; die Rückfrage steht auf Nein.[A] — erste Partition: Typ 1 (EFI System), Größe etwa 512 MB. Das ist die Startpartition, aus der die Firmware lädt.[A] — zweite Partition: Typ 2 (Linux Filesystem), Größe zum Beispiel 20 GB oder der ganze Rest.[I] — nachsehen, ob der Plan so aussieht, wie er soll.[W] — schreiben. Erst hier wird die Platte angefasst.
Größen werden im Klartext eingegeben: 512 MB, 20 GB, 1 TB, 750MiB.
[W] kostet ein Irrtum nichts. parted hält IST (was auf der Platte steht) und PLAN (was Sie vorhaben) strikt getrennt; geschrieben wird ausschließlich auf ausdrückliche Anweisung. Vorher prüft es den ganzen Plan — Überschneidungen, Ausrichtung, Ende vor Start, Platz hinter dem Plattenende. Gibt es Beanstandungen, wird nichts geschrieben.
Drei Dinge tut parted bewusst nicht: keine Dateisysteme anlegen (dafür der nächste Schritt), kein MBR (GPT ist das Ziel) und kein Verschieben — vergrößern geht nur in den Platz direkt hinter der Partition.
→ Einzelheiten und alle Prüfungen: parted
Nach dem Schreiben zeigt partinfo die neuen Partitionen mit ihrem LBA-Start und ihrer Sektorzahl. Beides braucht der nächste Befehl.
partinfo 0
format 0 2048 1048576
format <platte> <lba-start> <sektoren> legt FAT32 an und hängt das Ergebnis gleich als Volume ein. Weniger als 2048 Sektoren weist es ab.
mkfs_iofs 0 2
mkfs_iofs <platte> [part-nr] nimmt die Partitionsnummer aus partinfo (1-basiert) und formatiert genau diese. Ohne Partitionsnummer formatiert es die ganze Platte.
→ Was IOFS von FAT32 unterscheidet: Island & Ocean File System
Wer den Ablauf durchspielen will, ohne eine echte Platte anzufassen:
ramdisk create 64 # legt eine RAM-Disk an, gibt ihre Nummer aus
diskinfo # dort taucht sie jetzt auf
ramdisk fmt 8 # als FAT32 formatieren und als aktives Volume einhaengen
ramdisk fmt 8 iofs # oder als IOFS
sys_disk_id_range, 103). Das ist die Lehre aus einem Fehler, der genau hier saß: als die RAM-Disks von 4–7 auf 8–11 wanderten, wies ramdisk fmt eine Nummer ab, die sein eigenes create gerade vergeben hatte — der Kernel wusste Bescheid, die Werkzeuge nicht.
partinfo 0 # stehen die Partitionen so da, wie geplant?
diskinfo # ist die Platte mit der erwarteten Größe da?
dmesg -20 # hat das Einhängen gemeldet, was es sollte?
Sinnvoll ist auch ein Blick mit top: wenn beim Formatieren etwas hängt, sieht man dort, ob überhaupt noch etwas läuft.
Damit klar ist, wo dieser Guide endet:
| Fehlt | Anmerkung |
|---|---|
| Installationsprogramm | Es gibt kein Werkzeug, das ein System auf die vorbereitete Platte schreibt. Das Abbild entsteht auf dem Entwicklungsrechner mit build.sh. |
| Wirkung des Modus | installiert / installer / live werden erkannt und angezeigt, steuern aber noch nichts: weder die Schreibbarkeit der Wurzel, noch flüchtige Konfiguration, noch die Auswahl des ersten Programms. |
| Volume-Verwaltung im Terminal | mount, mountp, vol und gpt gibt es nur in der Wartungs-Shell, nicht als Programm in /bin. |
Letzte Aktualisierung: 2026-08-28 — Seite neu angelegt; RAM-Disk-Abschnitt nach dem Fix in bin/ramdisk.lyx und bin/mkfs_iofs.lyx berichtigt (Nummernbereich wird jetzt über sys_disk_id_range erfragt); aus bootloader/run.sh, build.sh, kernel/bootsrc.lyx, doku/bootquelle.md, vega/term.lyx und den Werkzeugen in bin/ erhoben.