- Tilck adalah kernel monolitik yang kompatibel secara biner dengan Linux, dirancang untuk tujuan edukasi dan sistem tertanam
- Menargetkan penggunaan sumber daya seminimal mungkin, sehingga berguna pada perangkat embedded atau lingkungan yang terbatas
- Dapat langsung menjalankan aplikasi userspace Linux yang sudah ada seperti BusyBox, sehingga tidak perlu menulis aplikasi terpisah
- Mendukung arsitektur i686 dan RISC-V64, dengan rencana porting ke ARM serta CPU tanpa MMU di masa depan
- Menyertakan berbagai fitur seperti filesystem, manajemen proses, konsol, debugging, dan juga dapat menjalankan Vim, Micropython, Lua
- Mendukung boot di QEMU maupun perangkat nyata, serta memiliki lingkungan pengujian dan debugging yang baik sehingga pemula pun mudah mencobanya
Overview
-
What is Tilck?
- Tilck adalah kernel edukasi yang kompatibel dengan Linux dengan desain kecil dan sederhana
- Alih-alih membutuhkan aplikasi khusus seperti kernel lain, Tilck dapat menggunakan program Linux yang dibangun dengan toolchain berbasis musl
- Dapat menjalankan berbagai aplikasi seperti BusyBox, Vim, TinyCC, dan lainnya
- Menggunakan struktur monolithic yang menangani semua fungsi dalam satu ruang kernel seperti Linux
- Juga menaruh fokus besar pada eksekusi di perangkat keras nyata
-
Future plans
- Cocok untuk lingkungan embedded yang membutuhkan sistem ultra-rendah latensi dan sepenuhnya deterministik
- Menargetkan posisi ceruk di antara Embedded Linux dan FreeRTOS/Zephyr
- Ada rencana dukungan untuk ARM64, tanpa MMU, jaringan (UDP/IP), serta penyimpanan (FAT32, ext2)
- Tujuan jangka panjangnya adalah mendukung fitur jaringan dan penyimpanan pada SoC seperti Raspberry Pi 3/4
-
What Tilck is NOT?
- Tilck bukan proyek yang bertujuan menggantikan Linux
- Tidak menargetkan desktop OS (misalnya tidak mendukung X server)
- Tilck meminimalkan fitur demi menjaga kesederhanaan dan karakter real-time
-
Tilck vs Linux
- Linux kompleks karena sangat multifungsi, sementara Tilck memilih kesederhanaan, ukuran kecil, dan latensi sangat rendah
- Tilck juga berupaya memiliki infrastruktur pengujian yang mendekati level enterprise
Features
-
i686 support
- Mendukung perangkat keras lama (8259 PIC, 8254 PIT, dll.) sekaligus fitur modern (SSE, AVX, ACPI, dll.)
- Melalui ACPI, dapat menangani peristiwa daya dan memeriksa informasi baterai
- Sudah diuji pada berbagai lingkungan x86 (BIOS, UEFI, CSM, dll.)
-
riscv64 support
- Arsitekturnya berfokus pada embedded
- Mendukung QEMU dan board Sipeed licheerv-nano
- Informasi perangkat disampaikan melalui device tree, dan tidak ada kode kernel yang bergantung pada board tertentu
- Mendukung ns16550 UART, pengendali interupsi PLIC/INTC, dan lainnya
-
File systems
- Mendukung ramfs, devfs, sysfs
- FAT16 dan FAT32 didukung dalam mode hanya-baca, dan dapat di-memory-map
- Memiliki VFS, tetapi belum mendukung block device (semua berjalan di dalam memori)
-
Processes and signals
- Mendukung fitur dasar proses/sinyal seperti
fork, vfork, waitpid, rt_sigaction, dll.
- Tidak mendukung multithreading userspace, tetapi TLS (
set_thread_area) diimplementasikan sesuai kebutuhan libmusl
-
I/O
- Selain
read dan write, juga mendukung readv, writev, select, poll
- epoll belum didukung
-
Console
- Mengimplementasikan lebih dari 90% fitur konsol Linux
- Mendukung mode teks maupun framebuffer
- Implementasinya cukup matang hingga Vim dapat berjalan sempurna di Tilck
-
Userspace applications
- Dapat menjalankan aplikasi konsol dan framebuffer seperti BusyBox, Vim, Micropython, Lua, fbDOOM
Booting Tilck
-
Tilck's bootloader
- Tilck menyertakan bootloader yang mendukung BIOS maupun UEFI
- Dapat mengatur mode video, memilih kernel, dan mengedit command line
-
3rd-party bootloaders
- Tilck dapat di-boot dengan bootloader yang mendukung Multiboot 1.0 (misalnya GRUB)
- Contoh konfigurasi GRUB juga disediakan
A comment about user experience
- Tilck dirancang agar developer pemula pun mudah membangun dan menguji
- Menyediakan skrip build toolchain sendiri tanpa beban besar instalasi dependensi
- Mirip
buildroot, tetapi jauh lebih sederhana
- Juga menyediakan berbagai skrip untuk menjalankan QEMU
1 komentar
Komentar Hacker News
Terasa seperti proyek menarik yang berada di titik tengah antara Unix lawas seperti xv6 (versi 1975, lihat Lion book) dan kernel Linux penuh; senang melihatnya berjalan di board RISC-V seharga $9 bernama LicheeRV Nano (CPU 64-bit 1.0GHz (C906), MMU, FPU, unit vektor 128-bit, dilengkapi 256MB DDR3); board ini performanya mirip Pentium III era pertengahan atau PowerPC G4; sepertinya porting ke Milk-V Duo 256M atau Duo S yang memakai SoC yang sama, atau bahkan Duo (RAM 64MB, model seperti $5) juga akan sangat mudah; saat ini belum ada dukungan jaringan, block device, maupun multicore
G4 dengan Altivec menghasilkan performa multimedia yang kurang lebih setara dengan PIV yang memiliki SSE2
Setiap beberapa bulan muncul kernel OS baru yang hanya berjalan di VM tanpa abstraksi hardware; Tilck bukan jenis seperti itu; Tilck adalah sistem operasi sungguhan; berjalan di hardware nyata; ranah yang pertama sudah jenuh, sedangkan Tilck terasa mengisi celah yang sejak lama hampir tidak pernah terisi
Kesan bahwa Tilck boot sangat cepat dan bahkan menjalankan doom lewat framebuffer cukup mengesankan; bisa dilihat di tautan https://www.youtube.com/watch?v=Ce1pMlZO_mI; menyenangkan juga melihat developernya dengan ramah menjawab langsung pertanyaan calon mahasiswa CS di YouTube
Sudah melihat Tilck ditandai sebagai "untuk pendidikan", tetapi penasaran apakah dengan hanya mengganti bootloader ini juga cukup layak dipakai pada perangkat embedded kecil
File README Tilck ternyata lebih panjang dan lebih menarik dari dugaan, sehingga wajib dibaca kalau seorang developer OS
Bagi orang seperti saya yang tumbuh belajar dengan Minix sebagai sarana pendidikan, saya penasaran seberapa bergunanya Tilck
Membagikan tautan diskusi HN lama terkait Tilck:
Tilck memang menarik, tetapi ketiadaan dukungan multi-user terasa disayangkan; setidaknya jika mendukung perubahan pemilik dan grup file seperti
chmod/chgrp, kegunaannya untuk hal seperti server NFS akan jauh lebih besar, jadi ada harapan developer mempertimbangkan lagi dukungan multi-userKompatibilitas filesystem Tilck adalah masalah yang lebih besar daripada itu; sebenarnya untuk kebutuhan saya, platform yang keandalannya sudah teruji lebih baik, dan karena Tilck disesuaikan untuk pendidikan, ia kurang cocok dari sisi keamanan informasi maupun ketahanan data
Bisa juga dibayangkan cara dengan hanya mencatat nilai user:group di filesystem lalu menerapkannya saat runtime hanya ketika melayani klien; misalnya jika file server Linux berjalan sebagai root, tanpa mengganti user internal pun pemeriksaan izin dan pengelolaan kepemilikan tetap bisa dilakukan; selain itu, jika melakukan fork per sesi lalu beralih ke user klien terkait, kernel akan memaksakan pemberian izin sehingga penanganan izin file juga otomatis terselesaikan
Proyek ini benar-benar mengesankan; mengingatkan pada masa ketika Linux untuk firewall NAT dijalankan dari floppy 3,5 inci