...ええと...ブライトシステムへようこそ?
これは、ゼロから完全に書かれたX86_64 OS(依存関係なし)で、本当にあなたが作成しました。
このプロジェクトは、Github CodeStealer、OpenaiのChatGpthief、または他の同様のコンテンツを盗む予測アルゴリズムの支援なしで作成されました。
TLDR:ミッドライブライトと部分的な災害!楽しい!
_oldは、Phil-Oppの優れたライブラリと他のいくつかの機能を使用する機能的なカーネルがあります。コードはあまり文書化されていませんが、それほど複雑ではないため、かなり読みやすいはずです。それは私の高校で素晴らしいOS開発フォーラムのために作られました。
他のすべては私のWIP依存関係のない書き換えです。現在、64ビットモードに入ることができるBIOSブートローダーのみがあります。次のステップは、ELFパーサー、次にELFローダーを実装してから、カーネルをロードすることです(これは単にELFファイルになります)。
BSの新しいバージョンは、さらなる研究のためのリソースを含む非常によく文書化されています。私の目標の一部は、将来のプログラマーが参照して学ぶためのこの優れたデモコードを作成することです。
すべてのフォルダーにはreadmeがあり、うまくいけば自明であることがよくありますが、このレポの目次が次のとおりです。
boot :BSのブートローダーのすべての箱。kernel :BS 'カーネル(現在、ELFローダーが書かれるまで空です)。lib :BSが使用するヘルパーライブラリ。これには、ビルドツール、Frieren(WIP ELFローダー)、および共通のライブラリ(まもなく複数のクレートに分割されます)があります。これらのクレートは、BSの複数のクレートで使用されているため、独自のライブラリがあります(たとえば、ブートローダーはELFをロードしますが、最終オペレーティングシステムも同様に可能です)。qemu :BSを最終ディスクに組み込み、QEMUで起動する木枠。依存関係を持つBSの古い、より機能的なバージョンの場合、 _oldフォルダーでcargo rを実行します。
新しいバージョンは私のカスタムビルドシステムであるBargoを使用するため、最初にインストールする必要があります(恐怖ではない - Bargoには1つの依存関係、依存関係のないTOMLパーサーのみがあり、数秒でコンパイルする必要があります)。 Bargoは貨物の周りのラッパーのようなものであるため、ほとんどまったく同じ方法で使用できます - bargo b構築する、走るbargo r 、リリースモードのために-r 。
BSが貨物の代わりにBargoを使用する理由を疑問に思っている場合、それは貨物に必要なすべての機能がないためです。ブートローダーはカーネルとOSとは異なるターゲットを持っているため、ビルド後のスクリプトと、複数のターゲットにbuild-stdを使用する機能が必要です。私は何時間も試しましたが、バニラ貨物にこれを実装するための正気な方法を思い付くことができませんでした。
両方のバージョンがQemuで実行されるため、最初にインストールされていることを確認してください。あなたが手動でそれを構築して実行したい場合、フードの下で使用されているコマンドは本質的にこれに要約されます: cargo b; qemu-system-x86_64 -drive format=raw,file=target/bs.bin,index=0 。古いバージョンの場合、 target/bs.binの代わりにファイル_old/disk.binをロードする必要があります。