さびに書かれたオペレーティングシステム。
OSを構築するには、必ずnightly錆の構築を使用してください。これは、 nightlyビルドでのみ利用可能な不安定なフラグとプロパティの使用のために必要です。
注:ターゲットは
.cargo/config.tomlで指定されています。
cargo build注:ターゲットをカスタム用にコンパイルすると、
--target <target>フラグを使用してターゲットをオーバーライドできます。
cargo build --target x86_64-fractal_os.json起動可能な画像を作成するために、ブートローダー依存関係を使用しています。同様に、 bootimageツールを使用してカーネルとブートローダーをコンパイルし、それらをリンクします。
Bootimageがインストールされていることを確認してください。
cargo install bootimage注:BootImageを実行してブートローダーを構築するには、
llvm-tools-previewRustupコンポーネントをインストールする必要があります。
rustup component add llvm-tools-preview依存関係とツールがインストールされた後、貨物ブートイマージを実行して起動可能なディスクイメージを作成できます。
cargo bootimage起動可能な画像ファイルを生成した後、QEMUなどのエミュレータでFractalを簡単に実行できます。
qemu-system-x86_64 -drive format=raw,file=target/x86_64-fractal_os/debug/bootimage-fractal_os.binBootimageランナーの助けを借りて、貨物ランナーでそれを実行することもできます。
cargo run上記は、起動可能な画像の最後のビルドを指し、Qemuのインスタンスを開始します。特定のターゲットを提供し、QEMUオプションを通過することもできます。
cargo run --target < target > -- [QEMU options]その後のすべて-- Qemuに渡されます。
Fractalosのカスタムテストフレームワークを実行するには、貨物テストコマンドを実行できます。
cargo testこれにより、すべてのユニットと統合テストが実行されます。
注:統合テストは
/testsディレクトリの下に配置されていますが、ユニットテストは/srcコンクリート実装ファイルに自己完結型です。
カーネルは、 mem実装とともにcompiler_builtins Crateを使用しています。ただし、関数は非常に最適化されていません。現在、この問題に対してオープンなPRがあるため、 memcmpやmemcpyなどの機能の独自の実装を使用するか、このPRが統合されるまで待機する必要があります。
EEE(Electric and Electronic Engineering)のバックグラウンドを持つソフトウェアエンジニアとして、私は常に、物事をチェックするものを知るのが大好きです。すべてのハードウェアと一緒にオペレーティングシステムがどのように機能するかを知るためのより良い方法、そしてソフトウェアはあなた自身のものを書く以外にありますか?
クリーンなオペレーティングシステムのすべての要素を作るものを探求すると同時に、私も錆を学んでいます。とても楽しいと思います。
これらは、実装される途中のいくつかの必需品です。順番ではありません。