![]() | |
GenodeをベースにしたデスクトップシステムSculpt | |
| 開発者 | ジェノデラボ |
|---|---|
| 書かれた | C++ |
| 作業状態 | 現在 |
| ソースモデル | オープンソース |
| 初回リリース | 2008年 |
| 最新リリース | 24.11 [1] / 2024年11月22日 |
| リポジトリ | github.com/genodelabs/genode |
| マーケティングターゲット | デスクトップコンピュータ 組み込みシステム |
| 利用可能 | 英語 |
| プラットフォーム | ARM、RISC-V、[2] x86、x86-64 [3] |
| カーネルタイプ | マイクロカーネル |
| ユーザーランド | ジェノード、POSIX |
| ライセンス | AGPL-3.0のみおよび商用 |
| 公式サイト | ジェノード |
Genodeは、マイクロカーネル抽象化レイヤーと一連のユーザー空間コンポーネントで構成される、無料のオープンソースソフトウェア オペレーティングシステム(OS)フレームワークです。[4] [5] [6]このフレームワークは、 Unixなどの独自のOSから派生していない数少ないオープンソースオペレーティングシステムの1つとして注目されています。特徴的な設計哲学は、セキュリティ指向のOSでは、 小規模で信頼できるコンピューティングベースが最優先事項であるというものです。
Genodeはデスクトップコンピュータ[7] [8]やタブレット[9] OSの基盤として、またはゲストオペレーティングシステムの仮想マシンモニターとして使用できます。このフレームワークは、 x86 [10]とARM [11]の両方の安全な仮想化システムの信頼できるコンポーネントとして使用されています。
Genodeのコードベースが小さいため、より複雑なUnix由来のオペレーティングシステムに代わる柔軟な選択肢となります。このため、このフレームワークは仮想化、[12] プロセス間通信、[13] IPスタック分離、[14] [15]監視、[16]ソフトウェア開発などの分野の研究の基本システムとして使用されてきました。[17] [18]
歴史
Genodeは、ドレスデン工科大学(TU Dresden )のBastei OSアーキテクチャ[19]研究レポートとして最初に考案されました。レポートの焦点は、機能ベースのセキュリティを使用したコンポーネントベースのOSの実用性を判断することでした。このレポートは、同時期に実施されたL4マイクロハイパーバイザー[20]の研究に部分的に動機付けられました。初期のプロトタイプの成功を受けて、レポートの著者はBasteiをGenode OSフレームワークとして開発するためにGenode Labsという会社を設立しました。
リリース
このプロジェクトは、 GNU Affero General Public Licenseの条件に基づいて公開されたオープンソース プロジェクトとして公開開発されており、商用組織が代替ライセンスを提供しています。リリースは 3 か月間隔でスケジュールされており、システムアプリケーション バイナリ インターフェイス(ABI)、アプリケーション プログラミング インターフェイス(API)、および問題ドキュメントに変更が加えられます。OS フレームワークはソース コード形式で利用可能で、18.02 リリース以降は、オンターゲット バイナリ デプロイメントを備えた Sculpt という汎用派生製品が提供されます。
建築上の特徴
Genode は、マイクロカーネルの一般的な哲学に基づいています。つまり、コードが小さくてシンプルであればあるほど、信頼性と正確性の検証が容易になります。Genode は、複雑なアプリケーションを小さなコンポーネントから構成することで、この哲学をユーザー空間にまで拡張します。各コンポーネントは、親子関係の厳密な階層構造で存在します。親として機能するコンポーネントは、リソースとプロセス間通信(IPC) アクセス ポリシーを子に適用できます。この階層的なシステム レイアウトにより、専門のサブシステムが一般的なサブシステム内にネストされるため、直感的なパーティション分割と権限の降格が可能になり、集中型またはスーパーユーザーシステム ポリシーに特有の混乱した代理人の問題が軽減されます。
このフレームワークはマイクロカーネルによってホストされるように設計されていますが、特定のマイクロカーネルの機能はほとんどが共通のセット内に収まっており、モノリシックカーネルはそれらの機能のスーパーセットを実装しています。これらの機能を抽象化することで、GenodeはさまざまなL4マイクロカーネル、 [21] [22]およびLinuxのユーザー空間として機能できます。
批判
C++
Genode は、その実装言語としてC++を選択したことでしばしば批判されている(C++ で実装されている他のオペレーティングシステムには、BeOS、Fuchsia、 Ghost 、Haiku、IncludeOS、 Managarm、OSv、Palm OS、ReactOS、SerenityOS、Syllable、Symbianなどがある)。この批判では通常、C++ は本質的に複雑であり、正しい動作のためにコードを分析するのが難しいため、システムライブラリや API を実装するための選択としては適切ではないと主張している。Genode はシステムライブラリで多重継承とテンプレートを使用しているが、C++ 標準ライブラリの使用は許可されておらず、スレッドローカルストレージやグローバルアロケータなどの暗黙のグローバル状態に依存する言語機能は、言語ランタイムから削除されている。[23] C++ の包括的な静的分析は不可能である。しかし、Genode プロジェクトは実証分析のために単体テストを公開している。
テキスト
Genode コンポーネントは、 Unix 派生製品のプレーン テキスト モデルとは対照的に、 XMLでシリアル化された構造化データを使用して状態を消費および公開します。 XML は簡単に解析およびプログラムで生成できる一方で、手動で理解して編集することも可能であるため、Genode フレームワークは実質的にすべてのコンポーネントで XML を使用します。
ローカル名前空間
Genode には実用的なグローバル名前空間がありません。つまり、グローバルファイルシステムやプロセスまたは IPC エンドポイントのレジストリはありません。これは、ユビキタスファイルシステムを備え、スーパーユーザーコンテキストがシステム内の任意のプロセスを任意に管理できる Unix などのシステムとは対照的です。コンポーネントの権限とルーティングを明示的に宣言することは、Unix に比べて手間がかかると思われるかもしれません。ただし、管理を区分化することで、共通の分離方法である仮想化に頼ることなく、同じマシン上で 相互に信頼されていないシステム管理者がサブシステムを管理できます。
彫刻
Genodeプロジェクトは、現代の消費者向けラップトップを対象としたSculptというデスクトップオペレーティングシステムを公開しています。[24] Sculptは、自動デバイス検出と構成、いくつかのGUI制御インターフェイス、およびGenodeパッケージマネージャーへのフロントエンドを備えた小さな基本システムです。このシステムは完全なデスクトップ環境を備えていませんが、フル機能のデスクトップを実現するには、ユーザーが従来のOSをホストする仮想マシンを展開する必要があります。Sculptは、静的ポリシーを持つ特殊なシステムとは対照的に、特権制御コンポーネントを使用した動的な再構成に大きく依存している点で、Genodeオペレーティングシステムフレームワークと区別されます。
参照
- HelenOS、デスクトップマイクロカーネルベースのオペレーティングシステム
- QNX は、マイクロカーネルでホストされる独自の Unix ライクなオペレーティングシステムです。
- Qubes OS は、仮想化によってセキュリティを提供するデスクトップ オペレーティング システムです。
- 能力ベースのセキュリティ
参考文献
- ^ “リリース 24.11”. 2024年11月22日. 2024年12月22日閲覧。
- ^ 「Genode OS が RISC-V サポートを追加」。
- ^ Larabel、Michael。「Genode が Intel グラフィックス ハードウェア用の GPU マルチプレクサを開発中」。Phoronix。
- ^ 「Genode OS フレームワークの紹介」。archive.fosdem.org /2012 。
- ^ 「L4 ベースのオペレーティング システム」。L4hq.org。2018年6 月 14 日時点のオリジナルよりアーカイブ。2018 年 6 月 1 日閲覧。
- ^ Larabel, Michael. 「Redox OS、MINIX、Hurd、Genode も FOSDEM に参加していました」。Phoronix。
- ^ バーダー、ハンス=ヨアヒム。 「Genode 2018.2 mit Sculpt OS」。pro-linux.de。
- ^ Larabel, Michael. 「Sculpt は Genode 上に構築された汎用 OS を目指しています」。
- ^ Tarasikov, Alexander (2013-05-11). 「Genode を商用ハードウェアに移植する」。私はソフトウェアが嫌いです。Blogger。
- ^ 「Muen: 高保証のための x86/64 分離カーネル」。
- ^ Williams, John. 「信頼できる実行環境の安全性からデータを検査する」(PDF)。
- ^ 「Embassies: Web の根本的なリファクタリング」(PDF)。USENIX。
- ^ Wegner, Martin; Holthusen, Sönke (2014-12-11). 「契約仕様と言語」ccc-project.org . 2019-03-27時点のオリジナルよりアーカイブ。2018-06-01に取得。
- ^ Hamad, Mohammad (2016-01-06). 「CCC のセキュア通信モジュール」ccc-project.org。 2019-01-23 時点のオリジナルよりアーカイブ。2018-06-01に取得。
- ^ Hamad, Mohammad. 「マイクロカーネルベースのシステムにおける分散アクセス制御のための通信フレームワーク」(PDF)。
- ^ プルティヴィラージ、B.;マドゥストゥーン、GS;ヴィジャヤサラティ、S. Chakrapani, K. 「Genode フレームワークを使用したマイクロカーネル ベースの安全なオペレーティング システム」(PDF)。ジャティ。
- ^ Hähne, Ludwig. 「SCons と GNU Make の実験的比較」(PDF)。
- ^ ミロ=サンチェス、レイニエ;パス・ロドリゲス、ワルド。ファハルド・モヤ、アレクシス。 「Genode OS フレームワーク、システムを組み込むためのフレームワーク」。リサーチゲート。
- ^ 「ドレスデン工科大学テクニカルレポート TUD-FI06-07」(PDF)。
- ^ 「NOVA マイクロハイパーバイザー」。
- ^ 「L4 ベースのオペレーティング システム」。L4hq.org。2018年6 月 14 日時点のオリジナルよりアーカイブ。2018 年 6 月 1 日閲覧。
- ^ 「SeL4 コミュニティ プロジェクト」. sel4.systems .
- ^ 「Genode の Conscious C++ 方言」. genodians.org . 2019 年 11 月 29 日閲覧。
- ^ 「リリースノート 18.02」。
外部リンク
- 公式サイト
- 公式サイト
- GitHub上の Genodelabs
- 研究プロジェクト
- KV-Cache: メニーコア向けのスケーラブルな高性能 Web オブジェクト キャッシュ
- TrApps: 悪のクラウド内の安全なコンパートメント
- セキュアCPSサービスのための組み込みプラットフォームの開発
- IITマドラスのSecure-OSプロジェクト
- 機能ベースのセキュリティ オペレーティング システムのカーネル分離
- ARM TrustZone によるモバイル デバイスのセキュリティ

