12 ポイント 投稿者 GN⁺ 2024-01-09 | 3件のコメント | WhatsAppで共有

Motūrus OSの紹介

  • Motūrusプロジェクトは、クラウド向けのシンプルで高速かつ安全なOSであるMotūrusOSを開発している。
  • Motūrus OSは、仮想マシンベースのワークロードを対象とする新しいOSで、Webサーバー、サーバーレス、エッジキャッシュングなどに利用される。

なぜMotūrus OSなのか?

  • 現在、ほとんどの仮想化された本番ワークロードはLinux上で動作している。
  • Linuxには多くの高度な機能がある一方で、仮想化ワークロードには理想的ではない複雑さがいくつかある。
    • Linuxはベアメタル向けに最適化されているため、VM内部で使うと非効率である。
    • Linuxは使いにくい。
    • Linuxは歴史的に非常に安全ではなかった。
  • 仮想化ワークロードに特化した新しいOSは、Linuxよりはるかにシンプルで安全に作ることができ、性能や効率でもLinuxに匹敵するか、それを上回る可能性がある。

Motūrus OSとは何か?

  • Motūrus OSはマイクロカーネルベースのOSで、Rust言語で構築されており、仮想化ワークロードのみを対象としている。
  • 現在はx64 KVMベースの仮想マシンをサポートしており、QemuまたはCloud Hypervisorで実行できる。
  • RustはMotūrus OSの中核言語であり、実装だけでなくABIもRustで提供される。

動作する機能

  • 現在、ほとんどのサブシステムはPOC/MVPモードで動作しているが、Webサーバーのようなワークロードを実行できる。
  • 具体的には次のような機能が動作する。
    • MBR(Qemu)またはPVH(Cloud Hypervisor)を通じて約200ms以内に起動する。
    • himemマイクロカーネル。
    • スケジューリング: シンプルなマルチプロセッサ・ラウンドロビン(SMP)、カーネルスケジューリングは協調的。
    • メモリ管理: 現時点では4Kページのみをサポート、スタックは保護され、ユーザー空間のページフォールトは適切に処理される。
    • I/Oサブシステム(ユーザー空間内): VirtIO-BLKおよびVirtIO-NETドライバー、2つのシンプルなファイルシステム、smoltcpベースのネットワーキング(TCPのみサポート)。
    • ユーザー空間: マルチプロセス、プリエンプション、スレッド、TLS、Rust標準ライブラリの大部分を移植済み。
    • シンプルなUnixスタイルのシェルを提供。

動作しない機能

  • 大部分はまだ本番利用の準備ができていない。
  • セキュリティ監査は行われていない。
  • sys-io(ユーザー空間I/Oサブシステム)で"未実装"パニックが簡単に発生しうる。
  • 具体的には次のような機能は動作しない。
    • ファイルシステム: Rust std::fs APIの大部分はPOCとして実装されているが、非同期I/Oを使って再実装する必要がある。
    • ネットワーキング: std::net::TcpStreamは大部分が実装されているが、他のプロトコルはまだ実装されていない。
    • Rust標準以外のエコシステム: 一部のクレートは軽微な調整でコンパイルして利用可能だが、Tokioのような非同期ランタイムに依存するクレートは現時点ではコンパイルできない。

Motūrus OSをどうやってビルド/実行できるか?

  • docs/build.mdドキュメントを参照。

謝辞

  • RustでOSを書くブログシリーズを執筆したPhilipp Oppermannに深く感謝する。多くの人々がこの分野で実験するきっかけとなった。

GN⁺の見解

  • 革新的なアプローチ: Motūrus OSは仮想化環境に特化した新しいOSで、Linuxの複雑さと非効率性を解決しようとしている。
  • Rust言語の採用: Rustはメモリ安全性と性能を重視する言語であり、Motūrus OSの安全性と効率性に貢献するだろう。
  • 開発者コミュニティへの貢献: このプロジェクトは、OS開発に関心のある開発者が新たな可能性を探り、既存の限界を超える助けになるだろう。

3件のコメント

 
ing03201 2024-01-09

writing an os in rust のブログを私も見ていますが、もうすでに動きがありますね!
良い記事だと思います

 
GN⁺ 2024-01-09
Hacker Newsの意見
  • プロジェクト開発者/作者の意見:

    • プロジェクトへの関心と議論に感謝している。
    • 長期的な存続可能性とサポート、コンパイラおよびバイナリ互換性に対する懸念がある。
    • コミュニティなしではプロジェクトは成功できないが、Motor OSのようなプロジェクトの潜在的な利点が、最終的には広く使われる新しいオペレーティングシステムにつながると信じている。
    • 仮想マシン内部(時には外部)でのLinuxの問題点と、Linux開発者がそれを解決することに十分集中していないと指摘している。
    • コンパイラの不安定性とバイナリ互換性への懸念については理解できず、最新のLinuxカーネルはさまざまなGCCまたはLLVMツールチェーンでコンパイル可能で、古いバイナリも問題なく実行できると述べている。
    • 追加の質問に答える用意があることを明らかにしている。
  • "Rust-first" アプローチに関する説明:

    • "Rust-first" とは、マイクロカーネルとドライバがRustで実装されているだけでなく、ユーザー空間プログラムも現時点ではRustでしか書けないことを意味する。
    • 技術的には、Cなど他の言語でMotor OS向けアプリを書くために、RustベースのABIと提供されたRustツールチェーンをリバースエンジニアリングできるが、これには相応の作業が必要である。
    • 標準的なRustプログラムは標準Rustライブラリを使い、FFIなしでコンパイルおよび実行可能であると説明している。
  • 小さなカーネルが現代のコンピューターで200msかかる理由への疑問:

    • メモリページのメタデータ初期化、ファイルシステムのマウント、initプロセスの開始などが必要だが、これらすべては数マイクロ秒以内に行われるべきだと考えている。
    • ホストがリソースを準備するのに時間がかかっているのか、たとえばQEMUやKVMに遅い部分があるのかと疑問を呈している。
  • Rustで書かれたカーネルで、async-firstなカーネルを見てみたいという意見:

    • async-firstなカーネルが特別に難しい、あるいは価値がないと見なされているのか、それとも単に試されていないだけなのかという疑問を示している。
    • Phil OppermannのRust製OSシリーズを追っており、これが可能だと知っているが、最近のRustベースOSはこれを試していないようだと述べている。
  • Linuxとの競争に関するLinus Torvaldsの過去の発言を思い出させる意見:

    • Torvaldsは競争への恐れを問う質問に対し、自分はデバイスドライバを書くのが好きで、それを好む若く情熱的な人が現れるまでは競争を恐れないと答えたことを回想している。
  • Motor OSのようなプロジェクトへの興味と、開発継続を願う意見:

    • Motor OSのようなプロジェクトは多くが失敗しており、もはや簡単には興奮できないと述べている。
    • クラウドのような特定用途でLinuxを置き換えるのは非常に難しいと触れている。
  • Linuxの複雑さゆえにDocker、Nix OS、"サーバーレス" などが存在するという意見:

    • DockerとNixOSはユーザー空間のパッケージ管理の問題ゆえに、サーバーレスは企業が需要に応じてコンピューティングに支払いたいから存在すると説明している。
  • 新技術に対して当初は懐疑的だったが、考え直すと不要なレイヤーを取り除くことで得られる効率性とセキュリティ向上が魅力的だという意見:

    • 新技術に対して健全なアプローチを取っており、効率性とセキュリティ向上の魅力を認めている。
  • Motor OSはDockerなどと競合しているように見えるという意見:

    • Motor OSはLinuxと直接競争するというより、Dockerのような技術とより直接的に競合しているように見えると指摘している。
    • Motor OSを選ぶべき理由、つまりDockerなどの代わりにMotor OSを使う理由を、"Why?" セクションで扱ってほしいと述べている。
  • 新しいオペレーティングシステムを始めるのは難しくないが、その後50年間そのオペレーティングシステムをサポートするのは非常に難しいという意見:

    • 新しいOSを書くこと自体は難しくないが、長期間にわたってサポートするのは非常に難しいことだと強調している。
 
ahwjdekf 2024-01-10

「動作しない機能たち」の項目が実にすごいですね。おもちゃのようなプロジェクト。