5 points par GN⁺ 2025-07-18 | 1 commentaires | Partager sur WhatsApp
  • Tilck est un noyau monolithique compatible au niveau binaire avec Linux, conçu à des fins pédagogiques et pour les systèmes embarqués
  • Il vise une utilisation minimale des ressources, ce qui le rend utile sur des appareils embarqués ou dans des environnements contraints
  • Il peut exécuter directement des applications utilisateur Linux existantes comme BusyBox, sans nécessiter l’écriture d’applications spécifiques
  • Il prend en charge les architectures i686 et RISC-V64, avec des plans de portage futurs vers ARM et les CPU sans MMU
  • Il inclut de nombreuses fonctionnalités, comme les systèmes de fichiers, la gestion des processus, la console et le débogage, et peut aussi exécuter Vim, Micropython, Lua et d’autres outils
  • Il prend en charge le démarrage sur QEMU et sur matériel réel et dispose d’un environnement de test et de débogage bien fourni, ce qui le rend accessible même aux débutants

Overview

  • What is Tilck?

    • Tilck est un noyau pédagogique compatible Linux avec une conception petite et simple
    • Contrairement à certains autres noyaux, il ne nécessite pas d’applications dédiées : il peut exécuter des programmes Linux construits avec une toolchain basée sur musl
    • Il peut faire tourner plusieurs applications comme BusyBox, Vim et TinyCC
    • Son architecture monolithic traite toutes les fonctions dans un espace noyau unique, comme Linux
    • L’exécution sur du vrai matériel est aussi une priorité
  • Future plans

    • Il convient aux environnements embarqués qui exigent un système ultra-faible latence et totalement déterministe
    • Il vise une position de niche entre Embedded Linux et FreeRTOS/Zephyr
    • Un support est prévu pour ARM64, les systèmes sans MMU, le réseau (UDP/IP) et le stockage (FAT32, ext2)
    • À long terme, l’objectif est de prendre en charge les fonctions réseau et stockage sur des SoC comme le Raspberry Pi 3/4
  • What Tilck is NOT?

    • Tilck n’est pas un projet destiné à remplacer Linux
    • Il ne vise pas à devenir un OS de bureau (pas de prise en charge du serveur X, etc.)
    • Tilck réduit volontairement les fonctionnalités au minimum pour préserver la simplicité et le temps réel
  • Tilck vs Linux

    • Si Linux est complexe, c’est à cause de sa polyvalence ; Tilck, lui, privilégie la simplicité, la petite taille et la très faible latence
    • Tilck cherche aussi à disposer d’une infrastructure de test proche d’un niveau entreprise

Features

  • Support i686

    • Prise en charge simultanée du matériel ancien (8259 PIC, 8254 PIT, etc.) et de fonctions modernes (SSE, AVX, ACPI, etc.)
    • Grâce à ACPI, il peut gérer les événements d’alimentation et consulter les informations de batterie
    • Il a été testé dans divers environnements x86 (BIOS, UEFI, CSM, etc.)
  • Support riscv64

    • Une architecture orientée embarqué
    • Prise en charge de QEMU et de la carte Sipeed licheerv-nano
    • Les informations sur les périphériques sont transmises via le device tree, sans code dépendant de la carte dans le noyau
    • Prise en charge de l’UART ns16550 ainsi que des contrôleurs d’interruptions PLIC/INTC
  • File systems

    • Prise en charge de ramfs, devfs et sysfs
    • FAT16 et FAT32 sont pris en charge en lecture seule, avec possibilité de mappage mémoire
    • Un VFS est présent, mais les périphériques bloc ne sont pas pris en charge (tout fonctionne en mémoire)
  • Processes and signals

    • Prise en charge des fonctions de base de processus/signaux comme fork, vfork, waitpid, rt_sigaction
    • Le multithreading en espace utilisateur n’est pas pris en charge, mais la TLS (set_thread_area) est implémentée pour répondre aux exigences de libmusl
  • I/O

    • En plus de read et write, prise en charge de readv, writev, select, poll
    • epoll n’est pas pris en charge
  • Console

    • Plus de 90 % des fonctionnalités de la console Linux sont implémentées
    • Prise en charge des modes texte et framebuffer
    • L’implémentation est suffisante pour que Vim fonctionne parfaitement sur Tilck
  • Userspace applications

    • Exécution possible d’applications console et framebuffer comme BusyBox, Vim, Micropython, Lua et fbDOOM

Booting Tilck

  • Tilck's bootloader

    • Tilck inclut un bootloader compatible BIOS et UEFI
    • Il permet de choisir le mode vidéo, le noyau et d’éditer la ligne de commande
  • 3rd-party bootloaders

    • Tilck peut démarrer via des bootloaders compatibles Multiboot 1.0 (par ex. GRUB)
    • Un exemple de configuration GRUB est également fourni

A comment about user experience

  • Tilck est conçu pour permettre même à des développeurs débutants de compiler et tester facilement
  • Il fournit ses propres scripts de construction de toolchain, sans imposer la charge d’installer de nombreuses dépendances
  • C’est similaire à buildroot, mais bien plus simple
  • Divers scripts d’exécution QEMU sont également fournis

1 commentaires

 
GN⁺ 2025-07-18
Avis Hacker News
  • Cela donne l’impression d’un projet intéressant, à mi-chemin entre un ancien Unix comme xv6 (version 1975, voir le Lion book) et un noyau Linux complet. J’ai été ravi de le voir fonctionner sur une carte RISC-V à 9 $ appelée LicheeRV Nano (CPU 64 bits à 1,0 GHz (C906), MMU, FPU, unité vectorielle 128 bits, 256 Mo de DDR3). Cette carte a des performances comparables à celles d’un Pentium III de milieu de génération ou d’un PowerPC G4. Il semblerait aussi très facile de le porter sur les Milk-V Duo 256M, Duo S, ou encore le Duo (64 Mo de RAM, 5 $), qui utilisent le même SoC. À l’heure actuelle, il n’y a pas encore de prise en charge du réseau, des périphériques bloc ni du multicœur.

    • Je peux imaginer un Linux sans réseau ni prise en charge du multicœur, mais un OS sans même de périphériques bloc me paraît étrange. Je me demande si cela signifie qu’il ne gère que les périphériques caractère. Je me demande aussi comment fonctionne le pilote FAT.
  • Un G4 équipé d’Altivec offre en multimédia des performances presque comparables à celles d’un Pentium IV avec SSE2.

  • Tous les quelques mois, on voit apparaître un nouveau noyau d’OS qui ne fonctionne que dans une VM, sans abstraction matérielle. Tilck n’est pas de cette catégorie. Tilck est un vrai système d’exploitation. Il tourne sur du vrai matériel. Là où le premier domaine est déjà saturé, Tilck donne l’impression de combler une niche restée presque vide depuis longtemps.

  • Il est impressionnant de voir à quel point Tilck démarre vite et fait même tourner doom via le framebuffer. On peut le voir ici : https://www.youtube.com/watch?v=Ce1pMlZO_mI. C’était aussi agréable de voir le développeur répondre lui-même avec bienveillance, sur YouTube, aux questions d’un étudiant qui se destine à l’informatique.

    • La vidéo est courte et va droit au but. On y voit aussi Vim en cours d’exécution, et il est assez impressionnant de compiler puis faire tourner un gros logiciel comme Vim avec seulement une partie de plusieurs syscalls Linux.
  • J’ai bien vu que Tilck est présenté comme « éducatif », mais je me demande s’il pourrait être utile aussi sur de petits appareils embarqués à condition de remplacer seulement le bootloader.

  • Le fichier README de Tilck est étonnamment long et intéressant, au point de mériter la lecture de tout développeur OS.

  • Pour quelqu’un comme moi qui a appris avec Minix dans un cadre éducatif, je me demande à quel point Tilck pourrait être utile.

    • Tilck est un mononoyau très petit et déterministe. Il implémente actuellement environ une centaine de syscalls Linux sous une forme compatible Linux. C’est un bon outil pédagogique, mais à long terme il vise un noyau RTOS compatible Linux. Pour l’instant, il ne prend en charge que des binaires liés statiquement avec musl, et n’a besoin que d’environ 3 Mo de RAM pour démarrer et fonctionner. La base de code est petite et simple, ce qui convient bien à un objectif pédagogique, mais l’objectif ultime est qu’il soit un jour utilisé aussi en production réelle sur des systèmes embarqués.
  • Partage de liens vers d’anciennes discussions HN à propos de Tilck :

  • Tilck est intéressant, mais l’absence de prise en charge multi-utilisateur est regrettable. S’il supportait au moins des changements de propriétaire et de groupe de fichiers comme chmod/chgrp, il pourrait être bien plus utile, par exemple pour un serveur NFS. J’aimerais que le développeur reconsidère cette question.

    • La compatibilité du système de fichiers de Tilck est un problème encore plus important que cela. En réalité, pour mon usage, une plateforme à la fiabilité éprouvée serait préférable, et Tilck, orienté vers l’éducation, n’est pas adapté du point de vue de la sécurité de l’information ni de la robustesse des données.

    • On pourrait aussi imaginer une méthode consistant à simplement enregistrer les valeurs user:group dans le système de fichiers et à ne les appliquer à l’exécution qu’au moment de servir les clients. Par exemple, si un serveur de fichiers Linux tourne en root, il peut gérer les vérifications de permissions et la propriété sans changer lui-même d’utilisateur. On peut aussi fork à chaque session puis basculer vers l’utilisateur du client concerné, ce qui permet au noyau d’imposer les permissions et de résoudre automatiquement la gestion des droits sur les fichiers.

  • Ce projet est vraiment impressionnant. Il me rappelle l’époque où l’on faisait tourner un Linux servant de pare-feu NAT sur une vieille disquette 3,5 pouces.