- Tilck는 리눅스와 바이너리 호환되는 모놀리식 커널로, 교육 목적과 내장 시스템용으로 설계됨
- *리소스 사용 최소화**를 목표로 하여 임베디드 장치나 제한된 환경에서 유용함
- BusyBox 등 기존 리눅스 사용자 애플리케이션을 그대로 실행할 수 있어 별도 앱 작성 불필요
- i686과 RISC-V64 아키텍처를 지원하며, 향후 ARM 및 MMU-less CPU로도 포팅 계획 있음
- 파일시스템, 프로세스 관리, 콘솔, 디버깅 등 다양한 기능이 포함되며, Vim, Micropython, Lua 등도 실행 가능
- QEMU 및 실기기 부팅 지원, 테스트 및 디버깅 환경도 잘 갖춰져 있어 입문자도 쉽게 시도 가능
Overview
-
What is Tilck?
- Tilck는 작고 단순한 설계를 가진 리눅스 호환 교육용 커널
- 기존 커널처럼 자체 앱이 필요한 게 아니라, musl 기반 툴체인으로 빌드된 리눅스 프로그램 사용 가능
- BusyBox, Vim, TinyCC 등 여러 앱을 실행 가능
- monolithic 구조로 리눅스처럼 단일 커널 공간에서 모든 기능 처리
- 실제 하드웨어에서의 실행도 중시
-
Future plans
- 초저지연·완전 결정론적 시스템이 필요한 임베디드 환경에 적합
- Embedded Linux와 FreeRTOS/Zephyr 사이의 틈새 포지션을 목표
- ARM64, MMU-less, 네트워크 (UDP/IP) 및 저장장치 (FAT32, ext2) 지원 계획 있음
- 라즈베리파이 3/4 같은 SoC 대상으로 네트워크·저장 기능까지 지원하는 것이 장기 목표
-
What Tilck is NOT?
- Tilck는 리눅스를 대체하려는 프로젝트가 아님
- 데스크탑 OS를 목표로 하지 않음 (X 서버 등 미지원)
- Tilck는 단순성과 실시간성을 위해 기능을 최소화함
-
Tilck vs 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 인터럽트 컨트롤러 등 지원
-
File systems
- ramfs, devfs, sysfs 지원
- FAT16, FAT32는 읽기 전용으로 지원되며, 메모리 매핑 가능
- VFS 존재, 단 블록 디바이스 미지원(모든 것이 메모리 내에서 동작)
-
Processes and signals
fork,vfork,waitpid,rt_sigaction등 기본 프로세스/시그널 기능 지원- 사용자 공간 멀티스레딩 미지원이나,
libmusl요구사항에 따라 TLS (set_thread_area) 구현됨
-
I/O
read,write외에readv,writev,select,poll지원- epoll은 미지원
-
Console
- 리눅스 콘솔 기능의 90% 이상을 구현
- 텍스트/프레임버퍼 모드 모두 지원
- Vim이 Tilck에서 완벽히 작동할 정도로 구현됨
-
Userspace applications
- BusyBox, Vim, Micropython, Lua, fbDOOM 등 콘솔 및 프레임버퍼 앱 실행 가능
Booting Tilck
-
Tilck's bootloader
- Tilck는 BIOS/UEFI 모두 지원하는 부트로더 포함
- 비디오 모드, 커널 선택, 커맨드라인 편집 가능
-
3rd-party bootloaders
- Multiboot 1.0 지원 부트로더 (예: GRUB)로 Tilck 부팅 가능
- GRUB 설정 예시도 제공됨
A comment about user experience
- Tilck는 초보 개발자도 쉽게 빌드/테스트할 수 있게 설계됨
- 종속성 설치 부담 없이, 자체 툴체인 빌드 스크립트 제공
buildroot와 유사하지만 훨씬 단순- 다양한 QEMU 실행 스크립트도 제공