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 jedem build.sh muss vbox_create.sh erneut laufen. Es wandelt lyx_boot.img neu nach lyx_boot.vdi und 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

  1. [N] — neue Partitionstabelle. Entfernt sämtliche bisherigen Einträge; die Rückfrage steht auf Nein.
  2. [A] — erste Partition: Typ 1 (EFI System), Größe etwa 512 MB. Das ist die Startpartition, aus der die Firmware lädt.
  3. [A] — zweite Partition: Typ 2 (Linux Filesystem), Größe zum Beispiel 20 GB oder der ganze Rest.
  4. [I] — nachsehen, ob der Plan so aussieht, wie er soll.
  5. [W] — schreiben. Erst hier wird die Platte angefasst.

Größen werden im Klartext eingegeben: 512 MB, 20 GB, 1 TB, 750MiB.

 
Bis [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

 
Die Werkzeuge erfragen den gültigen Nummernbereich beim Kernel, statt ihn abzuschreiben (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.