概要
- Tilck は教育用途の モノリシックカーネル で、Linuxバイナリ互換性を持つ設計。
- i686 と RISCV64 アーキテクチャに対応し、主に組み込み用途を想定。
- 小規模・シンプル設計 で、実機ハードウェアでも動作可能。
- Linuxプログラム (例:BusyBox、Vimなど)をそのまま実行可能。
- 将来的には ネットワーク・ストレージ対応 や ARM移植 も計画中。
Tilckとは何か
- Tilck は教育用に設計された モノリシックカーネル。
- Linuxバイナリ互換性 を持ち、i686とRISCV64で動作。
- 小規模・シンプルな設計 のため、カーネルモードの学習や実験に最適。
- 独自アプリは不要で、 Linux用ツールチェーン(gcc-musl等) でビルドしたプログラムがそのまま動作。
- BusyBox などの一般的なLinuxプログラムも実行可能。
Tilckの将来計画
- 組み込みシステム 向けに普及を目指す方針。
- 超低レイテンシ・決定論的動作 を実現し、Embedded LinuxとRTOS(FreeRTOSやZephyr)間のギャップを埋める存在。
- ARMファミリ への移植や、 MMU非搭載CPU への対応も検討中。
- 3MBメモリ でも起動可能な軽量設計。
- ネットワーク(UDP+IP) や ストレージ(fat32, ext2等) の基本機能を追加予定。
- Raspberry Pi 3/4 など特定SoCでのネットワーク・ストレージ両対応がマイルストーン。
Tilckが「目指さないもの」
- Linuxの再実装や代替 を目指すものではない。
- Linuxプログラム互換性は動作検証やツールチェーン活用のため。
- デスクトップOS用途 は想定外。
- Xサーバ非対応、デスクトップ機能追加予定なし。
TilckとLinuxの違い
- Tilck はマルチユーザーサーバやデスクトップを対象としない。
- Linux は多機能・高複雑性だが、Tilckは シンプルなコード ・ 小さいバイナリ ・ 決定論的挙動 ・ 超低レイテンシ を重視。
- 開発・テストが容易 で、堅牢性も重視。
Tilckの特徴
- プリエンプタブルなモノリシック*NIXカーネル (約100種のLinuxシステムコール実装)。
- アーキテクチャ依存部分は最小限で、 多アーキテクチャ対応性。
- ユニットテスト として他アーキテクチャへのビルドも可能。
i686サポート
- レガシーハードウェア (8259 PIC、8254 PIT、16550 UARTなど)と 最新機能 (SSE、AVX、ACPIなど)両対応。
- ACPI による電源管理やバッテリ情報取得も可能。
- 実機ハードウェア での動作を重視し、USBブートで検証。
- QEMU や実機(BIOS/UEFI/CSM/UEFI専用)で動作確認済み。
- 教育的価値 の高いドライバは仮想環境のみでのテストも例外的に許容。
riscv64サポート
- 組み込み向け に最適化。
- RV64スーパーバイザモード、 SV39ページテーブル、ユーザ空間FPU対応。
- デバイスツリー ベースのドライバモデル採用。
- QEMU 仮想環境や Sipeed licheerv-nano ボードに対応。
- UART(ns16550)、 INTC/PLIC 割り込みコントローラドライバ搭載。
- キーボード非対応、入出力はシリアルポート利用。
ファイルシステム
- ramfs (リンク・スパースファイル・メモリマッピング対応)、 devfs (最小実装)、 FAT16/32(読み取り専用)、 sysfs (ACPI・PCI情報表示)を実装。
- VFS で複数ファイルシステムを同時利用可能。
- ブロックデバイス未対応、全てインメモリ。
プロセス・シグナル
- スレッド(カーネル内) 管理、fork()/vfork()・コピーオンライト実装。
- waitpid()、プロセスグループ 対応。
- POSIXシグナル は部分実装(カスタムハンドラ対応、SA_*未対応等)。
- TLS(スレッドローカルストレージ) もlibmusl互換のため実装。
I/O
- read()/write() に加え、 readv()/writev() (ベクタI/O)、 ノンブロッキングI/O、 select()/poll() 対応。
コンソール
- Linux互換度90%以上 のコンソール実装(テキスト/フレームバッファ両対応)。
- Vim の動作を目標に開発、構文ハイライト等も対応。
- 複雑なアプリ も動作可能な堅牢性を実証。
ユーザー空間アプリ
- BusyBox、 Vim、 TinyCC、 Micropython、 Lua、 fbDOOM など多様なアプリが動作。
- 詳細は Wikiページ 参照。
Tilckの起動(x86)
- Tilck独自ブートローダ (BIOS/UEFI両対応)搭載。
- ビデオモード選択・カーネルファイル選択・コマンドライン編集 が可能。
- Multiboot 1.0対応ブートローダ (例:QEMU内蔵、GRUB)でも起動可能。
まとめ
- Tilck は教育・組み込み向けの Linuxバイナリ互換モノリシックカーネル。
- 小型・シンプル・実機重視 設計で、将来的には ネットワーク・ストレージ・ARM対応 も視野。
- Linuxと異なる用途・設計思想 で独自進化を目指すプロジェクト。