0

次のバイトを disk.img という名前のファイルに書き込みます

FA 8D 36 1B 7C E8 01 00 F4 AC 3C 00 74 0C B4 0E 
BB 07 00 B9 01 00 CD 10 EB EF C3 4D 61 79 20 74 
68 65 20 66 6F 72 63 65 20 62 65 20 77 69 74 68 
20 79 6F 75 21 0D 0A 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
..enough zero to make the size of file 512bytes.
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA

上記のバイトは、ブート セクタにロードするときに機能する適切な命令とマジック ナンバーです。しかし、「qemu-X86_64 disk.img」を実行すると、エラーが発生します。

disk.img のロード中にエラー -13

問題を解決する方法を知っている人はいますか、またはこのエラーにつながる可能性のある理由は何ですか?

ありがとうございました!

4

1 に答える 1

0

正しい場所に 55 個の AA があるという理由だけで、画像を何でも埋めて、それが機能することを期待できるかどうかはわかりません。ブートローダーを作成しているように見えるので、コードが正しい場所で実行されていると考えていることを確認してください。オフセット 0x7C0 にある必要があります (これを正しく覚えている場合は、再確認してください)。アセンブリ ファイルの先頭にある [org 0x7c0] を使用して設定します。

また、512 バイトのファイルしか持てないかどうかもわかりません。dd if=/dev/zero of=disk.img bs=512 count=2000 のようにそれより大きなハードドライバーを作成してから、再度 dd を使用してブートローダーをディスクの最初の部分にコピーしてください。

また、-hda または -fda タグを使用する必要があるため、qemu -hda disk.img にする必要があります。

于 2012-06-14T03:30:07.613 に答える