コンパイルされたアセンブリコードをUSBデバイスのブートセクタに移動します。

コンパイルされたアセンブリコードをUSBデバイスのブートセクタに移動します。

私は簡単なオペレーティングシステムを書いてそれをテストしようとしています。 VirtualBoxがインストールされており、8GBのフラッシュドライブもあり、ただ使用しても構いません。しかし、USBドライブを起動可能にする方法がわかりません。起動可能なISOイメージを作成する方法については多くのチュートリアルに従いましたが、VirtualBoxとディスクユーティリティの両方を読むことはできません。誰かがUSBドライブを起動可能にする検証済みの方法を教えてもらえますか?

私が所有しているもの

  • 8GBフラッシュドライブ

  • VirtualBox 仮想マシン

  • .binはnasmを使用してコンパイルされたアセンブリコードから生成されました。

私は必要です

  • USBデバイスのブートセクタを埋める方法に関する簡単で明確な情報

  • .bin以外のファイルが必要な場合は、正しい方向にスワイプ

既存のコード

;*********************************************
;   Boot1.asm
;       - A Simple Bootloader
;
;   Operating Systems Development Tutorial
;*********************************************

org     0x7c00              ; We are loaded by BIOS at 0x7C00

bits    16                  ; We are still in 16 bit Real Mode

Start:

    cli                 ; Clear all Interrupts
    hlt                 ; halt the system

times 510 - ($-$$) db 0             ; We have to be 512 bytes. Clear the rest of the bytes with 0

dw 0xAA55                   ; Boot Signature

私がフォローしたチュートリアル

http://www.quilime.com/code/bootable_iso http://www.acm.uiuc.edu/sigops/roll_your_own/ http://www.brokenthorn.com/Resources/OSDevIndex.html http://www.brokenthorn.com/Resources/OSDev1.html http://www.brokenthorn.com/Resources/OSDev2.html http://www.brokenthorn.com/Resources/OSDev3.html

答え1

一般的なアプローチは次ddのとおりです。syslinuxブートローダmbr.binにインストールするには/dev/sda

dd bs=440 count=1 conv=notrunc if=mbr/mbr.bin of=/dev/sda

ここに/dev/sdaターゲットデバイスがあります。 (of「出力ファイル」です。)

これをUSBドライブのデバイス名に変更できます。

答え2

いいですね。最小限のオペレーティングシステムをインストールしました。今始めるには、ある種のマシンが必要です。

どのコンピュータ(ノートブック、VirtualBoxなど)を使用しても、起動時にオペレーティングシステムをロードして起動するためのコードを含むROMが必要です。これは通常BIOSに似ています。これは一般的に単に取得されますブートセクタブートメディアを設定し、そこで見つかったすべてを実行します。

したがって、最小限のオペレーティングシステムをブートセクタに配置するだけです。オペレーティングシステムが十分にミニマリストでない場合は、ブートセクタにより多くのオペレーティングシステムをロードするコードが必要です。

答え3

私はこれがあなたが要求したものではないことを知っていますが、VirtualBoxで.binファイルを起動する簡単な方法があります。

まず、VirtualBox仮想フロッピーディスクである.vfdファイルを作成する必要があります。空の .vfd ファイルを作成するには、シェルで次のコマンドを実行します。

$ head -c 1474560 /dev/zero > bootloader.vfd

次に、コンパイルされた.binを.vfdファイルに含めるようにシェルに入れます。

$ dd status=noxfer conv=notrunc if=[bin_name].bin of=bootloader.vfd

これで仮想フロッピーディスクが作成されました。しかし、次に何をすべきですか?

VirtualBoxで新しい仮想マシンを作成します。タイプはギターを選択し、バージョンはDOSを選択します。ハードドライブは必要ありません。

仮想マシンを作成したら、その設定に移動して[ストレージ]タブに移動して、出力.vfdファイルをフロッピーディスクとして追加します。

それだけです!

関連情報