3

ここでOS開発チュートリアルをいじっていました。ただし、開発プラットフォームとしてWindowsをベースにしているため、仮想フロッピードライブを搭載した同等のソフトウェア(または何らかの方法)があるのではないかと考えていました。

4

2 に答える 2

3

イメージをマウントするだけでハードウェアが魔法のようにエミュレートされるという、あまりにも一般的な誤解があります。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は実際には、ファイルブラウザに移動して表示できるファイルです。これは、実際のフロッピードライブと通信するために使用されるカーネルによって作成された抽象化ファイルです。

于 2012-05-22T07:25:56.407 に答える
1

仮想フロッピードライブは、Bochsが起動できる仮想ディスクを作成するためにそのチュートリアルでのみ使用されているようです。Linuxは、実際にはこの点でより柔軟性があります。使用する必要があるのはループデバイスです。これをBochsで使用する方法はわかりませんが、ドキュメントを読む必要があります:)

于 2012-04-15T03:33:40.387 に答える