Neptune OSプロジェクトの最初の実験バージョンの公開。これは、 DebianベースのLinuxディストリビューション 同じ名前で。
今日お話しするこのシステム seL4マイクロカーネル用のプラグインを開発することを特徴としています 提供することを目的としたWindowsNTカーネルコンポーネントの実装 Windowsアプリケーションの実行のサポート。
NeptuneOSについて
プロジェクトi「NTエグゼクティブ」を実装、Windows NTカーネル(NTOSKRNL.EXE)のレイヤーのXNUMXつであり、ドライバーが動作するためのNTネイティブシステムコールAPIとインターフェイスを提供します。
Neptune OSでは、コンポーネント NT Executiveおよびすべてのドライバーは、カーネルレベルで実行されません。 シノ seL4マイクロカーネルに基づく環境でのユーザープロセスとして。 NT Executiveコンポーネントとドライバーの相互作用は、seL4IPC標準を介して実行されます。 提供されているシステムコールにより、NTDLL.DLLライブラリがアプリケーションで使用されるWin32APIの実装と連携できるようになります。
NT Executiveは、Windowsカーネルドライバーインターフェイス(Windowsドライバーモデルと呼ばれる)も担当します。これには、次のような機能が含まれます。
IoConnectInterrupt
yIoCallDriver
.Windowsでは、これらはカーネルモードでロードされ、
NTOSKRNL.EXE
画像。 Neptune OSでは、すべてのWindowsカーネルドライバーをユーザーモードで実行し、標準のseL4IPCプリミティブを介してNTExecutiveプロセスと通信します。
最終目標 NeptuneOSプロジェクトから 十分なNTセマンティクスを実装することです これにより、ReactOSユーザー環境をNeptune OS、およびほとんどのReactOSカーネルドライバーに移植できます。
理論的には、開発者 バイナリ互換性を実現できるはずだと述べています 提供されているネイティブNTAPIの実装が十分に忠実である限り、ネイティブWindows実行可能ファイルを使用できます。
また、Windowsカーネルドライバーとの高度なソースコード互換性を実現できるはずです。 カーネルドライバーのバイナリ互換性を実現する上での主な障害は、多くのWindowsカーネルドライバーが標準のWindowsドライバー通信プロトコルに準拠しておらず(つまり、別のドライバーを呼び出す必要があるときにIRPを渡す)、代わりにポインターを渡し、他のコントローラーを直接呼び出すことです。 。 Neptune OSでは、ドライバーとミニドライバーのペアでない限り、常に「カーネル」を実行します。
NeptuneOS0.1.0001について
kbdclass.sysキーボードクラスドライバーとポートドライバーを含むキーボードドライバーの基本スタックをロードするのに十分なNTプリミティブを実装できたため、現時点でのプロジェクトの状態は暫定バージョンです。PS/ 2 i8042prt.sys、およびReactOSプロジェクトから取得した基本的なコマンドプロンプトntcmd.exe。
実際に機能するシェルコマンドはほとんどありませんが、キーボードスタックは安定しています。 生成されるデバッグログが多すぎるため、デバッグビルドが少し遅くなる可能性があります。
ただし、これらはコードで無効にできることが記載されています(private / ntos / incをポイントする必要があります)。 また、「beep.sys」ドライバーが含まれていることにも言及されています(これは意味がありませんが、開発者だけが理由を知っています)。これはPCスピーカーで不快な音を出し、それを聞くにはミュートを解除する必要があります。 (特にpulseaudioを使用する場合)。
すべてのコントローラーはユーザースペースで実行されます! システム全体が0.1.0001枚のフロッピーディスクに収まり、バージョンvXNUMXからダウンロードできます。 自分で作成することもできます。その手順については、次のセクションで説明します。
最後に、プロジェクトについてもう少し知りたい方は、詳細をご覧ください。 次のリンクで。
ブートイメージのサイズは1,4MBで、コードはGPLv3ライセンスの下でリリースされています。