para duro disco desde configurar como arrancar acer c assembly operating-system

duro - arrancar desde un disco/cd/usb



configurar bios para arrancar desde usb windows 10 (2)

Tiene el trabajo de un cargador de arranque. El gestor de arranque debe estar presente en los primeros 512 bytes de un Disco Duro. Esta ubicación se llama MBR (registro de inicio maestro)

  1. Cuando la BIOS se carga, verifica si el medio contiene el MBR. verifica la firma MBR 0xAA55 que debe estar presente como los últimos 2 bytes de MBR.

  2. Luego, el BIOS carga el BootLoader en la RAM en la dirección 0x7C00

  3. Entonces, el gestor de arranque es quien realmente carga el núcleo en la memoria, leyendo el sistema de archivos.

  4. por lo general, no puede caber en todo el código en 512 bytes, por lo que habrá un cargador de arranque secondory.

  5. El gestor de arranque principal cargará el gestor de arranque secundario.

  6. El gestor de arranque secundario carga IDT y GDT (tabla de vectores Interupt y tabla de descriptores globales). Permite que la puerta A20 se mueva al modo protegido.

  7. El cargador de arranque secundario carga el núcleo de 32 bits del disco en la memoria, luego salta al código del kernel

Para obtener más información, puede descargar Linux kernel v0.01 (Primera versión). Mira cómo está hecho. para mi sorpresa, el código para leer el sistema de archivos + el código para pasar al modo protegido se ajusta a 512 bytes de código.

¿Cómo puedo iniciar mi pequeña consola desde un disco / cd / usb, con la siguiente configuración:

  1. Los medios que quiero usar estarán completamente sin procesar, es decir, sin sistema de archivos.
  2. Cuando inserto los medios en mi sistema o supongo que ya están insertados, quiero hacer que arranque mi propio sistema operativo pequeño.

El procedimiento que quiero utilizar es que cuando mi sistema se inicia, arranca desde el disco / cd / usb, y comienza mi sistema operativo. Por ahora imagina que el sistema operativo va a ser un programa hola mundial. De hecho, quiero ver cómo se implementan los sistemas operativos del mundo real.


Un gestor de arranque debe ser de 512 bytes. No menos no mas Y debe terminar con la firma de arranque de PC estándar: 0xAA55.

También tenga en cuenta que una PC arranca en modo de 16 bits. Necesita cargar su kernel o gestor de arranque de segunda instancia desde ese código en la memoria, y luego pasar a ese código (y quizás cambiar la CPU a modo protegido de 32 bits).

Por ejemplo (nasm):

BITS 16 ; Your assembly code here (510 bytes max)... jmp $ ; Fills the remaining space with 0 times 510 - ( $ - $$ ) db 0 ; Boot signature dw 0xAA55