Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー

Avatar for n4mlz n4mlz
March 08, 2026

Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー

Avatar for n4mlz

n4mlz

March 08, 2026
Tweet

More Decks by n4mlz

Other Decks in Programming

Transcript

  1. 2 見どころ これだけ見ていってください はじめに ⚫ Linux コンテナをネイティブ実行できる OS を実装しました ⚫

    Docker から pull してきたイメージがそのまま実行可能 ⚫ コンテナの実行機構に関して Linux よりシンプルな設計を実現 ⚫ コンテナセキュリティにおける Attack surface の最小化を図った
  2. 3 自己紹介 ⚫ 名前: 川崎晃太朗 ⚫ 学習駆動コース 坂井ゼミ ⚫ 筑波大学

    情報科学類 3年 ⚫ 興味: コンテナ、クラウドネイティブ技術、自作OS、 自作コンパイラ、Web開発、インフラ、AI/ML ⚫ 好き: 車輪の再発明 はじめに
  3. 4 私はコンテナが大好きであるという話 ⚫ 過去にコンテナランタイムを 4 回自作した (言語: C, C, Go,

    Rust) ⚫ コンテナランタイム関連の OSS にも貢献 ⚫ デプロイは全部コンテナでやる ⚫ 私の個人開発リポジトリにはだいたい Dockerfile や compose.yml がある 導入
  4. 6 しかし、Linux カーネルはコンテナ第一の設計ではない! ⚫ Linux は元々コンテナが存在しなかった時代からあり、コンテナは後付けの機構 ⚫ 小さい機能の寄せ集めで作られていて、カーネルはその機能群を提供しているだけ ⚫ そのため歴史的経緯によりコンテナの分離機構は煩雑であり、たびたびそのモデルの

    妥当性が疑われている ⚫ 例: cgroup v1 (現在は v2 が主流になった) 導入 別に Linux カーネルが悪いわけではない。 コンテナという概念が存在しなかったカーネルに、その分離機能 をそれぞれ独立に積み重ねていった結果である
  5. 7 ⚫ Linux は元々コンテナが存在しなかった時代からあり、コンテナは後付けの機構 ⚫ 小さい機能の寄せ集めで作られていて、カーネルはその機能群を提供しているだけ ⚫ そのため歴史的経緯によりコンテナの分離機構は煩雑であり、たびたびそのモデルの 妥当性が疑われている ⚫

    例: cgroup v1 (現在は v2 が主流になった) しかし、Linux カーネルはコンテナ第一の設計ではない! 導入 別に Linux カーネルが悪いわけではない。 コンテナという概念が存在しなかったカーネルに、その分離機能 をそれぞれ独立に積み重ねていった結果である けしからん じゃないか!! 好奇心アヒル Linux に (私は) 納得いかない。けしからん! これからはコンテナの時代なので、コンテナを第一に考えた OS を誕生させましょう!!
  6. 8 成果物「 Cyrius」 ⚫ コンテナランタイムに極度に特化した OS であり、 それ以外の機能を有さない ⚫ 既存のコンテナの標準仕様への互換を持つ

    ⚫ コンテナに期待されるセキュリティと同等の 隔離性・互換性を、Linux と全く異なる セキュリティモデルで実現する 成果物
  7. 18 もう一度: ⚫ OCI Bundle…「こういうコンテナを立ててね」というお願い書 ⚫ ところで: OCI Bundle のお願いでは、前述した

    Linux の機能を使ってコンテナを作成する ことを必ずしも求めない 既存のコンテナ OCI Bundle 展開するファイルシステム、 分離する名前空間、実行するユーザー、 ケーパビリティ、環境変数などの定義
  8. 19 もう一度: ⚫ ところで2: Linux コンテナ (プロセス) は OS の機能を利用するために

    syscall を発行する が、この syscall の互換性さえ満たせばこのプロセスは下が Linux なのか互換性を持った別 の何かなのかは気にしない 既存のコンテナ コンテナ (プロセス) syscall による やり取り Linuxカーネル
  9. 20 もう一度: ⚫ ところで2: Linux コンテナ (プロセス) は OS の機能を利用するために

    syscall を発行する が、この syscall の互換性さえ満たせばこのプロセスは下が Linux なのか互換性を持った別 の何かなのかは気にしない 既存のコンテナ コンテナ (プロセス) syscall による やり取り Linuxカーネル…?
  10. 22 Cyrius の特異性 ⚫ Cyrius は "Type1 Container Runtime" である

    (新概念) Cyrius の思想 ハイパーバイザー コンテナランタイム ユーザーランド (Type2) Type2 Hypervisor 例: QEMU, VirtualBox Type2 Container Runtime 例: runc (Docker), youki カーネル空間 (Type1) Type1 Hypervisor 例: VMware ESXi
  11. 23 Cyrius の特異性 ⚫ Cyrius は "Type1 Container Runtime" である

    (新概念) Cyrius の思想 ハイパーバイザー コンテナランタイム ユーザーランド (Type2) Type2 Hypervisor 例: QEMU, VirtualBox Type2 Container Runtime 例: runc (Docker), youki カーネル空間 (Type1) Type1 Hypervisor 例: VMware ESXi Type1 Container Runtime Cyrius
  12. 24 Cyrius の特異性 ⚫ Cyrius は "Type1 Container Runtime" である

    (新概念) Cyrius の思想 ハイパーバイザー コンテナランタイム ユーザーランド (Type2) Type2 Hypervisor 例: QEMU, VirtualBox Type2 Container Runtime 例: runc (Docker), youki カーネル空間 (Type1) Type1 Hypervisor 例: VMware ESXi Type1 Container Runtime Cyrius Type1 Container Runtime という概念は 世界初 (おそらく)
  13. 25 「コンテナ専用OS」を支えるカーネルの新しい設計思想 カーネルをいかにコンテナに最適化できるか? 1. 「コンテナはネストしない」という強い仮定を置き、ホストとコンテナの2つの世界に分離 されるモデルで表現する 2. ホストプロセスとコンテナプロセスの明確な区別と2つの syscall テーブル

    3. コンテナのカーネルオブジェクト化、カーネルによるリソースとライフサイクル管理 4. VFS の完全な分離、コンテナ用ファイルシステムはホストと完全に並列なインスタンス 5. 等々… 詳細: https://github.com/n4mlz/Cyrius Cyrius の思想
  14. 29 比較: Linux vs Cyrius ⚫ コンテナが実行されるまでの手続き Cyrius の作る新しいコンテナの世界 Cyrius

    コンテナ専用のカーネルなので、 コンテナを作成するまでに必要な syscall 呼び出しは1度だけ https://github.com/youki-dev/youki
  15. 30 Linux バイナリ互換だけでなく、「Linux コンテナ互換」 ⚫ これは自作 OS のテーマとして面白い ⚫ 自作

    OS で動かしたいアプリケーションを Linux 上でコンテナとしてビルドして、自作 OS に持って行ってしまえば良い ⚫ →あとは Linux として実行される ⚫ →自作 OS 用にコンパイルしたり、依存関係を頑張って揃えたりする必要がない ⚫ コンテナレベルの互換を作ったおかげで、自作 OS の上で既存のエコシステムを活用でき る・タダ乗りできる Cyrius の自作 OS としての面白さ
  16. 31 世間からの反響 ⚫ 自作 OS ×コンテナというワードが刺さったのか、Twitter で大反響 ⚫ Twitter に定期的に進捗を載せているが、そのたびに300~400いいねついている

    ⚫ この Cyrius での試みは、実は世間からの注目度が高いのではないか Cyrius がもたらす変革 GitHub: 100スター超え達成 Twitter: 3300いいね、フォロワー300人増
  17. 32 応用可能性: ここから見える未来 ⚫ Docker や Kubernetes とのインテグレーション ⚫ Cyrius

    は標準仕様に準拠しているので、頑張れば既存のランタイムと連携ができる ⚫ containerd-shim というのを作れば実際に Docker のバックエンドとして呼び出せるようになる見込み ⚫ Cyrius で構成された Kubernetes クラスター ⚫ 自作OSで自作クラウド基盤なんてまだ誰もやったことないはず ⚫ Cyrius だから目指せること! ⚫ 自分自身では Cyrius はかなり面白い技術だと思っているので、いつかこれをテーマに どこかで登壇発表したい Cyrius がもたらす変革
  18. 33 まとめ ⚫ Linux コンテナをネイティブ実行できる OS を実装した ⚫ コンテナの実行においては Linux

    よりシンプルな設計を達成した ⚫ コンテナセキュリティにおける Attack surface の最小化を図った ⚫ 互換性にまだ難があるので、今後実装を拡充したい おわりに ご清聴ありがとうございました! スターお待ちしてます Cyrius