보스 (보안이있는 빔 기반 운영 체제)는 Rust와 함께 Erlang에서 작성된 개념 증명 운영 체제입니다. 독특한 기능은 다음과 같습니다.

이 프로젝트는 중요성을 줄이기 위해 다음을 달성하기 위해 노력합니다.
예. Erlang은 매우 멋진 기능 (낮은 수준) / 객체 지향 (높은 수준) 동시 언어입니다. Erlang은 여러 코어, 프로세서 또는 기계에서 거의 쉽게 조정하는 코드를 쉽게 작성할 수 있습니다. Erlang의 기존 구현 (특히 공식 빔 가상 머신)은 단일 코어 및 멀티 코어 작업 모두에서 매우 성능이 있습니다. 이 구현은 아닙니다. 전혀 그렇지 않습니다. 그러나 그것은 작동하고 시작점입니다!
이 프로젝트의 기초는 베어 하드웨어에서 실행되는 다중 프로세싱 인식 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 .현재 구현이 가장 빠르지는 않지만 일을 작동시키는 출발점입니다.
시동시 에뮬레이터는 초기 에뮬레이터 구성이 포함 된 Boss Base Image ( BOSBAIMA.TAR )를로드하고 기능 OS를 부트 스트랩하기에 충분한 빔 모듈 만 있습니다. OTP의 kernel 앱과 유사합니다.
앞에서 말했듯이, 명확한 커널 사용자 공간 분할은 없습니다. 대신, 보스는 Erlang/OTP의 기초를 형성하는 감독 트리 모델을 사용합니다.
에뮬레이터 :
기본 이미지 :
"사용자 랜드":
현재 OS는 화면에 아무것도 표시되지 않습니다. 대신 직렬 포트에서 출력을 참조하십시오. 닉스와 그냥 스크립트는 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감사합니다 :