2011-01-14 7 views
6

sto provando a scrivere un boot loader (ciao world sort). sto usando Bochs per la simulazione (piattaforma Linux-Ubuntu). Ma non riesco a creare un iso avviabile per il mio file binario. Anche se nel tutorial VFD (disco floppy virtuale) viene utilizzato ma è per la piattaforma Windows. Ecco il mio codice per il bootloader (solo per il test)Come creare un iso avviabile (non cd o flash drive) per testare il proprio boot loader?

;********************************************* 
; 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 

ho provato master ISO su Ubuntu. Sta convertendo il file binario in ISO ma non in ISO avviabile. Bochs sta mostrando errore "cd is not eltorito" che ho cercato su google e trovato come standard per ISO avviabile. Quali cose aggiuntive devo aggiungere ad esso per renderlo avviabile. ho già aggiunto la firma di avvio alla fine. Qualcuno può suggerire un'applicazione affidabile per rendere ISO avviabile su Ubuntu? Il mio lavoro è bloccato a causa di questo .... O sono sicuro che molte persone devono essere coinvolte nello sviluppo del sistema operativo su piattaforma Linux. Come fai a testare le persone?

Ho creato un'unità flash avviabile con Unetbootin con l'iso del mio programma bootloader. passato a Virtual-box e distorto un po 'per l'avvio da pendrive, ma continua a mostrarlo per essere non avviabile. Penso che qualcuno abbia detto correttamente che hai bisogno di tanta pazienza nello sviluppo del sistema operativo.


: uff, infine, il mio programma del bootloader corse ...
immagine floppy virtuale ho usato per avviare il mio programma sulla scatola virtuale. Ecco i passaggi in caso qualcuno stia lottando con esso.
1.Create boot.asm che hanno il vostro programma bootloader.
2.Compile con nasello. nasm -f bin boot.asm -o boot.bin.
3.sudo mkfs.msdos -C/home/nomeutente /floppy.img 1440
4.sudo chown nome utente ./floppy.img. link text
5.Copia con dd. dd if =./boot.bin di =./floppy.img.
6. Eseguire VirtualBox e selezionare floppy.img come dispositivo di avvio nella nuova macchina virtuale.
PS: puoi anche collegare floppy.img al "loop" del dispositivo e montarlo come un vero dischetto.

+1

Possibile duplicato di [Creazione di un'immagine ISO avviabile con bootloader personalizzato] (https://stackoverflow.com/questions/34268518/creating-a-bootable-iso-image-with-custom-bootloader) –

risposta

-1

uno script molto semplice farà questo in Linux, come di seguito: -

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 

L'unità floppy è composto come di seguito: -

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

e

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

e poi hai il file system

mkdosfs (or whatever system you want) -C floppy.img 1440 

Se aiuto ned per le finestre, me lo faccia sapere :)

+0

come lo facciamo in Windows? POWERISO può realizzare questo? – ASHUTOSH

+1

'dd if = boot.bin di = floppy.img skip seek = 1 count = 1339' sembra molto sbagliato. Primo 'skip' richiede un parametro, ma nessuno è specificato. salta il numero di blocchi sul file di input (boot.bin) ma boot.bin è solo 512 byte, quindi non ha senso. La dimensione del blocco predefinito per DD è 512, quindi count = 1339 sembra sbagliato. Vedo che è 2879 (per floppy da 1,44 MB). C'è una parte di me che crede di voler saltare il primo blocco nell'immagine del file di output (floppy) e scrivere 0 per riempire un'immagine del disco. Questa sembra una soluzione ragionevole 'dd if =/dev/zero di = floppy.img seek = 1 count = 2879' –

+0

Sono anche confuso da' mkdosfs -C floppy.img 1440'. Questo fallirà se l'immagine del disco esiste già. Ed esiste già perché è stato creato con i precedenti comandi _DD_. –

1

Tra tutte le posizioni di memoria/metodi di recupero, CD-ROM/El-Torito è la stravagante (e non fatemi parlare su Mac CDROM ibridi filesystem)

Con floppy, disco rigido/USB o PXE -TFTP, è sufficiente scrivere il codice oggetto nel primo settore o, in caso di tftp, solo download-and-execute. Non può essere più facile con questi.

+0

Questo è ciò che ho anche adesso dopo aver provato tutti i tipi di s/w per rendere avviabili iso e flashdrive per 3 giorni. Un semplice comando dd è quello che sembra essere un salvavita ... :) – Terminal

+1

Non c'è bisogno di usare 'dd' e la sua sintonia impacciata quando 'cat>' e 'dd_rescue' fanno. dd è proprio come eltorito .. – user562374

0

Prova WinISO, funziona perfetto per me.

+2

Potrebbe essere un commento. – Robert

Problemi correlati