Genodeは、フリーでオープンソースの
オペレーティングシステムフレームワークであり、マイクロ
カーネル抽象化レイヤーとユーザースペースコンポーネントのコレクションで構成されています。
Unixのようなプロプライエタリーな
オペレーティングシステムから派生したものではない、数少ないOSの一つとして知られています。
設計思想
Genodeの最大の特徴は、小さなトラステッド・コンピューティング・ベース(TCB)によって、セキュリティーを重視した
オペレーティングシステムであることを目指している点です。デスクトップやタブレットのOSとしての利用、またはゲストOSのための仮想マシンモニターとしての利用が可能です。x86とARMの両方で、安全な
仮想化システムの信頼されたコンポーネントとして使用されています。
Genodeは、小規模なコードベースでありながら、複雑な
Unix由来のOSの代替として機能します。このため、
仮想化、
プロセス間通信、IPスタック分離、モニタリング、ソフトウェア開発といった分野の研究基盤として広く利用されています。
歴史
Genodeは、
ドレスデン工科大学におけるBastei OSアーキテクチャーの研究リポートとして始まりました。この研究の目的は、ケーパビリティーベースのセキュリティーを用いたコンポーネントベースの
オペレーティングシステムが実用的かどうかを検証することでした。この研究は、L4マイクロ
ハイパーバイザーの研究と並行して行われました。初期のプロトタイプの成功を受けて、研究者たちはGenode Labs社を設立し、BasteiをGenode OS Frameworkとして開発しました。
リリース
プロジェクトは、
GNU Affero General Public Licenseのもとでオープンソースとして開発されており、商業目的での利用には別のライセンスも提供されています。3ヶ月ごとにリリースが行われ、OSのABIとAPIの変更、文書の更新が含まれます。Genodeはソースコードとして入手可能で、18.02リリース以降は、Sculptと呼ばれる汎用的な派生物が、特定のターゲット向けのバイナリ開発のために利用可能です。
アーキテクチャ
Genodeは、より小さくシンプルなコードの方が、信頼性と正しさを検証しやすいという、マイクロ
カーネルに共通する哲学に基づいて構築されています。この哲学はユーザースペースにも拡張され、小さなコンポーネントによって複雑なアプリケーションが構成されています。各コンポーネントは親子関係を持つ厳格な階層構造を持ち、親コンポーネントはリソースと
プロセス間通信を子に適用します。
この階層構造は、直感的なパーティショニングと特権の昇格を防ぐ仕組みを提供します。特定のサブシステムをより一般的なサブシステムの内側に配置することで、中央集権的なシステムポリシーに特有の、confused deputy problemを減少させます。Genodeはマイクロ
カーネルによってホストされるように設計された機能セットを定め、モノリシック
カーネルであっても、これらの機能以上を実装すれば良いとされています。このように機能を抽象化することで、GenodeはL4マイクロ
カーネルや
Linuxのユーザーランドとして機能できます。
批判点
Genodeは、実装言語として
C++を選択したことで批判を受けることがあります。
C++は、継承の複雑さとコードの解析の難しさから、システムライブラリとAPIの実装には不適切であるという意見があります。しかし、Genodeは多重継承とテンプレートを使用しているものの、標準
C++ライブラリや暗黙のグローバルステートに依存する機能は利用していません。
C++の完全な静的解析は不可能ですが、Genodeプロジェクトは経験的な単体テストを提供しています。
XML
Genodeコンポーネントは、構造化されたデータをXMLにシリアライズし、状態の伝達に利用します。これは、UNIX系OSがプレインテキストを利用するのとは対照的です。XMLは、複雑な機能と非効率的な表現、手動での編集の難しさから批判されています。しかし、GenodeではXMLのパーズと生成が容易であり、手作業での読み書きも可能であるとされています。Genodeでは、XMLの単純なサブセットを使用していますが、XML文書の編集は手間がかかり、間違いやすいという声もあります。XMLの特殊機能に依存していないため、やS式といったより単純なデータ形式に置き換えることも可能です。
ローカル名前空間
Genodeはグローバルな名前空間を全く使用していません。グローバルな
ファイルシステムや
プロセス、IPCエンドポイントのレジストリが存在しないため、UNIXのように
ファイルシステムがどこでも利用でき、
スーパーユーザーコンテキストが任意の
プロセスに許可されるシステムとは異なります。パーミッションとコンポーネントのルーティングを明示的に宣言する必要があるため、UNIXと比較して多くの負荷がかかります。しかし、管理者権限を分割することで、同じマシン上で、
仮想化や一般的な分離手法を用いることなく、サブシステムが相互に信頼しない管理者によって管理されることを可能にします。
Sculpt
Genodeプロジェクトは、現代的な消費者向けノートPCをターゲットとした「Sculpt」というデスクトップ
オペレーティングシステムをリリースしています。Sculptは、デバイスの自動検出と設定、GUIコントロールインターフェース、Genodeパッケージングマネージャーへのフロントエンドを備えた小さなベースシステムです。完全なデスクトップ環境ではなく、ユーザーが完全なデスクトップ環境を利用するには、仮想マシンとして従来のOSを展開する必要があります。Sculptは、Genode OSフレームワークとは異なり、特権制御コンポーネントを使って動的に構成を変更することに大きく依存しています。
関連項目
外部リンク
-
KV-Cache: A Scalable High-Performance Web-Object Cache for Manycore
-
TrApps: Secure Compartments in the Evil Cloud
-
Development of an Embedded Platform for Secure CPS Services
-
Secure-OS project of IIT Madras
-
Kernel isolation of a Capability-based security Operating System
-
Mobile Device Security with ARM TrustZone