====== 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.