Flower News:変更されていないLinuxプログラムの実行のサポートを追加するFuchsiaOS開発者



Fuchsia OSについてのニュースはほとんどないという事実にもかかわらず、プロジェクトは開発を続けており、非常に活発です。証明-Linux用に構築された変更されていないプログラムを実行するメカニズムを実装する計画についての開発者からのメッセージ。



このメカニズムは、starnixと呼ばれる特別な「レイヤー」に基づいています。 LinuxABIとの互換性を提供するのは彼女です。



Linuxカーネルシステムインターフェイスは、Fuchsiaオペレーティングシステムのプロセスとして実行されるハンドラーに実装されています。このプロセスはユーザースペースで機能し、Linuxプログラムの要求を対応するOSサブシステムへの呼び出しに変換します。このプロジェクトの開発中に、必要なすべてのシステムインターフェイスをユーザーが利用できるように、多くのサブシステムを変更する必要があります。



開発者によると、「レイヤー」のアーキテクチャーは、Windows用のWindowsサブシステムと呼ばれるWindows用の同様のサブシステムに非常に似ています。また、LinuxシステムコールをWindowsシステムコールに変換するためにも使用されます。



中間層コードは、脆弱性の問題を軽減するためにRustで記述されます。開発者は、このプログラミング言語が、Linuxプロセスの特権をstarnixプロセス自体に昇格させるために悪用される可能性のある脆弱性のリスクを最小限に抑えるのに役立つと信じています。このために、標準のフクシア保護メカニズムも使用されます。



例:ファイルシステム、ネットワークスタック、またはグラフィックサブシステムにアクセスすると、starnixはリクエストを変換し、LinuxABIをFuchsiaSystemABIに変換します。これにより、フクシアの通常のプロセスに使用されるのと同じ制限が可能になります。標準のLinux認証メカニズムも使用されます。





OS開発者が以前にフクシアの下でLinuxアプリケーションを実行する機能を開発したことは注目に値します。しかし、彼らはChromeOSで使用されているものと同様の実装を使用していました。フクシアはグーグルの一種のペットプロジェクトなので、一般的には理解できます。以前は、Linuxとの互換性のために、ZirconカーネルとVirtIO仕様に基づくハイパーバイザーを使用して形成された特別な仮想マシンでLinuxソフトウェアを実行するMachinaライブラリを使用することが提案されていました。



Linuxシステムのインターフェースを実装するのはそれほど簡単ではないため、あなたが知る限り、仮想化はフクシアで並行して使用されます。ほとんどの場合、仮想化は「レイヤー」と組み合わせて使用​​されます。この場合、Linuxカーネルは別の仮想マシンで実行されます。これは悪くはありませんが、リソースが必要です。 Linux用のWindowsサブシステムに取り組んだMicrosoftチームがトランスレータを削除し、WSL 2でネイティブLinuxカーネルを使用したのは、リソースが集中しているためです。



ちなみに、フクシアの開発者は無料でパンを食べません-OSはすでにPOSIX Lite互換性レベルを提供しており、これはフクシアシステムABIの上で機能します。これにより、多数のLinuxプログラムを実行できますが、アプリケーションを再コンパイルするか、ソースコードを変更する必要があります。POSIX Liteの問題の1つは、すべてのPOSIX機能の実装が不完全であることです。



ここでの主な問題は、killを含むプロセスのグローバル状態を変更するための呼び出しがサポートされていないことです。したがって、フクシアの安全コンセプトに矛盾がある場合、グローバルな状態を変更することは禁止されています。ただし、POSIXのライトバージョンを使用すると、オープンソースアプリケーションを移植するときに効果があります。確かに、コードにアクセスできないプログラムの実行には問題があります。



フクシアに関しては、それはユニバーサルOSです:正確にどこで使用されるかはまだ不明です。ただし、ワークステーション、スマートフォン、IoTデバイス、家庭用電化製品など、ほぼすべてのタイプのデバイスと互換性があります。開発は、Androidプラットフォームの作成経験と、スケーリングとセキュリティの分野での欠点を考慮して実行されます。



新しいオペレーティングシステムの基盤はジルコンマイクロカーネルであり、これはLKプロジェクトの開発に基づいています。





このプロジェクトは数年前から比較的活発で、GoogleがAndroidの代替として開発しているという提案がネットワーク上に公開されています。この間ずっと、OSは進化し続けました。たとえば、2017年に 、OSが新しいユーザーインターフェイス、コマンドライン機能、およびその他のいくつかの機能を受け取ったことが報告されました。2018年、GoogleはOSの新しいバージョンをリリースしましたが、これはすでにテスト済みです。



Fuchsiaには、フラッターフレームワークを使用してDartで記述された独自のGUIがあります。



さらに、プロジェクトは以下を開発します。



  • ユーザーインターフェイスPeridotを構築するためのフレームワーク。
  • Fargoパッケージマネージャー;
  • 標準ライブラリlibc;
  • レンダリングシステムエッシャー;
  • バルカンドライバーマグマ;
  • 風光明媚な複合マネージャー;
  • ファイルシステムMinFS、MemFS、ThinFS(Go言語のFAT)およびBlobfs
  • FVMパーティションマネージャー。


アプリケーション開発では、C / C ++のサポート、Dartが提供され、Rustはシステムコンポーネントでも許可され、Goはネットワークスタックで許可され、Pythonは言語アセンブリシステムで使用されます。





システムマネージャはロードに使用され、appmgrと連携して初期ソフトウェア環境を作成します。Sysmgrとbasemgrは、それぞれブート環境とユーザー環境を形成するために使用されます。



システムを保護するために、「サンドボックス」が使用されます。これは、新しいプロセスにカーネルオブジェクトへのアクセスを許可せず、さらに、それらにメモリが割り当てられず、コードが実行されません。リソースへのアクセスは、使用可能なアクセス許可を定義する名前空間システムによって処理されます。サンドボックスは、IPCを介して他のコンポーネントと対話できる特殊なコンポーネントの作成を可能にするフレームワークを使用します。






All Articles