2011-01-14 3 views
6

私はブートローダー(hello world sort)を書こうとしています。私はシミュレーション用にBochsを使用しています(Linux-Ubuntuプラットフォーム)。しかし私は私のバイナリファイルのためのブート可能なisoを作ることができません。チュートリアルではVFD(仮想フロッピーディスク)が使用されていますが、Windowsプラットフォーム用です。ここに私のブートローダ用コード(テスト用)独自のブートローダをテストするためのブート可能なiso(CDまたはフラッシュドライブではない)を作る方法は?

;********************************************* 
; Boot1.asm 
;  - A Simple Bootloader for testing if cd is booting or not 
; 
; Operating Systems Development Tutorial 
;********************************************* 

[BITS 16] ;tell the assembler that its a 16 bit code 
[ORG 0x7C00] ;Origin, tell the assembler that where the code will 

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 

私はUbuntuでマスターISOを試しました。バイナリファイルはISOに変換されますが、起動可能なISOには変換されません。 Bochsは、私がグーグルで見つけた、 "ブート可能なISOの標準であることが分かった"というエラーを表示しています。ブート可能にするために追加しなければならない追加のものは何ですか?私はすでにブートシグネチャを最後に追加しています。 誰でもUbuntu上で起動可能なISOを作成するための信頼できるアプリケーションを提案できますか? 私の仕事はこのために固まっています.... OR Linuxプラットフォーム上でOS開発に関わっている人は多いと思います。どのように人々はテストしますか?

私はブートローダプログラムのisoでUnetbootinでブート可能なフラッシュドライブを作っています。 はVirtual-boxに切り替えられ、pendriveから起動するためにちょっとねじれていましたが、まだ起動できないことを示しています。 誰かがOSの開発に多くの忍耐を必要としていると正しく言っていたと思います。


:ふぅは最終的に私のブートローダープログラムが走った...
私はバーチャルボックスの私のプログラムを起動するために仮想フロッピーイメージを使用していました。誰かが苦労している場合の手順は次のとおりです。
1.ブートローダプログラムを持つboot.asmを作成します。
2. nasmを使用してコンパイルします。 nasm -f bin boot.asm -o boot.bin。
3.sudo mkfs.msdos -C /ホーム/ /floppy.img 1440
4.sudo chownコマンドユーザ名 ./floppy.img。 link text
5. ddでコピーします。 dd if =。/ boot.bin of =。/ floppy.img。
6. VirtualBoxを起動し、新しい仮想マシンで起動デバイスとしてfloppy.imgを選択します。
PS:floppy.imgをデバイスのループに付けて、実際のフロッピーディスクと同じようにマウントすることもできます。フロッピー、ハードディスクの/ USBまたはPXEを使用した検索の全ての記憶場所/メソッドの中で

+1

[カスタムブートローダで起動可能なISOイメージを作成する](https://stackoverflow.com/questions/34268518/creating-a-bootable-iso-image-with-custom-bootloader) –

答えて

-1

非常に簡単なスクリプトは以下のようにLinuxではこれを行います: - :その後、

nasm -f bin -o boot.bin boot.asm 
dd if=boot.bin of=floppy.img count=1 bs=512 //for the bootloader 

dd if=boot.bin of=floppy.img skip seek=1 count=1339 //assuming a 1.44Mb floppy 

と - フロッピードライブが以下のように行われる

rm -f disk_images/myos.iso 
mkisofs -quiet -V 'MYOS' -input-charset iso8859-1 -o disk_images/myos.iso -b myos.flp disk_images/ || exit 

あなたはファイルシステムを持っています

あなたは窓のヘルプを定義さ場合

、私に知らせて:)

+0

私たちはどのようにウィンドウでそれをしますか? POWERISOはこれを達成できますか? – ASHUTOSH

+1

'dd if = boot.bin of floppy.img skip seek = 1 count = 1339'は非常に間違っています。最初の 'skip'はパラメータを必要としますが、何も指定されていません。 skipは入力ファイル(boot.bin)のブロック数をスキップしますが、boot.binは512バイトに過ぎないので意味がありません。 DDのデフォルトのブロックサイズは512なので、count = 1339は間違っています。私はそれが2879(1.44MBフロッピーの場合)であることがわかります。あなたが出力ファイル(フロッピー)イメージの最初のブロックをスキップし、ディスクイメージを書き込むために0を書き込むことを考えている私の一部があります。これは妥当な解決策のようです。 'dd if =/dev/zero of = floppy.img seek = 1 count = 2879' –

+0

私は' mkdosfs -C floppy.img 1440'と混同しています。ディスクイメージがすでに存在する場合、これは失敗します。以前の_DD_コマンドで作成されたため、すでに存在しています。 –

1

、CDROM /エルトリートは変わり者である(と私は、MacのCD-ROMファイルシステムのハイブリッドで開始されません)

-TFTPの場合は、最初のセクタにオブジェクトコードを書き込んでも、tftpの場合はダウンロードと実行だけで十分です。これらの方法では簡単にはできません。

+0

これは私がまた、ブート可能なisoとflashdriveを3日間作成するためのあらゆる種類のs/wを試した後も今信じています。簡単なddコマンドは人生の節約になるものです... :) – Terminal

+1

'dd'と'cat>'と 'dd_rescue'が行うときの厄介な構文です。 ddはeltoritoとちょうど同じです.. – user562374

0

は、それが私のために完璧に動作し、WinISOを試してみてください。

+2

コメントである可能性があります。 – Robert

関連する問題