Pregunta

Estoy escribiendo un arranque y el kernel para mí y tanto de arranque y el kernel se quema en un CD-R y funcionará como un CD-vivo. No es un CD-Live o alguna otra cosa Linux, es totalmente mi propio gestor de arranque y el kernel. No quiero utilizar otros booloaders (es decir GRUB) así que por favor no me sugieren para usarlos.

Aquí está mi pregunta: En mi código ASM gestor de arranque, quiero cargar mi kernel y la entrada del núcleo en la RAM desde el CD-ROM (no desde el disco duro o disquete), y supongamos que sabemos dónde está el núcleo situado exactamente en el CD-ROM (número de sector). Por lo que yo sé que tengo que usar int 0x13, AH = 02h que leerá sectores de Drive en la memoria RAM. Para utilizar este servicio de interrupción, tengo que configurar par de registros que voy a enumerar a continuación: parámetros: 02h AH AL Sectores de leer Conde CX + Pista Sector / Véase la observación DH Cabeza DL Drive ES: Dirección BX Buffer Pointer

Mi problema es sobre DL y el orden DH.In que apuntan al disco duro primero para leer, podemos configurarlo a 80h o, por disquete podemos configurarlo a 00h. Pero quiero leer desde el CD-ROM y no sé qué valores tengo que usar para DH y DL.

leer desde el CD-ROM par de sectores en la RAM es una interrupción derecha (int 0x13)? En caso afirmativo, ¿qué valor debería tener que poner para DH y DL.

Saludos, Pooria.

¿Fue útil?

Solución

En el BIOS para cargar su sector de arranque desde el CD, que necesita para hacer que el CD de arranque mediante el uso de la " "estándar El Torito.

Una vez que se utiliza, tiene dos opciones
a. Emulación - emula el BIOS ya sea un disquete o disco duro, y se puede leer el núcleo a través de la INT13 llamadas con cualquiera de los dispositivos 00 o el dispositivo 80.
si. El dispositivo no emula, y se puede leer directamente desde el CD utilizando la función INT13 ExtendedRead.

Para ver cómo se hace esto, ver el cargador de Linux "ISOLINUX" - ISOLINUX.ASM

Para proporcionar un punto de partida más específica a su pregunta, especificación El Torito, sección 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.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top