LimonOS is een eigen 64-bit monolithische kernel voor de x86_64-architectuur, volledig geschreven in C en Assembler. In tegenstelling tot Linux-distributies is dit systeem vanaf de basis opgebouwd en werkt het direct op de hardware (bare-metal).
Belangrijkste kenmerken:
- Netwerkstack: Een volledig eigen implementatie voor Intel e1000-kaarten, inclusief een zelfgeschreven TLS 1.3-bibliotheek voor HTTPS-verkeer, wat communicatie met AI-modellen via OpenRouter mogelijk maakt.
- Grafische Interface: Het systeem beschikt over de desktopomgeving Orchard, de terminal Zest en de browser Citrus. De browser ondersteunt een basis-DOM en CSS, maar geen JavaScript.
- Technische basis: Gebruik van de Limine-bootloader, eigen geheugenbeheer (kmalloc/kfree) en volledige PCI-bus initialisatie.
Huidige status en toekomst: Het project heeft diverse etappen voltooid, van basisdrivers tot HTTPS-ondersteuning. De toekomstige fase, genaamd "Pulp", zal zich richten op de overgang naar een beschermd systeem met privilege-ringen (Ring 3), multitasking, virtueel geheugen en een virtueel bestandssysteem (VFS).
Beperkingen: Het systeem draait momenteel volledig in het RAM (geen disk-driver), verifieert geen TLS-certificaten en ondersteunt enkel specifieke hardware zoals de Intel e1000 netwerkkaart.
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
| Commando | Nederlandse naam | Functie |
zest | ceedra | Lijst met commando's |
squeeze | uitknijpen | Terminalle scherm wissen |
peel | schil | Systeeminformatie |
juice | sap | Geheugengebruik |
engine | motor | Processorinformatie |
sundial | zonnewijzer | Datum en tijd (BIOS klok) |
pulse | pols | Uptime van het systeem |
say | zeggen | Tekst herhalen |
abacus | telraam | Calculator (bijv. abacus 2+3*(4-1)) |
palette | palet | Kleuren en thema's |
tint | tint | Thema wijzigen (bijv. tint lime) |
lang | taal | Toetsenbordindeling (lang ru / lang en) |
twin | tweeling | Nieuwe terminal openen |
pci | bus | Moederbordapparatuur |
ping / sonar | echo | Ping commando (sonar 8.8.8.8) |
citrus | citrus | Browser (citrus example.com) |
lima | lima | Programma's beheren (lima list, lima install cscan) |
vine | loza | Netwerkinstellingen (vine dhcp) |
lookup | zoeken | DNS-opzoeken (lookup example.com) |
omen | voorteken | Een "citroen-voorspelling" |
rebirth | wedergeboorte | Herstarten |
bye | tot ziens | Uitschakelen |
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):
- Installeer Ubuntu via PowerShell:
wsl --install -d Ubuntu.
- 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
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
| Commando | Nederlandse naam | Functie |
zest | ceedra | Lijst met commando's |
squeeze | uitknijpen | Terminalle scherm wissen |
peel | schil | Systeeminformatie |
juice | sap | Geheugengebruik |
engine | motor | Processorinformatie |
sundial | zonnewijzer | Datum en tijd (BIOS klok) |
pulse | pols | Uptime van het systeem |
say | zeggen | Tekst herhalen |
abacus | telraam | Calculator (bijv. abacus 2+3*(4-1)) |
palette | palet | Kleuren en thema's |
tint | tint | Thema wijzigen (bijv. tint lime) |
lang | taal | Toetsenbordindeling (lang ru / lang en) |
twin | tweeling | Nieuwe terminal openen |
pci | bus | Moederbordapparatuur |
ping / sonar | echo | Ping commando (sonar 8.8.8.8) |
citrus | citrus | Browser (citrus example.com) |
lima | lima | Programma's beheren (lima list, lima install cscan) |
vine | loza | Netwerkinstellingen (vine dhcp) |
lookup | zoeken | DNS-opzoeken (lookup example.com) |
omen | voorteken | Een "citroen-voorspelling" |
rebirth | wedergeboorte | Herstarten |
bye | tot ziens | Uitschakelen |
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):
- Installeer Ubuntu via PowerShell:
wsl --install -d Ubuntu.
- 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