5 Punkte von GN⁺ 2025-07-18 | 1 Kommentare | Auf WhatsApp teilen
  • Tilck ist ein monolithischer Kernel mit binärer Kompatibilität zu Linux und wurde für Bildungszwecke und eingebettete Systeme entwickelt
  • Ziel ist eine minimale Ressourcennutzung, wodurch er für Embedded-Geräte oder eingeschränkte Umgebungen nützlich ist
  • Bestehende Linux-User-Space-Anwendungen wie BusyBox können unverändert ausgeführt werden, sodass keine separaten Apps geschrieben werden müssen
  • Unterstützt die Architekturen i686 und RISC-V64; künftig sind auch Portierungen auf ARM und MMU-less CPU geplant
  • Enthält verschiedene Funktionen wie Dateisysteme, Prozessverwaltung, Konsole und Debugging; auch Vim, Micropython und Lua lassen sich ausführen
  • Unterstützt QEMU- und Boot auf echter Hardware; die Test- und Debugging-Umgebung ist gut ausgebaut, sodass auch Einsteiger leicht loslegen können

Overview

  • What is Tilck?

    • Tilck ist ein Linux-kompatibler Lernkernel mit kleinem, einfachem Design
    • Anders als bei klassischen Kerneln sind keine eigenen Apps nötig; stattdessen können mit einer musl-basierten Toolchain gebaute Linux-Programme verwendet werden
    • Verschiedene Anwendungen wie BusyBox, Vim und TinyCC können ausgeführt werden
    • monolithische Struktur: Wie Linux verarbeitet Tilck alle Funktionen in einem einzigen Kernel-Space
    • Der Betrieb auf echter Hardware hat ebenfalls hohe Priorität
  • Future plans

    • Geeignet für Embedded-Umgebungen, die ultraniedrige Latenz und vollständige Deterministik erfordern
    • Zielt auf eine Nischenposition zwischen Embedded Linux und FreeRTOS/Zephyr
    • Unterstützung für ARM64, MMU-less, Netzwerk (UDP/IP) und Speicher (FAT32, ext2) ist geplant
    • Langfristiges Ziel ist die Unterstützung von Netzwerk- und Speicherfunktionen auf SoCs wie dem Raspberry Pi 3/4
  • What Tilck is NOT?

    • Tilck ist kein Projekt, das Linux ersetzen will
    • Es zielt nicht auf ein Desktop-OS ab (z. B. keine Unterstützung für einen X-Server)
    • Tilck minimiert Funktionen zugunsten von Einfachheit und Echtzeitfähigkeit
  • Tilck vs Linux

    • Linux ist wegen seines großen Funktionsumfangs komplex; Tilck setzt stattdessen auf Einfachheit, geringe Größe und ultraniedrige Latenz
    • Tilck bemüht sich außerdem um eine Testinfrastruktur auf nahezu Enterprise-Niveau

Features

  • i686-Unterstützung

    • Gleichzeitige Unterstützung für ältere Hardware (8259 PIC, 8254 PIT usw.) und moderne Funktionen (SSE, AVX, ACPI usw.)
    • Über ACPI lassen sich Power-Events verarbeiten und Batterieinformationen abrufen
    • In verschiedenen x86-Umgebungen getestet (BIOS, UEFI, CSM usw.)
  • riscv64-Unterstützung

    • Embedded-orientierte Architektur
    • Unterstützt QEMU und das Board Sipeed licheerv-nano
    • Geräteinformationen werden über den device tree übergeben; es gibt keinen boardspezifischen Code im Kernel
    • Unterstützung für ns16550-UART, PLIC/INTC-Interrupt-Controller usw.
  • File systems

    • Unterstützung für ramfs, devfs und sysfs
    • FAT16 und FAT32 werden schreibgeschützt unterstützt und können speichergemappt werden
    • VFS ist vorhanden, jedoch keine Unterstützung für Blockgeräte (alles läuft im Speicher)
  • Processes and signals

    • Unterstützung grundlegender Prozess-/Signal-Funktionen wie fork, vfork, waitpid, rt_sigaction usw.
    • Kein Multithreading im User Space, aber TLS (set_thread_area) ist entsprechend den Anforderungen von libmusl implementiert
  • I/O

    • Neben read und write werden auch readv, writev, select und poll unterstützt
    • epoll wird nicht unterstützt
  • Console

    • Mehr als 90 % der Linux-Konsolenfunktionen sind implementiert
    • Unterstützt sowohl Text- als auch Framebuffer-Modus
    • Die Implementierung ist so weit, dass Vim auf Tilck vollständig funktioniert
  • Userspace applications

    • Konsolen- und Framebuffer-Anwendungen wie BusyBox, Vim, Micropython, Lua und fbDOOM können ausgeführt werden

Booting Tilck

  • Tilck's bootloader

    • Tilck enthält einen Bootloader mit Unterstützung für BIOS und UEFI
    • Videomodus, Kernel-Auswahl und Bearbeitung der Kommandozeile sind möglich
  • 3rd-party bootloaders

    • Tilck kann mit Bootloadern gestartet werden, die Multiboot 1.0 unterstützen (z. B. GRUB)
    • Ein Beispiel für die GRUB-Konfiguration wird ebenfalls bereitgestellt

A comment about user experience

  • Tilck wurde so entwickelt, dass auch Einsteiger es leicht bauen und testen können
  • Es stellt ein eigenes Build-Skript für die Toolchain bereit, ohne den Aufwand einer komplexen Abhängigkeitsinstallation
  • Ähnlich wie buildroot, aber deutlich einfacher
  • Außerdem werden verschiedene QEMU-Startskripte bereitgestellt

1 Kommentare

 
GN⁺ 2025-07-18
Hacker-News-Kommentare
  • Das wirkt wie ein interessantes Projekt, das irgendwo zwischen altem Unix wie xv6 (Version von 1975, siehe Lion Book) und einem vollständigen Linux-Kernel liegt; es war erfreulich zu sehen, dass es auf dem 9-Dollar-RISC-V-Board LicheeRV Nano läuft (1,0-GHz-64-Bit-CPU (C906), MMU, FPU, 128-Bit-Vektoreinheit, 256 MB DDR3); dieses Board hat ungefähr die Leistung eines mittelspäten Pentium III oder PowerPC G4; ein Port auf das Milk-V Duo 256M oder Duo S mit demselben SoC oder auch auf Modelle wie das Duo (64 MB RAM, 5 Dollar) dürfte ebenfalls sehr einfach sein; derzeit gibt es noch keine Unterstützung für Netzwerk, Blockgeräte oder Multicore

    • Ein Linux ohne Netzwerk und Multicore kann ich mir vorstellen, aber ein OS ganz ohne Blockgeräte ist ungewohnt; ich frage mich, ob damit nur Character Devices gemeint sind; ich frage mich auch, wie dann der FAT-Treiber funktioniert
  • Ein G4 mit Altivec erreicht bei Multimedia fast das gleiche Leistungsniveau wie ein PIV mit SSE2

  • Alle paar Monate sieht man einen neuen OS-Kernel, der ohne Hardware-Abstraktion nur in einer VM läuft; Tilck ist nicht diese Art von Projekt; Tilck ist ein echtes Betriebssystem; es läuft auf echter Hardware; während der erste Bereich bereits gesättigt ist, fühlt es sich bei Tilck so an, als würde es eine Nische gut ausfüllen, die lange kaum besetzt war

  • Beeindruckend ist, wie schnell Tilck bootet und dass doom auch über den Framebuffer läuft; im Link https://www.youtube.com/watch?v=Ce1pMlZO_mI kann man das sehen; schön war auch zu sehen, wie der Entwickler auf YouTube freundlich und direkt Fragen eines CS-Studieninteressierten beantwortet

    • Das Video ist kurz und auf den Punkt; es zeigt auch Vim, und es ist ziemlich beeindruckend, so große Software wie Vim zu kompilieren und auszuführen, obwohl nur Teile vieler Linux-Syscalls vorhanden sind
  • Ich habe gesehen, dass Tilck als "zu Bildungszwecken" gekennzeichnet ist, frage mich aber, ob es mit einem anderen Bootloader auch auf kleinen Embedded-Geräten brauchbar wäre

  • Die README-Datei von Tilck ist unerwartet lang und unterhaltsam, daher für OS-Entwickler absolut lesenswert

  • Für Leute wie mich, die mit Minix als Lehrsystem aufgewachsen sind, frage ich mich, wie nützlich Tilck wäre

    • Tilck ist ein sehr kleiner und deterministischer Monokernel; aktuell implementiert es rund 100 Linux-Syscalls in Linux-kompatibler Form; als Lehrmittel ist es gut geeignet, langfristig zielt es aber auf einen Linux-kompatiblen RTOS-Kernel; derzeit werden nur mit musl statisch gelinkte Binärdateien unterstützt, und zum Booten und Betrieb werden nur etwa 3 MB RAM benötigt; die Codebasis ist klein und einfach, was gut zu Bildungszwecken passt, und das ultimative Ziel ist der Einsatz auch in echten Produktionsumgebungen für Embedded-Systeme
  • Es wurde ein Link zu früheren HN-Diskussionen über Tilck geteilt:

  • Tilck ist interessant, aber schade ist das Fehlen von Multiuser-Unterstützung; wenn zumindest Dinge wie chmod/chgrp und damit Änderungen von Dateibesitzern und Gruppen unterstützt würden, wäre es z. B. auch für einen NFS-Server viel nützlicher; ich hoffe, der Entwickler denkt noch einmal über Multiuser-Unterstützung nach

    • Die Dateisystem-Kompatibilität von Tilck ist ein noch größeres Problem; für meine Zwecke wäre eine Plattform mit nachgewiesener Zuverlässigkeit eigentlich besser, und Tilck ist auf Bildung ausgerichtet, daher ist es in Bezug auf Informationssicherheit oder Datenrobustheit nicht passend

    • Man könnte auch daran denken, user:group nur im Dateisystem zu speichern und zur Laufzeit nur dann zu berücksichtigen, wenn Clients bedient werden; wenn zum Beispiel ein Linux-Dateiserver als root läuft, kann er Berechtigungsprüfungen und Besitzverwaltung auch ohne eigenen Benutzerwechsel erledigen; wenn zudem für jede Sitzung geforkt und zu dem Benutzer des jeweiligen Clients gewechselt wird, erzwingt der Kernel die Berechtigungen, sodass auch die Dateirechte automatisch korrekt behandelt werden

  • Dieses Projekt ist wirklich beeindruckend; es erinnert an die Zeit, als Linux für NAT-Firewalls noch von 3,5-Zoll-Disketten lief