1

私は最近、大規模なプロジェクトを開始しました... 独自の自家製 OS を作成します。思ったより大変でしたが、何とか使えるようになるまで頑張りたいと思います。VirtualBox マシンでブートローダーを動作させることができましたが、次のステップで行き詰まっています。ブートローダーに第 2 ステージをロードしようとしていますが、それをメモリにロードして実行する方法がわかりません。GRUB ブートローダーの使用を検討したことがありますので、お勧めしないでください。可能であれば、コード例は本当に役に立ちます。問題があれば、Ubuntu で NASM を使用しています。どんな助けでも大歓迎です。

4

2 に答える 2

1

最初に、ブートローダーで少なくとも単純なファイル システムのサポートが必要です。ブートローダーがフル機能のファイル システムをサポートするのが難しい限り、いくつかのトリックが可能です。

  1. 非常に単純なファイル システムのサポートを作成します。たとえば、ブート デバイスのルート ディレクトリから特定の名前のファイルを検索します。

  2. または、第 2 段階のバイナリ用にいくつかの物理セクターを予約し、そこから直接読み取ります。

必要な 2 番目のサービスは、実行可能ファイルの読み込みと実行です。最も簡単な解決策は、DOS .com ファイルのように、メモリのプレーン バイナリ イメージを使用することです。

そのため、ブートローダーはディスクから 1 つの大きなプログラムをロードして、メモリに配置して実行することができます。このより大きなプログラムには、ファイル システムのサポートと複雑な実行可能ファイルのロード/実行を提供するのに十分なスペースが確保されています。より単純なケースでは、この実行可能ファイルにカーネル全体が含まれており、追加のモジュールをロードせずに直接起動することができます。

于 2013-10-24T17:09:43.773 に答える
0

本当に GRUB を使用したい場合は、マルチブート対応のカーネル ファイルを作成する必要があります。仕様はここにあります: http://www.gnu.org/software/grub/manual/multiboot/multiboot.html

于 2013-10-24T17:10:30.463 に答える