mochiOSは、Rustを中心に開発されているx86-64向けオペレーティングシステムです。
メモリ安全性、明確な権限管理、障害からの回復性を重視しながら、既存OSの延長ではない、新しいデスクトップOSの構築を進めています。
mochiOSでは、カーネル、システムサービス、ドライバー、ユーザーランド、アプリケーションを明確に分離します。それぞれのコンポーネントが必要な権限だけを持つことで、問題がOS全体へ波及しにくい構造を目指しています。
現在も活発に開発中であり、仕様や実装は変更される可能性があります。
ページフォルト、システムコール、プロセス、サービス、そしてクラッシュも、mochiOSでは観測可能な状態として扱います。
障害を単に停止として処理するのではなく、発生箇所を切り分け、影響範囲を限定し、可能な限り回復へつなげることを目標としています。
安全性を個々のプログラムの正しさだけに依存させません。
Capabilityによる権限管理、プロセス間の分離、Rustによるメモリ安全性を組み合わせ、コンポーネントが侵害された場合でも影響を限定できる設計を進めています。
内部構造を隠しすぎず、OSを構成する各レイヤーの責務を明確にします。
コードを読めること、動作を追跡できること、変更の影響を説明できることを重視しています。
- Language: Rust
- Architecture: x86-64
- Kernel: mnu
- Security: Capability-based
- Filesystem: ext2(PlugKitによりいくらでも変えられます)
- License: Apache License 2.0(例外あり)
すべてのリポジトリはリポジトリ一覧から確認できます。
PlugKitは、mochiOSのユーザーランドで動作するドライバーを作成できるフレームワークです。
一般的なモノリシックカーネルでは、多くのデバイスドライバーがカーネル空間で動作します。 そのため、ドライバーのバグや不正なメモリアクセスが、カーネル全体のクラッシュや権限侵害につながる可能性があります。
mochiOSでは、可能な限りドライバーを独立したユーザーランドプロセスとして実行します。
PlugKitドライバーは、通常のプロセスと同様に隔離されます。
ドライバーには、対象デバイスを操作するために必要なCapabilityだけが付与されます。関係のない物理メモリ、I/Oポート、割り込み、デバイスへ自由にアクセスすることはできません。
mochiOSは、経験や所属を問わず、あらゆる貢献を歓迎しています。
コードの実装だけでなく、次のような貢献もプロジェクトの一部です。
- バグの報告
- 機能や設計に関する提案
- ドキュメントの改善
- コードレビュー
- テスト
- 対応ハードウェアの検証
- UIやデザインに関する提案
変更を送信する場合は、対象リポジトリをフォークし、変更内容を確認したうえでPull Requestを作成してください。
AIを使用したコードも受け付けていますが、送信者自身が内容をレビューし、そのコードに責任を持てることを条件とします。
詳しくはコントリビューションガイドを参照してください。
貢献はいくらでも、どんなものでも歓迎します!
mochiOSの主要なコンポーネントは基本的にApache License 2.0のもとで公開されています。
各リポジトリに含まれるライセンスファイルがある場合、そちらを優先してください。
あなたのOSはまさにあなたのものです。あなたは完全なコントロール権を持ち、可能性は無限大です。
— osdev.orgから翻訳して引用