概要
AsterinasはRustで開発されたLinux互換カーネルプロジェクトで、「フレームカーネルアーキテクチャ」を採用。 安全性と性能を両立する新しいカーネル設計思想を提案。 unsafeコードを最小限に封じ込め、他は安全な抽象化で開発可能。 クラウドやコンテナ用途を主なターゲットとし、形式的検証も目指す。 プロジェクトは初期段階で、今後の発展とコミュニティの反応が注目点。
Asterinasとフレームカーネルとは
- Asterinas :Rust製のLinux-ABI互換カーネルプロジェクト
- フレームカーネルアーキテクチャ :unsafeを使う部分をライブラリに封じ込め、他は安全なRustで開発
- 従来のカーネル設計 :モノリシックカーネルは全てを単一空間で処理、マイクロカーネルは最小限のTCBとユーザ空間サービスで分離
- フレームカーネルの特徴 :
- unsafeコードのカプセル化
- サービスはカーネル空間内だが、リソースアクセスは制限
- シンプルかつ高性能な共有メモリ方式維持
- 安全性と性能の両立
- 命名の由来 :unsafe部分をフレームワークで包み、メモリ安全APIで公開する設計思想
関連プロジェクト・先行研究との比較
- RedLeaf :Rust製マイクロカーネル、ハードウェア分離は使わず異なる設計思想
- Tock :組込み向け、信頼できるコアとunsafe禁止のカプセルで分離
- Rust for Linux :LinuxカーネルにRustを導入し、安全なドライバ開発を目指す
- Asterinasの独自性 :
- ハードウェア分離を活用し、汎用性とLinux互換性を重視
- TCBの最小化と形式的検証を志向
形式的検証への取り組み
- TCBの小型化 :形式的検証を現実的にするための重要要素
- seL4 :有名な形式的検証済みマイクロカーネル
- Asterinasの目標 :
- 小型で検証可能なTCBとLinux互換の共有メモリアーキテクチャを両立
- CertiK社と連携し、Verusを用いた形式的検証を推進
- 監査レポートも公開
ライブラリ・開発ツール
- OSTD :Rust製OS開発フレームワーク
- OS開発の参入障壁低減
- メモリ安全性の向上
- コード再利用促進
- ユーザーモードでのテストによる生産性向上
- Linux互換やUNIXライクである必要はなし
- OSDK :OSTDベースのカーネル開発支援Cargoアドオン
- Intelのサポート :TDX(Trust Domain Extensions)などの信頼性強化機能に関心
- 実装例 :ネットワークカーネルコンポーネントはDMAやロック等をOSTD経由で安全に利用
現状と今後の展望
- 開発状況 :
- 2024年初頭にMozilla Public Licenseで初公開
- 主に中国の大学院生とAnt Groupが開発
- x86とRISC-Vをサポート
- Linuxシステムコール206種(x86)に対応(Linux 6.7は368種)
- リリースやドキュメントは限定的
- OSTDは他プロジェクトでの利用実績なし
- アプリケーション実行は未対応
- 初期ディストリビューション計画 :
- 独自initramfsと簡易ユーザ空間アプリを用意
- Docker対応を目指す
- Nixベースのディストリ構想
- Linuxカーネルモジュール非対応
- 短期目標 :
- 対応CPUアーキテクチャとハードウェアの拡充
- クラウド用途(特に中国Aliyun/Alibaba Cloud)での実用性強化
- コンテナホストOSとしての展開
- Intelの信頼性機能(TDX等)への対応
- X11やXfce対応の動きもあり
- Rust for Linuxとの違い :
- Rust for Linux:既存カーネルのドライバ領域のみRust化
- Asterinas:カーネル全体をRustで再設計、安全・検証可能なコアに集約
- Asterinasはクラウド・コンテナ用途が主眼、Rust for LinuxはLinux全体の進化を志向
まとめ・今後の注目点
- 新しいOS設計思想の実験場 :Rustの安全性と健全性を最大限活用
- 中国主導の意欲的研究開発 :実用化はこれから
- コミュニティの反応や普及の行方に注目 :Rust for LinuxチームやLinux界隈の評価も今後の焦点