5 ポイント 投稿者 GN⁺ 2025-07-18 | 1件のコメント | WhatsAppで共有
  • Tilck は、Linuxとバイナリ互換のある モノリシックカーネル で、教育目的組み込みシステム向け に設計されている
  • リソース使用の最小化 を目標としており、組み込み機器や制約の多い環境で有用
  • BusyBox など 既存のLinuxユーザーアプリケーション をそのまま実行できるため、別途アプリを書く必要がない
  • i686 と RISC-V64 アーキテクチャをサポートし、今後は ARM および MMU-less CPU への移植も計画されている
  • ファイルシステム、プロセス管理、コンソール、デバッグ など多様な機能を含み、Vim、Micropython、Lua なども実行可能
  • QEMU および実機での起動 をサポートし、テストおよびデバッグ環境 も充実しているため、入門者でも気軽に試せる

Overview

  • What is Tilck?

    • Tilck は 小さくシンプルな設計 を持つ Linux互換の教育用カーネル
    • 既存カーネルのように専用アプリが必要なわけではなく、musl ベースのツールチェーンでビルドされた Linux プログラムを利用可能
    • BusyBox、Vim、TinyCC など複数のアプリを実行可能
    • monolithic 構造 で、Linuxのように単一のカーネル空間で全機能を処理
    • 実ハードウェアでの動作 も重視
  • Future plans

    • 超低遅延・完全決定論的 なシステムが必要な 組み込み環境 に適している
    • Embedded Linux と FreeRTOS/Zephyr の間の ニッチポジション を目指す
    • ARM64MMU-lessネットワーク (UDP/IP) および ストレージ (FAT32, ext2) の対応を計画
    • Raspberry Pi 3/4 のような SoC を対象に、ネットワークとストレージ機能まで対応することが長期目標
  • What Tilck is NOT?

    • Tilck は Linuxを置き換えることを目指すプロジェクトではない
    • デスクトップOSを目標としていない(Xサーバーなどは未対応)
    • Tilck は単純さとリアルタイム性のために機能を最小限にしている
  • Tilck vs 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 割り込みコントローラーなどをサポート
  • File systems

    • ramfsdevfssysfs をサポート
    • FAT16、FAT32 は読み取り専用でサポートされ、メモリマップも可能
    • VFS は存在するが、ブロックデバイスは未対応(すべてがメモリ内で動作)
  • Processes and signals

    • forkvforkwaitpidrt_sigaction など 基本的なプロセス/シグナル機能をサポート
    • ユーザー空間の マルチスレッドは未対応 だが、libmusl の要件に従って TLSset_thread_area)は実装されている
  • I/O

    • readwrite に加え、readvwritevselectpoll をサポート
    • epoll は未対応
  • Console

    • Linux コンソール機能の 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 実行スクリプトも提供

1件のコメント

 
GN⁺ 2025-07-18
Hacker Newsの意見
  • xv6のような昔のUnix(1975年版、Lion book参照)とフル機能のLinuxカーネルの中間に位置する興味深いプロジェクトだと感じる。LicheeRV Nanoという9ドルのRISC-Vボード(1.0GHz 64ビットCPU(C906)、MMU、FPU、128ビットベクターユニット、256MB DDR3搭載)で動作しているのを見てうれしくなった。このボードはPentium III中期やPowerPC G4に近い性能だ。同じSoCを使うMilk-V Duo 256MやDuo S、あるいはDuo(64MB RAM、5ドルのようなモデル)への移植も非常に容易そうだ。現時点ではネットワークやブロックデバイス、マルチコア対応はない

    • ネットワークとマルチコア対応がないLinuxは想像できるが、ブロックデバイスまでないOSは見慣れない。キャラクターデバイスしか意味していないのだろうか。FATドライバはどう動いているのか気になる
  • Altivecを搭載したG4は、マルチメディアではSSE2を備えたPIVとほぼ同等の性能を出す

  • 数か月おきに、ハードウェア抽象化なしでVMでしか動かない新しいOSカーネルが現れるのを見る。Tilckはそういう類ではない。Tilckは本物のオペレーティングシステムだ。実機で動く。前者の領域はすでに飽和している一方で、Tilckは昔からほとんど埋まっていなかったニッチをうまく埋めている感じがする

  • Tilckの起動が非常に速く、doomもframebufferで動かしているのが印象的だ。https://www.youtube.com/watch?v=Ce1pMlZO_mI のリンクで見られる。開発者がYouTubeでCS志望の学生の質問に直接親切に答えている様子も良かった

    • 動画が短くて要点がまとまっている。Vimを実行している様子も見せていて、多くのLinux syscallのごく一部だけでVimのような大きなソフトウェアまでコンパイルして動かしているのはかなり印象的だ
  • Tilckが「教育用」と書かれているのは確認したが、ブートローダーだけ置き換えれば小型の組み込み機器でも実用になるのか気になる

  • TilckのREADMEファイルは予想外に長くて面白く、OS開発者ならぜひ読む価値がある

  • Minixとともに教育用として育ってきた自分のような人間にとって、Tilckがどれほど役立つのか気になる

    • Tilckは非常に小さく決定論的なモノカーネルだ。現在およそ100個のLinux syscallをLinux互換の形で実装している。教育用ツールとしても優れているが、長期的にはLinux互換RTOSカーネルを目指している。現時点ではmuslで静的リンクされたバイナリのみをサポートし、起動と動作に必要なRAMは約3MBしかない。コードベースが小さく単純なので教育目的に合っており、最終的には組み込みシステムの実際の本番環境でも使われることを目標としている
  • Tilckに関する過去のHN議論へのリンクを共有する:

  • Tilckは興味深いが、マルチユーザー対応がないのは惜しい。少なくともchmod/chgrpのようなファイル所有者やグループ変更くらいは対応していれば、NFSサーバーのような用途でも活用の幅が広がりそうなので、開発者がマルチユーザー対応を再検討してくれたらと思う

    • Tilckのファイルシステム互換性はそれ以上に大きな問題だ。実際、自分の用途なら信頼性が検証されたプラットフォームのほうがよく、Tilckは教育用に寄せられているので、情報セキュリティやデータの堅牢性の面では向いていない

    • user:groupの値をファイルシステムに記録しておき、ランタイムではクライアントにサービスを提供するときだけ反映する方法も考えられる。たとえばLinuxファイルサーバーがrootで動作していれば、自身でユーザーを切り替えなくても権限チェックと所有権管理ができる。また、セッションごとにforkしてそのクライアントユーザーに切り替えれば、カーネルが強制的に権限を付与するので、ファイル権限の処理も自動的に解決する

  • このプロジェクトは本当に印象的だ。昔、3.5インチフロッピーでNATファイアウォール用のLinuxを動かしていた時代を思い出す