LimonOS: Een op maat gemaakt 64-bit monolithisch besturingssysteem

Technische Architectuur

Het systeem is ontworpen als een puur monolithische kernel die direct op de hardware werkt (bare-metal).

  • Modus: Volledige 64-bit Long Mode (elf64-x86-64), gecompileerd met -m64 -march=x86-64.
  • Bootloader: Gebruik van de moderne Limine-bootloader met ondersteuning voor zowel klassieke BIOS als UEFI.
  • Low-level basis: Eigen implementaties van Descriptor Tables (GDT), Interrupt Tables (IDT), de Programmable Interrupt Controller (PIC), systeemtimer, Real-Time Clock (RTC) en drivers voor PS/2-toetsenbord en -muis.
  • Geheugenbeheer: Een eigen beheerder voor fysieke geheugenpagina's en een eigen heap (kmalloc/kfree). Momenteel werkt het gehele systeem in één adresruimte in kernelmodus (Ring 0).
  • Hardware: Volledige initialisatie van de PCI-bus.

Netwerkstack en TLS 1.3

Een van de meest unieke kenmerken van LimonOS is de volledig eigen netwerkstack, geschreven voor de Intel e1000-netwerkkaart. De stack is als volgt opgebouwd: Ethernet ➡️ ARP ➡️ IP ➡️ ICMP (Ping) ➡️ UDP ➡️ TCP ➡️ DHCP ➡️ DNS

Bovenop TCP is een eigen implementatie van het TLS 1.3-protocol gerealiseerd met een zelfgeschreven cryptografische bibliotheek (zonder gebruik van OpenSSL of MbedTLS):

  • Hashing en HMAC: SHA-256, HMAC, HKDF.
  • Symmetrische versleuteling: AES-GCM.
  • Sleuteluitwisseling: X25519.

Dit stelt het systeem in staat om veilige HTTPS-verzoeken te doen naar het wereldwijde web. De terminal kan via de OpenRouter API communiceren met AI-modellen.

Beveiligingswaarschuwing: De authenticiteit van servercertificaten wordt momenteel niet gecontroleerd (geen X.509-analyse of RSA/ECDSA-handtekeningverificatie). Het kanaal is versleuteld tegen passief afluisteren, maar er is geen garantie dat de verbinding met de juiste server is gemaakt (vergelijkbaar met curl -k).

Grafische Interface en Browser

LimonOS maakt gebruik van een Framebuffer voor grafische weergave in plaats van een tekstmodus.

Orchard (De Desktop)

De grafische window-subsystem "Orchard" (de Tuin) biedt:

  • Een desktop met achtergronden, iconen en vensters (verslepen, minimaliseren, sluiten).
  • Een taakbalk, een "Limon"-menu en vijf verschillende thema's.
  • Een klok en een terminal met eigen commando's, geschiedenis en regelbewerking.

Zest (De Terminal)

De terminal "Zest" (de Ceeder) ondersteunt lettertypen en Cyrillische tekens.

Citrus (De Browser)

De browser "Citrus" is geëvolueerd van een eenvoudige tekstbrowser naar een functioneel venster:

  • Functionaliteiten: Adresbalk, knoppen voor terug/vooruit/vernieuwen, klikbare links, invulvelden en formulierknoppen (zoals zoekopdrachten).
  • Rendering (Versie 0.9): Implementatie van een Document Object Model (DOM) en CSS. Ondersteunde selectors zijn onder andere tags, #id, .klasse, tag.klasse, afstammelingen (a b) en directe kinderen (a > b).
  • CSS-eigenschappen: display (none/block/inline), visibility, opacity:0, color, background, font-weight, text-align en white-space:pre.
  • Compatibiliteit: De browser presenteert zich aan servers als een tekstbrowser (Lynx), waardoor Google en DuckDuckGo eenvoudige pagina's zonder JavaScript versturen.

Ontwikkelingsfasen en Roadmap

Voltooid (Etappen 1–6)

  • Etappe 1-3: Booten via BIOS/UEFI, GDT/IDT, interrupts, basisdrivers (timer, toetsenbord, muis) en de grafische desktop.
  • Etappe 4: Paginabeheer, PCI-bus, Intel e1000-driver en de "Vine" netwerkstack (ARP, IP, ICMP, UDP, DHCP, DNS).
  • Etappe 5: TCP-client, HTTP (GET) en de eerste versie van de Citrus-browser.
  • Etappe 6: Implementatie van TLS 1.3 en HTTPS-ondersteuning.

Recente Updates (Versies 0.7 – 0.9)

  • 0.7: Herstel van internetverbindingen. Buffergroottes voor TLS verhoogd naar 16 KB en TCP-ontvangstbuffers naar 32 KB om grote certificaten en datastromen te verwerken. Ondersteuning voor HTTP-redirects (tot 6 overgangen) en Transfer-Encoding: chunked.
  • 0.8: Citrus 2 upgrade met volledige browser-interface, geschiedenis, scrollbalken en ondersteuning voor Windows-1251 codering.
  • 0.9: Introductie van DOM en CSS-ondersteuning in Citrus.

Toekomst: Etappe "Pulp" (De Kern)

De volgende fase richt zich op het transformeren van de kernel naar een beschermd systeem:

  • Scheiding van privilege-ringen (Ring 3 voor gebruikersprogramma's).
  • Virtueel geheugen (Paging) voor procesisolatie.
  • Multitasking en een context-scheduler.
  • Systeemoproepen (Syscalls via SYSCALL/SYSRET).
  • Virtueel bestandssysteem (VFS) en ondersteuning voor opslagmedia.

Gebruik en Installatie

Systeemcommando's

CommandoNederlandse naamFunctie
zestceedraLijst met commando's
squeezeuitknijpenTerminalle scherm wissen
peelschilSysteeminformatie
juicesapGeheugengebruik
enginemotorProcessorinformatie
sundialzonnewijzerDatum en tijd (BIOS klok)
pulsepolsUptime van het systeem
sayzeggenTekst herhalen
abacustelraamCalculator (bijv. abacus 2+3*(4-1))
palettepaletKleuren en thema's
tinttintThema wijzigen (bijv. tint lime)
langtaalToetsenbordindeling (lang ru / lang en)
twintweelingNieuwe terminal openen
pcibusMoederbordapparatuur
ping / sonarechoPing commando (sonar 8.8.8.8)
citruscitrusBrowser (citrus example.com)
limalimaProgramma's beheren (lima list, lima install cscan)
vinelozaNetwerkinstellingen (vine dhcp)
lookupzoekenDNS-opzoeken (lookup example.com)
omenvoortekenEen "citroen-voorspelling"
rebirthwedergeboorteHerstarten
byetot ziensUitschakelen

Sneltoetsen

  • F2: Wisselen tussen RU / EN toetsenbordindeling.
  • F3: Nieuwe terminal openen.
  • F4: Actief venster sluiten.
  • F5: Volgende thema.
  • Alt+Tab: Wisselen tussen vensters.
  • Ctrl+L / Ctrl+C / Ctrl+U: Lijn wissen / annuleren / wissen.

Bouwen en Starten

Ubuntu / Debian / WSL:

sudo apt install build-essential nasm qemu-system-x86 xorriso git ovmf
make iso        # Bouwt de kernel en LimonOS.iso
make run        # Start in QEMU (BIOS)
make run-uefi   # Start in QEMU (UEFI)

Windows (WSL + VirtualBox):

  1. Installeer Ubuntu via PowerShell: wsl --install -d Ubuntu.
  2. Pak het archief uit en voer windows-run.bat uit. Dit bouwt het image in WSL en start een virtuele machine in VirtualBox.

VirtualBox instellingen (handmatig):

  • Type: Other/Unknown (64-bit).
  • Chipset: PIIX3, I/O APIC aan, EFI uit.
  • Netwerk: NAT, adapter Intel PRO/1000 MT Desktop.
  • Aanwijzer: PS/2.

Beperkingen

  • TCP: Geen automatische herverzending van eigen TCP-segmenten (werkt prima in VirtualBox/QEMU, maar kan hangen in slechte netwerken).
  • Opslag: Er is geen disk-driver of bestandssysteem; alles draait in het RAM. Grote bestanden kunnen niet worden gedownload.
  • Browser: JavaScript wordt niet ondersteund. Websites die volledig op JS leunen (moderne Google, YouTube) blijven leeg.
  • Beveiliging: TLS-certificaten worden niet geverifieerd; niet gebruiken voor wachtwoorden of betalingen.
  • Hardware: Ondersteunt alleen de Intel e1000 netwerkkaart en PS/2 toetsenbord/muis.
  • Grafisch: De desktop wordt maximaal in 1920x1080 getekend (gepositioneerd in de linkerbovenhoek op grotere schermen).

AI Integratie in de Terminal

Om AI-functies te gebruiken, dient eerst een API-sleutel van openrouter.ai te worden ingesteld: aikey <Sleutel>

Daarna kan de AI worden aangesproken met het commando ai: ai hello, explain how kernel interrupts work