Question

J'écris un noyau d'amorçage et pour moi-même et à la fois d'amorçage et le noyau sera graver sur un CD-R et fonctionnera comme un CD-live. Il n'est pas un CD-Live linux ou autre chose, est tout à fait mon propre bootloader et le noyau. Je ne veux pas utiliser d'autres booloaders (c.-à-grub par exemple) alors s'il vous plaît ne me suggérer de ne pas les utiliser.

Voici ma question: Dans mon bootloader code ASM, je veux charger mon noyau et l'entrée du noyau dans la RAM à partir du CD-ROM (pas de disque dur ou une disquette), et laisse supposer que nous savons où le noyau situé exactement sur le CD-ROM (numéro de secteur). Pour autant que je sais que je dois utiliser int 0x13, AH = 02h qui liront les secteurs de lecteur dans la RAM. Pour utiliser ce service d'interruption, je dois mettre deux registres que je vais énumérer ci-dessous: Paramètres: AH 02h Secteurs AL Pour lire Count CX Piste + Secteur / Voir la remarque DH Head DL lecteur ES: BX tampon Adresse pointeur

Mon problème est de DL et de l'ordre DH.In pour pointer 1er disque dur à lire, nous pouvons le mettre à 80h ou, pour disquette, nous pouvons le mettre à 00h. Mais je veux lire à partir du CD-ROM et je ne sais pas quelles sont les valeurs que je dois utiliser pour DH et DL.

Pour lire à partir du CD-ROM deux secteurs dans la RAM est une interruption droite (int 0x13)? si oui, quelle valeur dois-je avoir à mettre DH et DL.

Cordialement, Pooria.

Était-ce utile?

La solution

Pour le BIOS pour charger votre secteur d'amorçage à partir du CD, vous aurez besoin de faire le CD amorçable en utilisant le " El Torito ".

Une fois que vous utilisez, vous avez deux options
une. Emulation - le BIOS émule soit une disquette ou un disque dur, et vous pouvez lire votre noyau à travers le INT13 appelle soit avec dispositif 00 ou dispositif 80.
b. Le dispositif n'émule pas, et vous pouvez lire directement à partir du CD en utilisant la fonction INT13 ExtendedRead.

Pour voir comment cela se fait, regardez le Linux "ISOLINUX" chargeur - iSOLINUX.ASM

Pour fournir un point de départ plus spécifique à votre question, spécifications El Torito, section 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.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top