ここでOS開発チュートリアルをいじっていました。ただし、開発プラットフォームとしてWindowsをベースにしているため、仮想フロッピードライブを搭載した同等のソフトウェア(または何らかの方法)があるのではないかと考えていました。
2 に答える
イメージをマウントするだけでハードウェアが魔法のようにエミュレートされるという、あまりにも一般的な誤解があります。Linuxでmountコマンドを使用してファイルシステムイメージをマウントすると、そのイメージ内のファイルが、マウント先のディレクトリに表示されるだけです。フロッピードライブのエミュレーションはありません。Linux用のフロッピーエミュレータを知りません。このスレッド、特に現在スレッドの最後にある私の投稿を読んでください。マウントとエミュレーションの違いについて説明しています:http: //forum.osdev.org/viewtopic.php? f=1&t=21589。
QEMU、Bochs、およびVirtualBoxは、実際にはフロッピードライブを仮想マシンにエミュレートすることに注意してください。これは、ハードウェアのハイパーバイザーレベルのエミュレーションです。Linux用のフロッピードライブのカーネルレベルのエミュレーションについては知りません。
ただし、dd、wxHex、mountコマンド、およびQEMU、Bochs、VirtualBoxなどの仮想化ソフトウェアやマシンエミュレーションソフトウェアを使用して、やりたいことを達成できる可能性があります。
イメージングフロッピーの例(一部のコマンドにはroot権限が必要な場合があり、「sudo」を前に付けるか、root権限の場合は「su」を介してrootシェルにドロップします):
dd if=/dev/floppy0 of=$HOME/images/my_floppy_image
次に行います:
openssl md5 $HOME/images/my_floppy_image
画像のmd5ハッシュを取得するには、もう一度画像を2番目のファイルに保存します。
dd if=/dev/floppy0 of=$HOME/images/my_floppy_image2
2番目の画像をハッシュし、それらが一致することを確認します。
16進編集用にwxHexで画像を開くことができます。ルートとしてwxHexを実行すると、ハードウェアアブストラクションファイルを開いて編集し、フロッピーディスクに直接移動することもできます(/ dev / floppy0などを開きます)。
ループバックデバイスを介してイメージをマウントします。
sudo mount -o loop $HOME/images/my_floppy_image /media/floppy
フロッピーディスクまたはイメージの最初のセクター(最初の512バイト)はVBR(ボリュームブートレコード)であり、ブートローダーを含める必要があります。これは技術的にはファイルシステムの一部であるため、ファイルシステムのみをマウントするループバックデバイスからこれにアクセスできます。代わりに、ループバックデバイスを介してハードディスクイメージ内のパーティションをマウントし、ブートローダーがMBR(マウントされたパーティションのファイルシステムの外部)にある場合、ループバックデバイスからブートローダーにアクセスできません。 、単一のファイルシステムのみをマウントします。
VBRのみを取得する:
dd if=/dev/floopy0 of=$HOME/images/my_floppy_VBR bs=512 count=1
もちろん、ddを逆にして、イメージからフロッピーディスクまたは他のイメージに移動することもできます。
画像をフロッピーにブローします。
dd if=$HOME/images/my_floppy_image of=/dev/floppy0
VBRのみをフロッピーに吹き込みます。
dd if=$HOME/images/my_floppy_VBR of=/dev/floppy0 bs=512 count=1
または、上記が吹き飛ばされたくないものを吹き飛ばす場合は、次のようになります。
dd if=$HOME/images/my_floppy_VBR of=/dev/floppy0 bs=440 count=1
あなたがしなければならないことは何でもするだけです。
画像からVBRを取得します。
dd if=$HOME/images/my_floppy_image of=$HOME/images/my_floppy_VBR bs=512 count=1
画像から最初の440バイトを取得する:
dd if=$HOME/images/my_floppy_image of=$HOME/images/my_floppy_first_440 bs=440 count=1
上記の例から、VBRだけ、または特定のソース(フロッピーまたは画像)からの最初の440バイトだけを画像に吹き付けて、画像を編集する方法を理解できるはずです。「if」は「入力ファイル」を表し、「of」は「出力ファイル」を表します。(イメージではなく)実際のフロッピーディスクでさえ、ファイル(/ dev / floppy0など)によって参照されることに注意してください。はい、/ dev / floppy0は実際には、ファイルブラウザに移動して表示できるファイルです。これは、実際のフロッピードライブと通信するために使用されるカーネルによって作成された抽象化ファイルです。
仮想フロッピードライブは、Bochsが起動できる仮想ディスクを作成するためにそのチュートリアルでのみ使用されているようです。Linuxは、実際にはこの点でより柔軟性があります。使用する必要があるのはループデバイスです。これをBochsで使用する方法はわかりませんが、ドキュメントを読む必要があります:)