私は簡単なオペレーティングシステムを作成し、それをテストしようとしています。 VirtualBoxと8GBのフラッシュドライブをインストールしているので、それらを使用するだけだと思いました。ただし、USBドライブを起動可能にする方法がわかりません。起動可能なISOイメージの作成に関する多くのチュートリアルに従いましたが、VirtualBoxもディスクユーティリティもそれを読み取ることができません。誰かがUSBドライブを起動可能にセットアップするための実証済みの方法を教えてもらえますか?
私が持っているもの
8GBのフラッシュドライブ
VirtualBox VM
Nasmでコンパイルされたアセンブリコードから作成された.bin。
必要なもの
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_isohttp://www.acm.uiuc.edu/sigops/roll_your_own/http:/ /www.brokenthorn.com/Resources/OSDevIndex.htmlhttp://www.brokenthorn.com/Resources/OSDev1.htmlhttp://www.brokenthorn.com /Resources/OSDev2.htmlhttp://www.brokenthorn.com/Resources/OSDev3.html
一般的な方法は、dd
を使用することです。 syslinuxブートローダー からmbr.bin
を/dev/sda
にインストールする手順は次のとおりです。
dd bs=440 count=1 conv=notrunc if=mbr/mbr.bin of=/dev/sda
ここで、/dev/sda
はターゲットデバイスです。 (of
は「出力ファイル」です。)
これをUSBドライブのデバイス名に置き換えます。
さて、あなたは本当に最小限のOSまでです。今、あなたはそれを起動するためにある種のマシンを手に入れる必要があります。
起動時に使用するマシン(ラップトップ、VirtualBoxなど)に関係なく、OSをロードして起動するためのコードを含むROM)が必要です。これは通常、BIOSのようなものです。 。これは通常、構成されたブートメディアの ブートセクター をフェッチし、そこで見つかったものを実行します。
したがって、最小限のOSをブートセクターに配置するだけで、すべて問題ありません。 OSが十分にミニマルでない場合、ブートセクターはOSをさらにロードするためのコードを必要とします。