- 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
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 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
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
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/chgrpund 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 nachDie 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:groupnur 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 werdenDieses Projekt ist wirklich beeindruckend; es erinnert an die Zeit, als Linux für NAT-Firewalls noch von 3,5-Zoll-Disketten lief