Guide: System starten und eine Platte vorbereiten
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„.
1. Starten
In QEMU
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 |
In VirtualBox
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.
Was beim Start zu sehen ist
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.
2. Nachsehen, was der Rechner hat
Alles Folgende im Terminal des Compositors (oder in der Wartungs-Shell, wo es die Befehle gibt).
sysinfo — was beim Hochfahren gefunden wurde
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:
- „RAM … verwaltet„ ist der Bereich, den der Seitenverwalter führt — nicht die Bestückung des Rechners.
- Die Angabe „frei“ ist eine Momentaufnahme vom Hochfahren und altert. Den laufenden Stand zeigt top.
→ Einzelheiten: sysinfo · Geräte-Verzeichnis
dmesg — was beim Start passiert ist
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.
3. Die Platten ansehen
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.
4. Einteilen mit parted
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
Der Ablauf für eine frische Platte
[N]— neue Partitionstabelle. Entfernt sämtliche bisherigen Einträge; die Rückfrage steht auf Nein.[A]— erste Partition: Typ 1 (EFI System), Größe etwa512 MB. Das ist die Startpartition, aus der die Firmware lädt.[A]— zweite Partition: Typ 2 (Linux Filesystem), Größe zum Beispiel20 GBoder 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
5. Dateisysteme anlegen
Nach dem Schreiben zeigt partinfo die neuen Partitionen mit ihrem LBA-Start und ihrer Sektorzahl. Beides braucht der nächste Befehl.
FAT32 für die Startpartition
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.
IOFS für die Datenpartition
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
Vorher üben: dieselbe Übung auf einer RAM-Disk
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.
6. Gegenprobe
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.
7. Was heute noch nicht geht
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.
