Boss(セキュリティを備えたBeamベースのオペレーティングシステム)は、Rustと一緒にErlangで記述された概念実証オペレーティングシステムです。その特徴的な機能には次のものがあります。

このプロジェクトは、重要性を減らす順に、以下を達成するよう努めています。
はい。 Erlangは、非常にクールな機能的(低レベルで) /オブジェクト指向(高レベルで)同時言語です。 Erlangは、複数のコア、プロセッサ、さらにはマシンでほぼ楽にスケーリングするコードを簡単に書き込むことができます。 Erlangの既存の実装(特に、公式のBeam仮想マシン)は、シングルコアおよびマルチコア操作の両方で非常にパフォーマンスがあります。この実装はそうではありません。まったくそうではありません。しかし、それは機能し、出発点です!
このプロジェクトの基礎は、ベアハードウェアで実行されるマルチプロセッシングを認識したErlang VMであるエミュレーターです。この目的に到達するために実装しなければならない最小限を実装するだけです。たとえば、いくつかのACPIテーブルを解析します(マルチプロセッシングが機能するために必要なため)(または、少なくともこの機能が実際に実装されると)、AML bytecodeを実行しません - そのタスクは実行されるビームバイトコードに任されています。エミュレータは、X86_64 ISA、UEFI、ACPI 2.0+のみをサポートします。つまり、2010年以降のマシンで実行されます。エミュレーターは英国が英国のもの(スケジューリングとIPC)を実装するため、マイクロカーネルであると主張することができますが、それは私のプロジェクトであり、名前を付けないことを好みません。
エミュレータはビームですが、ビームではありません。 Erlangの標準バイナリモジュール形式とそのバイトコード命令と互換性がありますが、それは類似性が終了する場所です。この非互換性は、隔離と能力ベースのセキュリティをビームに導入するために行われた意識的な設計上の決定です。違いの不完全なリストは次のとおりです。
% this calls the function `baz' from the module `bar' in the application `foo'
% this will only be allowed if `foo' "exports" the module `bar'
'foo:bar' : baz (). % far call
% this calls the function `baz' from the module `bar' in the current app
bar : baz (). % external call
% this calls the function `baz' from the current module in the current app
baz (). % local call Self = self (),
Self ! hello ,
receive
{ Self , hello } -> yay ,
hello -> nay
end .現在の実装は最速ではありませんが、物事を機能させるための出発点です。
スタートアップでは、エミュレータは、初期エミュレータ構成と、機能的なOSをブートストラップするのに十分なビームモジュールを含むボスベースイメージ( BOSBAIMA.TAR )をロードします。 OTPのkernelアプリに似ています。
前述のように、明確なカーネルユーザースペースの分割はありません。代わりに、BossはErlang/OTPの基礎を形成する監督ツリーモデルに行きます。
エミュレータ:
基本画像:
「ユーザーランド」:
現在、OSは画面に何も表示しません。代わりに、シリアルポートからの出力を参照してください。 NixとJust Scriptsは、シリアルポート出力を端末にリダイレクトするようQEMUに指示します。
リリースページの最新のコミットから構築されたISOをダウンロードできます。ただし、代わりにOSをゼロから作成することをお勧めします。
プロジェクトのクローン:
$ git clone https://github.com/portasynthinca3/boss.git
$ cd bossでISOを作成します:
$ nix --extra-experimental-features flakes build . # isoQEMUで:
$ nix --extra-experimental-features flakes --extra-experimental-features nix-command runプロジェクトのクローン:
$ git clone https://github.com/portasynthinca3/boss.git
$ cd bossISOを構築するには、次のことが必要です。
1.33.0でテスト)4.0.44でテスト)2.42.0でテスト)1.82.0-nightly (7120fdac7 2024-07-25) ))Erlang/OTP 27 [erts-15.0.1]でテストされた26以下は機能しません)でISOを作成します:
$ just isoQEMUでISOを実行するには、次のことが必要です。
QEMUを起動します:
$ just qemuありがとう: