オペレーティングシステムを開発しようとしています。OSDevのBarebones チュートリアルを完了しましたが、マルチブートに関する問題がまだ残っています。
私が理解しているように、チュートリアルに従ってマルチブート イメージを作成すると、ELF 形式のバイナリ ファイルが作成されます。オプションを指定すると、この ELF 実行可能ファイルが QEMU によってメモリにロードされ-kernel
ます。したがって、メモリ内に単一の実行可能プログラムがあり、エントリ ポイントがあります。いくつかの関数とライブラリが並んでいます。記憶には他に何もありません。また、セクタを読み書きできるフロッピーまたはディスク イメージもありません。これは主に、その点に関して QEMU に何も指定していないためです。
しかし、私が達成したいのは、QEMU が ELF 実行可能ファイルをロードした後、セクターを読み書きできるディスクまたはフロッピー アーキテクチャが必要なことです。また、そこからいくつかのユーザープログラムをロードしたり、ファイルシステムをセットアップしたりしたいと考えています。これまでのところ、私が考えているのは次のとおりです。
qemu-system-i386 -kernel myKernel.bin -fda myDisk.image
または、myKernel.bin
ファイルを取得し、512 バイトに揃えられるまでゼロで埋めてから、残りのディスク イメージを追加する必要があります。
私の質問は、QEMU でこの機能を実現するにはどうすればよいかということです。ディスク ドライバの作成に取り掛かる前に、このような作業が可能かどうかを知る必要があります。無理なら別のアプローチも考えられますが、今の考えは以上です。私はすでに調べましたが-initrd
、それは私が望むものではありません。また、QEMU によって RAM にファイルをロードしたくありません。代わりに、ディスク イメージを自分で操作したいと考えています。それを行う方法に関する提案はありますか?