====== 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.
→ [[lyxos:start|Lyx OS]] · [[lyxos:bin|Werkzeuge in /bin]] · [[lyxos:bin:parted|parted]] · [[lyxos:treiber|Treibermodell]] · [[lyxos:architektur|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
VBoxManage startvm
> **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/_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 [[lyxos:shell|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 [[lyxos:bin:top|top]].
→ Einzelheiten: [[lyxos:bin:sysinfo|sysinfo]] · [[lyxos:geraeteverzeichnis|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 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''.
**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: [[lyxos:bin:parted|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 '' 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 [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: [[lyxos:iofs|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 [[lyxos:bin:top|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 [[lyxos:shell|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.