5 pontos por GN⁺ 2025-07-18 | 1 comentários | Compartilhar no WhatsApp
  • Tilck é um kernel monolítico compatível em binário com Linux, projetado para fins educacionais e sistemas embarcados
  • Tem como objetivo o uso mínimo de recursos, sendo útil em dispositivos embarcados ou ambientes restritos
  • Pode executar aplicações de espaço de usuário Linux existentes como BusyBox sem modificações, eliminando a necessidade de criar apps separados
  • Suporta as arquiteturas i686 e RISC-V64, com planos futuros de portar também para ARM e CPUs sem MMU
  • Inclui diversos recursos como sistema de arquivos, gerenciamento de processos, console e depuração, e também consegue executar Vim, Micropython e Lua
  • Suporta boot em QEMU e em hardware real e oferece um ambiente de teste e depuração bem estruturado, facilitando a experimentação até para iniciantes

Overview

  • What is Tilck?

    • Tilck é um kernel educacional compatível com Linux com um design pequeno e simples
    • Em vez de exigir apps próprios como alguns kernels, ele pode usar programas Linux compilados com toolchain baseada em musl
    • Consegue executar vários apps como BusyBox, Vim e TinyCC
    • Usa uma estrutura monolithic, processando todas as funções em um único espaço de kernel, como o Linux
    • Dá grande importância à execução em hardware real
  • Future plans

    • É adequado para ambientes embarcados que exigem sistemas de latência ultrabaixa e totalmente determinísticos
    • Mira uma posição de nicho entre Embedded Linux e FreeRTOS/Zephyr
    • Há planos para suporte a ARM64, sem MMU, rede (UDP/IP) e armazenamento (FAT32, ext2)
    • O objetivo de longo prazo é oferecer recursos de rede e armazenamento para SoCs como o Raspberry Pi 3/4
  • What Tilck is NOT?

    • Tilck não é um projeto para substituir o Linux
    • Não tem como objetivo ser um sistema operacional desktop (sem suporte a X server etc.)
    • Tilck minimiza recursos para priorizar simplicidade e tempo real
  • Tilck vs Linux

    • O Linux é complexo por ser multifuncional, enquanto o Tilck escolhe simplicidade, tamanho reduzido e ultrabaixa latência
    • Tilck também se esforça para ter uma infraestrutura de testes próxima do nível enterprise

Features

  • Suporte a i686

    • Suporta ao mesmo tempo hardware legado (8259 PIC, 8254 PIT etc.) e recursos modernos (SSE, AVX, ACPI etc.)
    • Por meio de ACPI, consegue tratar eventos de energia e verificar informações da bateria
    • Foi testado em vários ambientes x86 (BIOS, UEFI, CSM etc.)
  • Suporte a riscv64

    • Arquitetura focada em embarcardos
    • Suporta QEMU e a placa Sipeed licheerv-nano
    • As informações do dispositivo são passadas via device tree, sem código dependente da placa no kernel
    • Suporta ns16550 UART, controladores de interrupção PLIC/INTC etc.
  • File systems

    • Suporta ramfs, devfs e sysfs
    • FAT16 e FAT32 têm suporte somente leitura e permitem mapeamento em memória
    • VFS, mas não há suporte a dispositivos de bloco (tudo funciona na memória)
  • Processes and signals

    • Suporta funções básicas de processos e sinais como fork, vfork, waitpid e rt_sigaction
    • Não há multithreading em espaço de usuário, mas o TLS (set_thread_area) foi implementado conforme os requisitos da libmusl
  • I/O

    • Além de read e write, há suporte a readv, writev, select e poll
    • epoll não é suportado
  • Console

    • Implementa mais de 90% dos recursos do console Linux
    • Suporta tanto modo texto quanto modo framebuffer
    • A implementação é suficiente para que o Vim funcione perfeitamente no Tilck
  • Userspace applications

    • Pode executar apps de console e framebuffer como BusyBox, Vim, Micropython, Lua e fbDOOM

Booting Tilck

  • Tilck's bootloader

    • Tilck inclui um bootloader com suporte a BIOS e UEFI
    • Permite selecionar modo de vídeo, kernel e editar a linha de comando
  • 3rd-party bootloaders

    • É possível inicializar o Tilck com bootloaders compatíveis com Multiboot 1.0 (ex.: GRUB)
    • Também são fornecidos exemplos de configuração do GRUB

A comment about user experience

  • Tilck foi projetado para que até desenvolvedores iniciantes consigam compilar e testar facilmente
  • Fornece seus próprios scripts para build da toolchain, sem grande peso de instalação de dependências
  • É semelhante ao buildroot, mas muito mais simples
  • Também oferece vários scripts para executar no QEMU

1 comentários

 
GN⁺ 2025-07-18
Comentários no Hacker News
  • Parece ser um projeto interessante que fica no meio do caminho entre um Unix antigo como o xv6 (versão de 1975, veja o Lion book) e um kernel Linux completo; foi legal ver rodando em uma placa RISC-V de US$ 9 chamada LicheeRV Nano (CPU 64 bits de 1,0 GHz (C906), MMU, FPU, unidade vetorial de 128 bits, 256 MB de DDR3), e essa placa tem desempenho parecido com um Pentium III intermediário ou um PowerPC G4; também parece que seria bem fácil portar para o Milk-V Duo 256M, Duo S, ou mesmo o Duo (64 MB de RAM, US$ 5), que usam o mesmo SoC; no momento ainda não há suporte a rede, dispositivos de bloco ou multicore

    • Consigo imaginar um Linux sem rede e sem multicore, mas um sistema operacional até sem dispositivos de bloco me soa estranho; será que isso significa só dispositivos de caractere? Como então o driver FAT funciona?
  • Um G4 com Altivec entrega em multimídia um nível de desempenho quase equivalente ao de um PIV com SSE2

  • A cada poucos meses aparece um novo kernel de sistema operacional que roda só em VM, sem abstração de hardware; o Tilck não é desse tipo; o Tilck é um sistema operacional de verdade; roda em hardware real; enquanto o primeiro espaço já está saturado, o Tilck parece preencher muito bem um nicho que há tempos quase não era ocupado

  • Impressiona como o Tilck inicializa muito rápido e até roda doom em framebuffer; dá para ver no link https://www.youtube.com/watch?v=Ce1pMlZO_mI; também foi legal ver o desenvolvedor respondendo com gentileza diretamente no YouTube às perguntas de um aspirante a cientista da computação

    • O vídeo é curto e direto ao ponto; também mostra o Vim rodando, e é bem impressionante conseguir compilar e executar um software grande como o Vim com apenas parte de várias syscalls do Linux
  • Vi que o Tilck está marcado como "educacional", mas fico me perguntando se, trocando apenas o bootloader, ele não seria utilizável também em dispositivos embarcados pequenos

  • O arquivo README do Tilck é inesperadamente longo e interessante, e parece leitura obrigatória para qualquer desenvolvedor de sistemas operacionais

  • Para pessoas como eu, que cresceram estudando com o Minix, fico curioso sobre o quanto o Tilck seria útil para fins educacionais

    • O Tilck é um monokernel muito pequeno e determinístico; atualmente implementa cerca de 100 syscalls do Linux de forma compatível com Linux; é bom como ferramenta educacional, mas no longo prazo quer se tornar um kernel RTOS compatível com Linux; por enquanto só suporta binários ligados estaticamente com musl e precisa de cerca de 3 MB de RAM para inicializar e rodar; a base de código é pequena e simples, adequada a objetivos educacionais, e o objetivo final é que acabe sendo usado também em ambientes reais de produção para sistemas embarcados
  • Compartilhando links de discussões antigas no HN sobre o Tilck:

  • O Tilck é interessante, mas é uma pena não ter suporte multiusuário; se ao menos suportasse algo como chmod/chgrp e mudanças de proprietário e grupo de arquivos, acho que poderia ser muito mais útil até em coisas como um servidor NFS, então eu gostaria que o desenvolvedor reconsiderasse o suporte multiusuário

    • A compatibilidade do sistema de arquivos do Tilck é um problema ainda maior do que esse; na verdade, para o meu uso, uma plataforma com confiabilidade comprovada seria melhor, e o Tilck, por ser voltado à educação, não parece adequado do ponto de vista de segurança da informação ou robustez dos dados

    • Também dá para imaginar um método de apenas gravar os valores user:group no sistema de arquivos e refletir isso em tempo de execução só ao atender clientes; por exemplo, se um servidor de arquivos Linux roda como root, ele consegue fazer verificação de permissões e gerenciar propriedade sem trocar de usuário internamente; além disso, se der fork a cada sessão e mudar para o usuário daquele cliente, o kernel passa a impor as permissões à força, resolvendo automaticamente o tratamento de permissões de arquivos

  • Este projeto é realmente impressionante; me faz lembrar da época em que se rodava Linux para firewall NAT em disquetes de 3,5 polegadas