5 คะแนน โดย GN⁺ 2025-07-18 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Tilck เป็น เคอร์เนลแบบ monolithic ที่เข้ากันได้กับ Linux ในระดับไบนารี โดยออกแบบมาสำหรับ การศึกษา และ ระบบฝังตัว
  • มีเป้าหมายที่ การใช้ทรัพยากรให้น้อยที่สุด จึงเหมาะกับอุปกรณ์ฝังตัวหรือสภาพแวดล้อมที่มีข้อจำกัด
  • สามารถรัน แอปพลิเคชันฝั่งผู้ใช้ของ Linux ที่มีอยู่แล้ว เช่น BusyBox ได้ทันที จึงไม่จำเป็นต้องเขียนแอปแยกต่างหาก
  • รองรับสถาปัตยกรรม i686 และ RISC-V64 และมีแผนพอร์ตไปยัง ARM และ CPU แบบไม่มี MMU ในอนาคต
  • มีฟีเจอร์หลากหลาย เช่น ระบบไฟล์, การจัดการโปรเซส, คอนโซล, การดีบัก และยังรัน Vim, Micropython, Lua ได้
  • รองรับ การบูตบน QEMU และฮาร์ดแวร์จริง พร้อมมี สภาพแวดล้อมสำหรับการทดสอบและดีบัก ที่ครบถ้วน ทำให้ผู้เริ่มต้นก็ลองใช้งานได้ง่าย

Overview

  • Tilck คืออะไร?

    • Tilck เป็น เคอร์เนลเพื่อการศึกษาแบบเข้ากันได้กับ Linux ที่มี การออกแบบเล็กและเรียบง่าย
    • ไม่ได้ต้องใช้แอปเฉพาะของตัวเองเหมือนเคอร์เนลบางตัว แต่สามารถใช้ โปรแกรม Linux ที่บิลด์ด้วย toolchain ที่อิง musl ได้
    • สามารถรันแอปได้หลายตัว เช่น BusyBox, Vim, TinyCC
    • ใช้โครงสร้างแบบ monolithic ที่จัดการทุกฟังก์ชันในพื้นที่เคอร์เนลเดียวเหมือน Linux
    • ให้ความสำคัญกับ การทำงานบนฮาร์ดแวร์จริง
  • แผนในอนาคต

    • เหมาะกับ สภาพแวดล้อมแบบฝังตัว ที่ต้องการระบบ หน่วงต่ำมากและกำหนดพฤติกรรมได้แน่นอนอย่างสมบูรณ์
    • ตั้งเป้าเป็น ตำแหน่งทางเลือกเฉพาะทาง ระหว่าง Embedded Linux กับ FreeRTOS/Zephyr
    • มีแผนรองรับ ARM64, MMU-less, เครือข่าย (UDP/IP) และ สตอเรจ (FAT32, ext2)
    • เป้าหมายระยะยาวคือรองรับฟังก์ชันเครือข่ายและสตอเรจบน SoC อย่าง Raspberry Pi 3/4
  • สิ่งที่ Tilck ไม่ใช่

    • Tilck ไม่ใช่โปรเจ็กต์ที่ตั้งใจมาแทนที่ Linux
    • ไม่ได้มุ่งเป็นเดสก์ท็อป OS (เช่น ไม่รองรับ X server)
    • Tilck ลดฟีเจอร์ให้เหลือน้อยที่สุดเพื่อความเรียบง่ายและความเป็นเรียลไทม์
  • Tilck เทียบกับ Linux

    • Linux ซับซ้อนเพราะมีความสามารถรอบด้าน ขณะที่ Tilck เลือก ความเรียบง่าย, ขนาดเล็ก, เวลาแฝงต่ำมาก
    • Tilck ยังพยายามสร้าง โครงสร้างพื้นฐานด้านการทดสอบ ให้ใกล้เคียงระดับองค์กร

Features

  • รองรับ i686

    • รองรับทั้ง ฮาร์ดแวร์รุ่นเก่า (8259 PIC, 8254 PIT เป็นต้น) และ ฟีเจอร์สมัยใหม่ (SSE, AVX, ACPI เป็นต้น)
    • สามารถจัดการเหตุการณ์ด้านพลังงานและตรวจสอบข้อมูลแบตเตอรี่ผ่าน ACPI
    • ผ่านการทดสอบในสภาพแวดล้อม x86 หลากหลายแบบ (BIOS, UEFI, CSM เป็นต้น)
  • รองรับ riscv64

    • เป็นสถาปัตยกรรมที่เน้น งานฝังตัว
    • รองรับ QEMU และบอร์ด Sipeed licheerv-nano
    • ข้อมูลอุปกรณ์ถูกส่งผ่าน device tree และไม่มีโค้ดในเคอร์เนลที่ผูกกับบอร์ดเฉพาะ
    • รองรับ ns16550 UART, คอนโทรลเลอร์อินเทอร์รัปต์ PLIC/INTC เป็นต้น
  • ระบบไฟล์

    • รองรับ ramfs, devfs, sysfs
    • รองรับ FAT16 และ FAT32 แบบอ่านอย่างเดียว และสามารถทำ memory mapping ได้
    • มี VFS แต่ ยังไม่รองรับ block device (ทุกอย่างทำงานอยู่ในหน่วยความจำ)
  • โปรเซสและสัญญาณ

    • รองรับ ฟังก์ชันพื้นฐานของโปรเซส/สัญญาณ เช่น fork, vfork, waitpid, rt_sigaction
    • แม้จะ ไม่รองรับ multithreading ใน userspace แต่มีการทำ TLS (set_thread_area) ตามข้อกำหนดของ libmusl
  • I/O

    • นอกจาก read, write แล้ว ยังรองรับ readv, writev, select, poll
    • ไม่รองรับ epoll
  • คอนโซล

    • รองรับฟีเจอร์ของ Linux console ได้มากกว่า 90%
    • รองรับทั้งโหมดข้อความและโหมดเฟรมบัฟเฟอร์
    • ทำได้ดีถึงระดับที่ Vim ทำงานบน Tilck ได้อย่างสมบูรณ์
  • แอปพลิเคชัน userspace

    • สามารถรันแอปคอนโซลและเฟรมบัฟเฟอร์ เช่น BusyBox, Vim, Micropython, Lua, fbDOOM

การบูต Tilck

  • บูตโหลดเดอร์ของ Tilck

    • Tilck มี บูตโหลดเดอร์ในตัวที่รองรับทั้ง BIOS/UEFI
    • สามารถเลือกโหมดวิดีโอ เลือกเคอร์เนล และแก้ไขคอมมานด์ไลน์ได้
  • บูตโหลดเดอร์ของบุคคลที่สาม

    • สามารถบูต Tilck ด้วยบูตโหลดเดอร์ที่รองรับ Multiboot 1.0 (เช่น GRUB)
    • มีตัวอย่างการตั้งค่า GRUB ให้ด้วย

ความเห็นเกี่ยวกับประสบการณ์ผู้ใช้

  • Tilck ถูกออกแบบมาให้ นักพัฒนามือใหม่ก็สามารถบิลด์/ทดสอบได้ง่าย
  • มีสคริปต์สำหรับบิลด์ toolchain ของตัวเอง จึงลดภาระในการติดตั้ง dependency
  • คล้าย buildroot แต่เรียบง่ายกว่ามาก
  • มีสคริปต์สำหรับรัน QEMU หลายแบบให้พร้อม

1 ความคิดเห็น

 
GN⁺ 2025-07-18
ความเห็นจาก Hacker News
  • รู้สึกว่านี่เป็นโปรเจ็กต์ที่น่าสนใจซึ่งอยู่กึ่งกลางระหว่าง Unix ยุคเก่าแบบ xv6 (เวอร์ชันปี 1975 อ้างอิง Lion book) กับ Linux kernel แบบเต็มรูปแบบ รู้สึกยินดีที่เห็นมันทำงานบนบอร์ด RISC-V ราคา $9 ชื่อ LicheeRV Nano (CPU 64 บิต 1.0GHz (C906), MMU, FPU, ยูนิตเวกเตอร์ 128 บิต, พร้อม DDR3 256MB) ซึ่งบอร์ดนี้มีประสิทธิภาพใกล้เคียง Pentium III ช่วงกลางหรือ PowerPC G4 และก็น่าจะพอร์ตไปยัง Milk-V Duo 256M, Duo S หรือรุ่นอย่าง Duo (RAM 64MB, $5) ที่ใช้ SoC เดียวกันได้ง่ายมาก ตอนนี้ยังไม่มีการรองรับเครือข่าย, block device หรือ multicore

    • พอจะนึกภาพ Linux ที่ไม่มีเครือข่ายและไม่มี multicore ได้ แต่ OS ที่ไม่มีแม้แต่ block device ยังรู้สึกแปลก เลยสงสัยว่าหมายถึงมีแค่ character device หรือเปล่า แล้ว FAT driver ทำงานอย่างไร
  • G4 ที่มี Altivec ให้ประสิทธิภาพด้านมัลติมีเดียแทบจะพอๆ กับ PIV ที่มี SSE2

  • ทุกๆ ไม่กี่เดือนจะเห็น OS kernel ใหม่ที่ทำงานได้แค่ใน VM และไม่มี hardware abstraction ปรากฏออกมา Tilck ไม่ใช่แบบนั้น Tilck เป็นระบบปฏิบัติการจริง ทำงานบนฮาร์ดแวร์จริง ขณะที่พื้นที่ของแบบแรกนั้นแทบอิ่มตัวแล้ว Tilck กลับให้ความรู้สึกว่าเข้ามาเติมช่องว่างเฉพาะทางที่แทบไม่มีใครเติมมานานได้ดี

  • น่าประทับใจที่ Tilck บูตได้เร็วมาก และยังรัน doom ผ่าน framebuffer ได้ด้วย ดูได้จากลิงก์ https://www.youtube.com/watch?v=Ce1pMlZO_mI อีกทั้งยังดีที่เห็นผู้พัฒนาตอบคำถามของผู้ที่อยากเรียนต่อด้าน CS ใน YouTube อย่างเป็นกันเองด้วยตัวเอง

    • วิดีโอสั้นและตรงประเด็น ยังมีฉากที่รัน Vim ให้ดูด้วย การคอมไพล์และรันซอฟต์แวร์ใหญ่แบบ Vim ได้โดยมีเพียงบางส่วนของ Linux syscall หลายตัวนั้นน่าประทับใจมาก
  • เห็นว่า Tilck ถูกระบุว่าเป็น "เพื่อการศึกษา" แต่ก็สงสัยว่าถ้าเปลี่ยนแค่ bootloader มันจะใช้งานได้ดีบนอุปกรณ์ embedded ขนาดเล็กด้วยหรือไม่

  • ไฟล์ README ของ Tilck ยาวกว่าที่คาดไว้และอ่านสนุกอย่างน่าประหลาด ถ้าเป็นนักพัฒนา OS ก็ควรอ่านสักครั้ง

  • สำหรับคนอย่างฉันที่เติบโตมากับ Minix ในฐานะเครื่องมือการศึกษา ก็สงสัยว่า Tilck จะมีประโยชน์แค่ไหน

    • Tilck เป็น monokernel ที่เล็กมากและมีความเป็น deterministic ปัจจุบันรองรับ Linux syscall ราว 100 รายการในรูปแบบที่เข้ากันได้กับ Linux เหมาะจะใช้เป็นเครื่องมือการศึกษา แต่ในระยะยาวตั้งเป้าเป็น Linux-compatible RTOS kernel ตอนนี้รองรับเฉพาะไบนารีที่ลิงก์แบบ static ด้วย musl และใช้ RAM เพียงราว 3MB ในการบูตและรัน ตัว codebase มีขนาดเล็กและเรียบง่ายจึงเหมาะกับเป้าหมายด้านการศึกษา และท้ายที่สุดก็มีเป้าหมายให้นำไปใช้ใน production จริงของระบบ embedded ได้ด้วย
  • มีการแชร์ลิงก์ไปยังกระทู้ HN เกี่ยวกับ Tilck ในอดีต:

  • Tilck น่าสนใจ แต่เสียดายที่ยังไม่มีการรองรับ multi-user อย่างน้อยถ้ารองรับแค่ chmod/chgrp หรือการเปลี่ยนเจ้าของไฟล์และกลุ่มได้ ก็น่าจะทำให้เอาไปใช้กับอะไรอย่าง NFS server ได้มากขึ้น เลยหวังว่าผู้พัฒนาจะกลับมาพิจารณาเรื่อง multi-user อีกครั้ง

    • ความเข้ากันได้ของ filesystem ใน Tilck เป็นปัญหาใหญ่กว่านั้นอีก สำหรับงานที่ฉันต้องใช้ จริงๆ แล้วแพลตฟอร์มที่ผ่านการพิสูจน์ด้านความน่าเชื่อถือย่อมดีกว่า และ Tilck ถูกออกแบบเพื่อการศึกษา จึงไม่เหมาะในแง่ความปลอดภัยสารสนเทศหรือความทนทานของข้อมูล

    • อาจคิดวิธีเก็บค่า user:group ไว้ใน filesystem อย่างเดียว แล้วค่อยบังคับใช้เฉพาะตอน runtime ตอนให้บริการไคลเอนต์ก็ได้ เช่น ถ้า Linux file server ทำงานเป็น root ก็สามารถตรวจสิทธิ์และจัดการความเป็นเจ้าของได้โดยไม่ต้องสลับผู้ใช้ของตัวเอง หรือถ้าทำการ fork แยกต่อเซสชันแล้วสลับไปเป็นผู้ใช้ของไคลเอนต์นั้น เคอร์เนลก็จะบังคับใช้สิทธิ์ให้ ทำให้การจัดการสิทธิ์ไฟล์ถูกแก้ไปโดยอัตโนมัติ

  • โปรเจ็กต์นี้น่าประทับใจจริงๆ ทำให้นึกถึงสมัยที่รัน Linux สำหรับ NAT firewall บนแผ่นฟลอปปีดิสก์ 3.5 นิ้ว