Domanda

Sto scrivendo un bootstrap e kernel per me e sia bootstrap e kernel sarà masterizzare su un CD-R e funzionerà come un CD-live. Non è un linux CD-Live o qualcosa d'altro, è totalmente mia bootloader e del kernel. Non voglio usare altri booloaders (vale a dire GRUB) quindi per favore non mi suggeriscono di usarli.

Ecco la mia domanda: Nel mio codice ASM bootloader, voglio caricare il kernel ed ingresso kernel nella RAM da CD-ROM (non dal disco rigido o floppy disk), e lascia supporre che sappiamo dove trova esattamente il kernel sul CD-ROM (numero di settore). Per quanto ne so devo usare int 0x13, AH = 02h che leggere i settori da Drive nella RAM. Per poter utilizzare questo servizio interrupt, devo impostare paio di registri che ti elenco sotto: parametri: AH 02h AL Settori di leggere Conte CX pista + SETTORE / Si veda l'osservazione DH capo DL unità ES: Indirizzo BX puntatore al buffer

Il mio problema è di circa DL e l'ordine DH.In per puntare al 1 ° disco rigido di leggere da, siamo in grado di impostarlo su 80h o, per floppy disk possiamo impostare su 00h. Ma voglio leggere da CD-ROM e non so quali valori devo usare per DH e DL.

Al fine di lettura da CD-ROM paio di settori in alla RAM è un interrupt destra (int 0x13)? Se sì, quale valore dovrebbe devo mettere per DH e DL.

Saluti, Pooria.

È stato utile?

Soluzione

Per il BIOS per caricare il tuo settore di avvio da CD, avrete bisogno di rendere avviabile CD utilizzando il " El Torito "standard .

Una volta che si utilizza, si hanno due opzioni
un. Emulazione - il BIOS emula sia un floppy o un disco rigido, e si può leggere il kernel attraverso l'INT13 chiamate con entrambi i dispositivi 00 o dispositivo 80.
b. Il dispositivo non emulare, e si può leggere direttamente dal CD utilizzando la funzione di INT13 ExtendedRead.

Per vedere come questo è fatto, guardare il loader di Linux "ISOLINUX" - ISOLINUX.ASM

Per fornire una più specifica punto di partenza per la tua domanda, El Torito spec, paragrafo 5.3:

Once the system jumps to segment:0, the program can retrieve its boot
information by issuing INT 13, Function 4B, AL=01.  After the boot process
has been initiated the INT 13 Extensions (functions 41-48) will access the
CD using 800 byte sectors and the LBA address provided to INT 13 is an
absolute sector number. This gives any program running in no emulation mode
the ability to locate the boot catalog, and any other information on the
CD, without providing a device driver.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top