- Tilck Linux के साथ binary-compatible monolithic kernel है, जिसे शैक्षिक उद्देश्यों और embedded systems के लिए डिज़ाइन किया गया है
- न्यूनतम resource usage इसका लक्ष्य है, इसलिए यह embedded devices या सीमित environments में उपयोगी है
- BusyBox जैसे मौजूदा Linux user applications को सीधे चला सकता है, इसलिए अलग से app लिखने की ज़रूरत नहीं
- i686 और RISC-V64 architecture को सपोर्ट करता है, और आगे ARM तथा MMU-less CPU पर भी port करने की योजना है
- filesystem, process management, console, debugging जैसी कई सुविधाएँ शामिल हैं, और Vim, Micropython, Lua आदि भी चल सकते हैं
- QEMU और real hardware boot सपोर्ट, साथ ही test और debugging environment भी अच्छी तरह उपलब्ध है, इसलिए शुरुआती लोग भी इसे आसानी से आज़मा सकते हैं
Overview
-
What is Tilck?
- Tilck छोटे और सरल design वाला Linux-compatible educational kernel है
- पारंपरिक kernel की तरह इसके लिए अलग native apps की ज़रूरत नहीं; musl-आधारित toolchain से बने Linux programs इस्तेमाल किए जा सकते हैं
- BusyBox, Vim, TinyCC जैसे कई apps चला सकता है
- monolithic structure के साथ Linux की तरह एक ही kernel space में सभी functions हैंडल करता है
- वास्तविक hardware पर चलने को भी महत्व देता है
-
Future plans
- ultra-low latency और पूर्ण deterministic system की आवश्यकता वाले embedded environments के लिए उपयुक्त
- Embedded Linux और FreeRTOS/Zephyr के बीच niche position को लक्ष्य बनाता है
- ARM64, MMU-less, network (UDP/IP) और storage (FAT32, ext2) सपोर्ट की योजना है
- Raspberry Pi 3/4 जैसे SoC पर network और storage functionality तक सपोर्ट देना दीर्घकालिक लक्ष्य है
-
What Tilck is NOT?
- Tilck Linux को replace करने की कोशिश करने वाला project नहीं है
- यह desktop OS को लक्ष्य नहीं बनाता (X server आदि सपोर्ट नहीं)
- सरलता और real-time विशेषताओं के लिए Tilck features को न्यूनतम रखता है
-
Tilck vs Linux
- Linux जटिल है क्योंकि वह बहु-कार्यात्मक है, जबकि Tilck सरलता, छोटे आकार और ultra-low latency को चुनता है
- Tilck test infrastructure को भी enterprise स्तर के करीब ले जाने का प्रयास करता है
Features
-
i686 support
- पुराने hardware (8259 PIC, 8254 PIT आदि) और आधुनिक features (SSE, AVX, ACPI आदि) दोनों को एक साथ सपोर्ट करता है
- ACPI के ज़रिए power events हैंडल कर सकता है और battery जानकारी देखी जा सकती है
- विभिन्न x86 environments (BIOS, UEFI, CSM आदि) में test किया गया है
-
riscv64 support
- embedded-केंद्रित architecture
- QEMU, Sipeed licheerv-nano board सपोर्ट
- device जानकारी device tree के ज़रिए दी जाती है, और kernel code में board-dependent code नहीं है
- ns16550 UART, PLIC/INTC interrupt controller आदि सपोर्ट
-
File systems
- ramfs, devfs, sysfs सपोर्ट
- FAT16, FAT32 को read-only मोड में सपोर्ट किया जाता है, और memory mapping संभव है
- VFS मौजूद है, लेकिन block device सपोर्ट नहीं (सब कुछ memory के भीतर काम करता है)
-
Processes and signals
fork, vfork, waitpid, rt_sigaction आदि बुनियादी process/signal features सपोर्ट करता है
- user space multithreading सपोर्ट नहीं है, लेकिन
libmusl आवश्यकताओं के अनुसार TLS (set_thread_area) implement किया गया है
-
I/O
read, write के अलावा readv, writev, select, poll सपोर्ट
- epoll सपोर्ट नहीं
-
Console
- Linux console features का 90% से अधिक implement किया गया है
- text/framebuffer mode दोनों सपोर्ट
- implementation इतनी परिपक्व है कि Vim Tilck पर पूरी तरह काम करता है
-
Userspace applications
- BusyBox, Vim, Micropython, Lua, fbDOOM जैसे console और framebuffer apps चल सकते हैं
Booting Tilck
-
Tilck's bootloader
- Tilck में BIOS/UEFI दोनों को सपोर्ट करने वाला bootloader शामिल है
- video mode, kernel selection, command-line editing संभव है
-
3rd-party bootloaders
- Multiboot 1.0 सपोर्ट करने वाले bootloader (जैसे: GRUB) से Tilck boot किया जा सकता है
- GRUB configuration example भी दिया गया है
A comment about user experience
- Tilck को इस तरह डिज़ाइन किया गया है कि शुरुआती developers भी आसानी से build/test कर सकें
- dependency installation के बोझ के बिना, अपना toolchain build script प्रदान करता है
buildroot जैसा, लेकिन उससे कहीं अधिक सरल
- विभिन्न QEMU run scripts भी उपलब्ध हैं
1 टिप्पणियां
Hacker News राय
यह एक दिलचस्प प्रोजेक्ट लगता है जो xv6 जैसे पुराने Unix (1975 वर्ज़न, Lion book देखें) और पूरे Linux kernel के बीच का मध्यबिंदु है। इसे LicheeRV Nano नाम के $9 वाले RISC-V बोर्ड (1.0GHz 64-बिट CPU (C906), MMU, FPU, 128-बिट vector unit, 256MB DDR3 के साथ) पर चलते देख कर खुशी हुई। इस बोर्ड का प्रदर्शन Pentium III के मध्य दौर या PowerPC G4 के करीब है। लगता है कि इसी SoC का उपयोग करने वाले Milk-V Duo 256M, Duo S, या Duo (64MB RAM, $5 जैसे मॉडल) पर port करना भी बहुत आसान होगा। फिलहाल इसमें network, block device, या multicore support नहीं है।
Altivec वाले G4 की multimedia performance, SSE2 वाले PIV के लगभग बराबर होती है।
हर कुछ महीनों में एक नया OS kernel दिखाई देता है जो hardware abstraction के बिना सिर्फ VM में चलता है। Tilck वैसा नहीं है। Tilck एक असली operating system है। यह वास्तविक hardware पर चलता है। पहले वाले क्षेत्र में पहले से बहुत भीड़ है, जबकि Tilck ऐसा लगता है कि वह लंबे समय से लगभग खाली पड़े niche को अच्छी तरह भर रहा है।
Tilck का बहुत तेज़ boot होना और doom का framebuffer पर चलना प्रभावशाली है। इसे https://www.youtube.com/watch?v=Ce1pMlZO_mI लिंक पर देखा जा सकता है। यह भी अच्छा लगा कि developer YouTube पर CS aspirants के सवालों का सीधे और विनम्रता से जवाब दे रहा था।
मैंने देखा कि Tilck को "शैक्षिक" के रूप में चिह्नित किया गया है, लेकिन अगर सिर्फ bootloader बदल दिया जाए, तो क्या यह छोटे embedded devices में भी उपयोगी हो सकता है?
Tilck का README फ़ाइल उम्मीद से कहीं लंबा और दिलचस्प है, इसलिए OS developers को इसे ज़रूर पढ़ना चाहिए।
Minix के साथ शैक्षिक माहौल में बड़े हुए मेरे जैसे लोगों के लिए Tilck कितना उपयोगी होगा, यह जानने की जिज्ञासा है।
Tilck पर पहले की HN चर्चाओं के लिंक साझा किए गए हैं:
Tilck दिलचस्प है, लेकिन multi-user support न होना खटकता है। कम से कम chmod/chgrp जैसे file owner और group change तक support हो, तो NFS server जैसी जगहों पर इसकी उपयोगिता काफी बढ़ सकती है। अच्छा होगा अगर developer multi-user support पर फिर से विचार करे।
Tilck की filesystem compatibility उससे भी बड़ा मुद्दा है। सच कहूँ तो मेरे उपयोग के लिए reliability-verified platform बेहतर रहेगा, और Tilck शिक्षा-केंद्रित होने के कारण information security या data robustness के लिहाज़ से उपयुक्त नहीं है।
filesystem में सिर्फ user:group value लिख कर रखी जाए और runtime में केवल client को service देते समय उसे लागू किया जाए, ऐसा तरीका भी सोचा जा सकता है। उदाहरण के लिए, अगर Linux file server root के रूप में चलता है, तो अपने उपयोगकर्ता को बदले बिना भी permission check और ownership management किया जा सकता है। और अगर हर session पर fork करके उस client user में switch किया जाए, तो kernel खुद permissions लागू कर देगा, जिससे file permission handling अपने-आप हल हो जाएगी।
यह प्रोजेक्ट सचमुच प्रभावशाली है। इससे वह समय याद आ गया जब 3.5-inch floppy पर NAT firewall के लिए Linux चलाया जाता था।