
現代のエクソカネル
手書きのビルドシステムについて話す前に、esque.tomlに言及する必要があります。これは、カスタマイズに利用できる多数のオプションを備えた構成ファイルです。これをセットアップするには多くの時間がかかりました。そのため、現在はEsque OSを構築するための標準になっています。
cargorustcddmtools (mcopy、mmd、...)dosfstools (mkfs.vfat)python >= 3python.tomlpython.xbstrap$ sudo apt install cargo rustc binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap toml y.py 、Rustcのx.pyに触発されたユーティリティです。このディレクトリのsysrootにあるEsque.tomlファイルを使用してカーネルを構成できます。このファイルは多くのオプションを提供し、構築する前にそれを見てください。
単に使用してプロジェクトを構築できます
./y.py build
このシステムは非常に構成可能です。入力するだけです
./y.py --help
すべてのオプションを表示します。
まず、 Esque.tomlを入力し、 enable-kvm falseに変更する必要があります。
窓の上に構築することはお勧めしません。私は長年のLinuxユーザーであり、ビルドプロセス全体が設計されていますが、 winy.ps1を使用して構築することは可能ですが、最適化されていません。
Windowsでは、Linux(例: ./y.pyビルドddを実行してIMGファイルを作成する)と同じ方法で特定のy.pyコマンドのみが実行できます。したがって、2つのオプションが表示されます
これは、一部の人にとっては好ましいオプションかもしれません。このシナリオでは、WSLを使用して./y.py runを除くすべてのコマンドを実行します。
これには、上記のすべての依存関係がDependencies (On Linux)セクションに必要です
winy.ps1は、何をネイティブに実行し、何を実行しないかを決定するPowerShellスクリプトです。使用法は./y.py Eg ./winy runのカーネルを実行し、 ./winy build WSLなどを使用してカーネルの一部の部分をビルドします。
これに注意するには、executionPolicyをバイパスする必要があります。管理者の特権とタイピングでコマンドホストを開くことで、これを一時的に変更できます
Set-ExecutionPolicy Bypassこれには、WSL上の貨物とRUSTCを除き、上記のすべての依存関係が必要です。 Windows上に貨物、RUSTC、およびtarバイナリが必要です。 Rustup binary rustup.rsを使用して、依存関係を簡単に設置することができます
WSLで次のコマンドを実行します(ubuntuを想定):
$ sudo apt install binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap tomlオペレーティングシステムは、依存関係のないものに近い必要があります。残念ながら、このシステムは合計2つの木枠に依存します。
bitflags
spin
私たち自身の依存関係の10以上が、 crates/サブディレクトリ内で維持されています。これらの依存関係には、タールローダーなどが含まれます。
std::sync::{Mutex,...}の代替品です。これは、ほぼすべての主要なOsdevプロジェクトで使用される非常に役立つ木枠です。この木枠は将来落とされる可能性があります。 それはより大きなバイナリを生成するかもしれませんが、たとえば、それはまだ剥がれた後も小さなものを生成します。現在のカーネルのサイズはわずか300kで、私には受け入れられます。ブートローダーは、その巨大な「uefi」依存関係により、約270kの大きさです。
Esqueは、外観のようなシステムである一方で、LinuxとWindowsの側面を統合しようとするカーネルです。エクソカネルは、基本的なものだけを提供するカーネルであり、追加のもの(ネットワークスタックなど)はモジュールを介してロードされます。
Linuxでソフトウェアが非常に利用できるため、Esqueはそれと多少互換性があることを目指しています。 fake-rootの使用により、ファイルシステムの互換性を実現します。 2つのメジャーがあります。本当のルートと偽の根。偽のパスの例は/home/user/ or /bin/*です。実際のルートパスは、デバイス:パススキームから始まります。例: initramfs:/myfile 、 C:/Binaries/* 、 B:/BOOT/EFI/BOOTX64.EFI C:/Users/User/ or proc:/CpuInfo 。
Linux syscallsは実際の場所(0、1、2、3、4 ...)にあり、エスクのSyscallsは(sys_num + 0x1000)にあります
はい - そしていいえ。 Esqueには、アプリケーション用の3つの異なる仮想「スペース」があります。それらのうちの2つだけが本物です。がある
私は、このようなカーネルで時間を使うことをいとわない多くの人がいないことを理解しています。どんなに大きくても小さくても、私はまだ喜んで貢献します。寄付ファイルを読んで、ドキュメントディレクトリのファイルをご覧ください
initramfsでは、現在の時点で、ディレクトリはサポートされていません。 initramfs/ sub -directoryにファイルを配置するだけで、新しいinitramfsを作成できます。次に、 ./y.py initramfsを使用して、完成したinitramfsはbuild/initramfs.tarにあります。ブートローダーは、このファイルがルートパーティションにあることを期待しています。
.systemで終了するすべてのファイルは、initramfsによってロードされます。 Said .system Filesがファイルシステムをロードすると予想されます。
安全でないコードのないオペレーティングシステムが不可能であることは事実ですが、ここで制限しようとしました。いつでも、
./y.py count-unsafe
コードの安全でない性に関する情報を表示する呼び出される場合があります。執筆時点で、次の出力が生成されます。
A total of 52 occurences have been found (1641 LOC, 0.* percent Percent)
alloc Crateをサポートします