カフェインによって燃料を供給した私の最初のOS。
これは学習プロジェクトであり、どこまで進むかを確認します。 「カフェインに燃料を供給された」と言うとき、私は文字通りカフェインを意味し、新しいOSビルのフレームワークではありません。しかし、それはOSビルのフレームワークのかなりクールな名前です。
私はこのプロジェクトをubuntu18.04 LTSで実行しています。 PCでVisual Studioを使用してリモートビルドを使用していますが、UbuntuマシンでMakeFileを直接使用できます。私のOSは現在、UbuntuのVMで実行されています。間違いがBIOSとROMデータを変更することにより、間違いがコンピューターをレンガすることができるので、私はこれを「金属上」で実行していることを推奨しません。このプロジェクトを進めるために、私がインストールしたパッケージは次のとおりです。
MakeFileは、実行されるたびに同じ名前の同じ場所にISOファイルを生成します。 VirtualBoxでは、512MB RAM、VDK/VMDKなしでCaffeineosという名前のVMを作成し、光学メディアがISOファイルと「Live CD」ボックスをチェックしました。
ISOファイルがビルドごとに変更されても、VMは常に同じ場所に移動してISOを見つけてそこから起動します。
今、私はブート可能な角膜を持っています。 OS名を印刷するだけではありません。これまでのところ、私はトートリアルをフォローしていますが、このポイントを過ぎたものをカバーする人はほとんどいません。なし私はC ++を使用していると見つけました、CのみがC ++
次に構築するカーネルの次の部分は何ですか。私の推測は動的なメモリです。現在、VGAアドレスを使用してテキストを作成して画面に書き込む出力を受けています。私はまだ入力を理解していません。私が言ったように、チュートリアルは実際に起動可能な「Hello World」OSを乗り越えません。
私はRAMを検出し、SENCEを作成する値を取得しました(低Mem〜 = 640kb、Low+Hi〜 = 512MB)、私は本当に幸せです。また、const char*にuint32_tをキャストし、ポインターに配列を印刷することにより、ブートローダーから文字列を取得することができました。 gnu.orgサイトのmultiboot.h仕様を使用しています。 MultiBoot.hファイルには、Boot Loader(Grub2.02)がMultiBoot_Info_t*を介して送信する情報のブロックサイズに一致するEmmpty structおよびtypedef宣言が含まれています。ブロックサイズを知ることで、ブートローダーから必要なデータにポインターをキャストできます。