====== Lyx OS ======
> UEFI • x86-64 • In Lyx geschrieben • Kein fork() • Kein errno • Kein Root • KI als Kernel-Primitiv
^ Version | **v0.1** |
^ Sprache | Lyx + NASM Assembly |
^ Target | ''lyxc --target=lyxos'' |
^ Plattform | x86-64, UEFI, QEMU |
^ Autor | Andreas Röne |
^ Status | M1–M4 abgeschlossen, M5–M10 in Entwicklung |
-----
===== Was ist Lyx OS? =====
Lyx OS ist ein bare-metal x86-64-Betriebssystem, das vollständig in der [[lyx_-_programmiersprache:start|Lyx-Sprache]] und NASM-Assembly geschrieben ist. Es startet direkt über UEFI — ohne Linux, ohne GRUB, ohne externe Laufzeitumgebungen.
Drei fundamentale Design-Entscheidungen unterscheiden Lyx OS grundlegend von bestehenden Systemen:
* **Kein ''fork()''** — Prozesse werden ausschließlich via ''sys_spawn()'' erzeugt. Kein implizites Address-Space-Kopieren, kein exec-nach-fork-Muster.
* **Kein globales ''errno''** — Syscalls geben zwei Register zurück: ''rax'' = Fehlercode, ''rdx'' = Nutzwert. Kein Vorzeichentest auf einem einzigen Register, kein Thread-lokaler Fehler-State.
* **Kein Root** — Berechtigungen werden über Capabilities verwaltet. File-Deskriptoren kodieren gleichzeitig die Ressource und die erlaubten Operationen. Privilege-Escalation durch fd-Weitergabe ist strukturell unmöglich.
-----
===== KI als Kernel-Primitiv =====
KI-Inferenz ist in Lyx OS kein Userspace-Daemon und kein HTTP-API — sie ist ein **schedulierter Kernel-Workload**. Ein Sprachmodell wird einmal in Kernel-verwaltetem Shared Memory geladen; alle Prozesse nutzen es ohne Kopie und ohne IPC-Roundtrip. Der ''sys_ai_infer''-Syscall (Gruppe ''0x0800'') ist genauso normal wie ''sys_read''.
Das ermöglicht die langfristige Vision **Lyra**: eine KI-Besitzerin des Betriebssystems, die in CPU-Idle-Zyklen aktiv weiterdenkt und Ressourcen semantisch verwaltet — nicht als App auf einem OS, sondern als integraler Bestandteil des Kernels.
fn main(): int64 {
// Modell laden (OS-weit geteilt, kein doppelter Speicher)
var model_fd: int64 := sys_ai_model_load(AT_CWD, "/models/lyra-7b.gguf", 0);
var ctx_fd: int64 := sys_ai_ctx_create(model_fd, 0, 0);
// Synchrone Inferenz — blockiert bis Completion
var result: [4096]uint8 := [];
sys_ai_infer_sync(ctx_fd, "Was ist 2+2?", 12, ^result[0], 4096, null);
PrintLn(^result[0] as pchar);
return 0;
}
-----
===== Automatische Parallelität =====
Der Programmierer denkt in Tasks, nicht in Cores. ''sys_task_spawn'' erzeugt leichtgewichtige Arbeitseinheiten; ein Work-Stealing-Scheduler verteilt sie auf alle verfügbaren Kerne ohne Programmiereingriff. ''lyxc'' mit ''@parallel''-Annotation generiert die ''sys_task_spawn''-Calls automatisch:
// Jede Iteration läuft auf einem beliebigen Core — ohne manuelles Threading
@parallel for i in range 0..1000 {
result[i] := process(data[i]);
}
-----
===== Aktueller Stand =====
^ Meilenstein ^ Inhalt ^ Status ^
| M1 — Boot & Bare-Metal | UEFI-Bootloader, ELF-Loader, Kernel-Einstieg | ✅ Abgeschlossen |
| M2 — Kernel-Kern | PMM, VMM, IDT/Exceptions, SMP | ✅ Abgeschlossen |
| M3 — Runtime & Scheduler | Laufzeit-Primitive, Prozessmodell, Mutex/Semaphor | ✅ Abgeschlossen |
| M4 — I/O | ATA, FAT32, VFS, Keyboard, Ring-3-Shell | ✅ Abgeschlossen |
| M5 — Ring-3 & Shell | Vollständige Userspace-Shell, sys_spawn | Offen |
| M6 — Netzwerk | TCP/IP-Stack, Syscall-Gruppe 0x0600 | Offen |
| M7 — Lyra-Agent | Kernel-KI-Subsystem, Lyra-Basisschicht | Offen |
| M8–M10 | Semantic OS Layer, Aerospace Safety, Distribution | Offen |
**Was heute funktioniert:**
* UEFI-Boot und Kernel-Start auf QEMU (''qemu-system-x86_64'' + OVMF)
* Physische und virtuelle Speicherverwaltung (4 GB Identity-Map, 2 MB Huge Pages)
* Interrupt-Handling und CPU-Exception-Routing
* Symmetric Multiprocessing (LAPIC, AP-Startup via INIT+SIPI)
* ATA-Disk-I/O und vollständige FAT32-Implementierung (~795 Zeilen)
* Ring-3-Userspace (''shell.lyx'' aktiv, gibt Startup-Meldung aus)
* Syscall-ABI v1.0 vollständig spezifiziert (137 Syscalls in 13 Kategorien)
-----
===== Schnellstart =====
# Repository klonen und bauen
git clone https://github.com/lyxos/lyx-os.git
cd lyx-os
bash bootloader/build.sh
# In QEMU starten
bash bootloader/run.sh
Erwartete Ausgabe:
Lyx OS v0.1 - Kernel running
PMM: init... free pages: 65432
VMM: identity map + CR3 load... CR3=0x200000 OK
Exceptions: IDT loaded (256 gates)
SMP: 4 CPUs detected, APs started
ATA: disk ready | FAT32: init OK | VFS: mounted | Keyboard: ready
Lyx Shell v0.1 - Ring-3 active
→ [[lyxos:erste-schritte|Vollständige Anleitung: Voraussetzungen, Build-Schritte, Debugging]]
-----
===== Eigene Anwendungen =====
Ring-3-Programme für LyxOS werden mit ''--target=lyxos'' kompiliert. Das Target löst alle Builtins (''PrintLn'', ''mmap'', ''open'', …) direkt auf LyxOS-Syscalls auf — keine libc, kein CRT0.
fn main(): int64 {
PrintLn("Hallo von Ring-3!");
return 0;
}
lyxc --target=lyxos hello.lyx -o hello.elf
→ [[lyxos:anwendungen|Anwendungen entwickeln — Dateisystem, Speicher, Prozesse, Fehlerbehandlung]]
-----
===== Syscall-ABI =====
Lyx OS definiert 137 Syscalls in 13 Kategorien. Das Design-Prinzip: ein Syscall = eine Operation, kein polymorpher Wildwuchs wie Linux ''ioctl''/''fcntl''.
^ Kategorie ^ Bereich ^ Anzahl ^
| Prozess & Threads | 0x0000–0x000D | 14 |
| Speicher | 0x0100–0x0105 | 6 |
| Dateisystem & VFS | 0x0200–0x0215 | 22 |
| IPC & Synchronisation | 0x0400–0x040C | 13 |
| Sicherheit & Capabilities | 0x0700–0x0708 | 9 |
| **KI & Semantik** | **0x0800–0x0812** | **19** |
| Task & Parallelität | 0x0B00–0x0B09 | 10 |
| … weitere | 0x0300–0x0C04 | 44 |
→ [[lyxos:syscalls|Vollständige Syscall-Referenz — alle Kategorien, Signaturen, Fehlercodes]]
-----
===== Dokumentationsübersicht =====
^ Thema ^ Seite ^
| LyxOS starten (QEMU-Setup, erster Boot) | [[lyxos:erste-schritte|Erste Schritte]] |
| System-Architektur & Kernel-Aufbau | [[lyxos:architektur|Architektur]] |
| Eigene Anwendungen für LyxOS schreiben | [[lyxos:anwendungen|Anwendungen entwickeln]] |
| Syscall-ABI v1.0 — alle Gruppen & Signaturen | [[lyxos:syscalls|Syscall-Referenz]] |
| Kernel-Interna für Beitragende | [[lyxos:kernel|Kernel-Interna]] |
Letzte Aktualisierung: 2026-06-09