Google開発者 数日前にリリース Linux用にコンパイルされた変更されていないプログラムを実行するメカニズムを実装する計画 オペレーティングシステム フクシア。
Linuxプログラムをユーザースペースで実行するには、 LinuxABIをサポートするための「starnix」レイヤーを提供する予定です。。 開発されたレイヤーでは、Linuxカーネルシステムインターフェイスは、ユーザースペースで実行され、Linuxプログラムからの要求を対応するFuchsiaサブシステムへの呼び出しに変換するFuchsiaオペレーティングシステムのプロセスとして起動されるドライバーに実装されます。
観察されたeプロジェクト開発中、多くのフクシアサブシステムを変更する必要があります Linuxで利用可能なすべてのシステムインターフェイスを実装します。 starnixのアーキテクチャは、Windowsを使用してLinuxシステムコールをWindowsシステムコールに変換するLinux用のWindowsサブシステムのアーキテクチャとほぼ同じです。
起こりうる脆弱性ベクトルを最小限に抑えるために、Rustにstarnixコードを実装することが計画されています■Linuxプロセスの特権をstarnixプロセスに昇格させるために使用される可能性がある。
starnixでのセキュリティを確保するために、可能な限り標準のFuchsia保護メカニズムが使用されます。
たとえば、ファイルシステム、ネットワークスタック、グラフィックサブシステムなどのシステムサービスにアクセスする場合、starnixはリクエストのみを変換し、Linux ABIをFuchsiaシステムABIに変換して、一般的なFuchsiaプロセスに適用されるのと同じ制限を許可します。
これにより、Linux固有の承認メカニズムも実装されます。たとえば、あるLinuxプロセスが別のプロセスを終了する権利を持っている状況を定義します。
Fuchsiaの開発者は、過去にLinuxアプリケーションの起動のサポートを開発しましたが、ChromeOSでのLinuxアプリケーションの起動の編成方法と同様に機能する実装を実験しました。
Linuxとの互換性のために、FuchsiaはMachinaライブラリを提供しました、これにより、Linuxプログラムは、ZirconカーネルとVirtioの仕様に基づくハイパーバイザーを使用して形成された特別な分離された仮想マシンで実行できました。
仮想化の使用は除外されていません、 Linuxシステムインターフェイスの完全な実装は簡単な作業ではないためです。
スターニックスケープに加えて、 別の仮想マシンで実行されているLinuxカーネルを使用してLinux実行可能ファイルを実行するメカニズムを作成することが可能です。。 この方法は、実装が最も簡単であると同時に、最もリソースを消費すると考えられています。
ある時点で、MicrosoftはトランスレータからLinux互換性レイヤーの開発を開始しましたが、最終的にはLinux2用のWindowsサブシステムでネイティブLinuxカーネルを使用するように切り替えました。
さらに、 FuchsiaはすでにPOSIXLite互換性レイヤーを提供しています これはFuchsiaSystemABI上で実行されます。 POSIX Liteを使用すると、一部のLinuxプログラムを実行できますが、アプリケーションコードを再コンパイルし、場合によってはソースコードを変更する必要があります。
問題のXNUMXつ POSIXLiteを使用 すべてのPOSIX関数の不完全な実装です。 プロセスのグローバル状態を変更するための呼び出し(たとえば、kill関数)を含みます。これは、プロセスのグローバル状態の変更を禁止するフクシアのセキュリティ概念と対立しています。 エクスプレス。
POSIX Liteの使用は、オープンアプリケーションを移植するプロセスで正当化されますsただし、コードにアクセスできないプログラムの起動に関する問題は解決されません(たとえば、コンパイルされたネイティブインサートを含むAndroidアプリケーションとの互換性を実現することは不可能です)。
グーグルは、フクシアプロジェクトの枠組みの中で、ワークステーションやスマートフォンから組み込み技術や消費者向け技術まで、あらゆるタイプのデバイスで動作できるユニバーサルオペレーティングシステムを開発していることを思い出してください。 この開発は、Androidプラットフォームの作成経験に基づいており、スケーリングとセキュリティの分野での欠点を考慮に入れています。
このシステムは、LKプロジェクトの開発に基づいたZirconマイクロカーネルに基づいており、スマートフォンやパーソナルコンピューターなどのさまざまなクラスのデバイスで使用できるように拡張されています。
出典 https://fuchsia.googlesource.com