2016-07-28 11 views
2

これは、OSの固有の単純なアセンブリプログラムで、私のPCのアーキテクチャで動作するように設計されています。 NASMのLinux版でコンパイルされています。USB(ARMx86)から512バイトのブートローダをブートする方法

私はUSBに入れようとしましたが、BIOSでUSBから起動するように選択したときに、USBから起動しようとしました。そして沈黙。ハードウェアは稼働し続けましたが、私のプログラムは文字を画面に表示することになっていました。左上に点滅する白いカーソルが付いた黒い画面です(BIOSに属していると思います)。

多分、BIOSは自分の「ファイル」をブートセクタとしてカウントしませんでした。ここで

はUSBコンテンツである(win7のからではなく、英語でのスクリーンショットが、あなたは非常によく、簡単にそれが何であるかを理解することができます):

プロパティ

enter image description here 私はUSBドライブを作成する何かが必要ですブート可能?マスターブートレコードのようにパーティションを分割する必要がありますか?

+1

ブートローダーはMBR内にある必要があります。ディスク上のファイルではありません。また、マジックナンバーが正しいことを確認する必要があります。 – fuz

+0

あなたのタイトルはARMx64です。あれは正しいですか? –

答えて

2

数年前、私はUSBドライブから起動するはずだった起動可能なシェルエミュレータを作成しましたが、何度も問題を突き止めましたが、それを実現するためにはMBRを入れる必要がありますドライブの最初のセクタで特別なブートシグネチャを持つブートプログラムになります。512バイトの長さにする必要があります。残りのブート可能なプログラムを含むドライブ上の他のセクタをブートできます。ブートローダのコードが正しいことと、ドライブの最初のセクタにあることを確認してください。

http://wiki.osdev.org/Bootloader

http://forum.osdev.org/viewtopic.php?f=1&t=20561

また、あなたのシステムがUSBブート機能をサポートしていることを確認し、簡単にBIOSのブート設定からそれを把握することができます。

+1

独自のコードを実行する以外に何もしていない場合でも、有効なBIOSパラメータブロックがあることを確認することをお勧めします。私は明らかに有効なブートシグネチャを探す以外にも、ハードウェアのいくつかを見てきました。 BPBがないので、起動しなくてもエラーは発生しません。 –

関連する問題