2010-03-03 9 views
5

¿Cómo puedo iniciar mi pequeña consola de un disco/CD/USB, con la siguiente configuración:arrancar desde un disco/CD/USB

  1. Los medios que quiero utilizar será totalmente crudo es decir, sin sistema de archivos en él.
  2. Cuando inserto los medios en mi sistema o supongo que ya están insertados, quiero 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, e inicia 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.

+0

Esos ejemplos pueden ser un poco demasiado largos para SO, independientemente de cuánto nos agradece de antemano. Hay varios cargadores de arranque de código abierto que puedes mirar, y puedes tomar clases en tu escuela local. –

Respuesta

3

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

También tenga en cuenta que una PC arranca en modo de 16 bits. Debe cargar el kernel o el gestor de arranque de segunda instancia desde ese código en la memoria, y luego pasar a ese código (y tal vez cambiar la CPU al 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 
+0

+1 buena respuesta. – Tronic

+0

he estudiado y eliminado con éxito mi curso de organización informática y lenguaje ensamblador, pero no entiendo el código anterior ... su lenguaje ensamblador parcial y parcialmente algo más ...¿Puedes decirme qué tipo de lenguaje ensamblador es ese? también por favor recomienda algunos libros. – sp3tsnaz

+0

además tengo otra pregunta ... obtuve el código de cargador de arranque y una buena explicación de otro sitio ... pero no entiendo cómo se ejecutarán las instrucciones anteriores directamente sin compilación? Además, una vez que haya arrancado con éxito mi pequeño sistema operativo, ¿cómo puedo agregar un compilador o algunos ejecutables para que puedan ejecutarse como un sistema operativo? por ejemplo, cuando Windows arranca tiene algunos programas de trabajo preinstalados que definitivamente no son solo instrucciones de asm ... ¿deben compilarse o algo así? ¿cómo sucede eso? por favor sea descriptivo. – sp3tsnaz

2

Thas el trabajo de un gestor 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 se carga un bios, comprueba si el medio contiene el MBR. verifica la firma MBR 0xAA55 que debe estar presente como los últimos 2 bytes de MBR.

  2. A continuación, el BIOS carga el cargador de arranque en la memoria RAM en la dirección 0x7C00

  3. A continuación, el gestor de arranque es el que realmente carga el meollo en la memoria, mediante la lectura del 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 secundario.

  5. cargador de arranque secundario será cargado por su gestor de arranque principal.

  6. cargador 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. gestor de arranque secundario carga el kernel de 32 bits desde el disco en la memoria, y luego salta al código del núcleo

Para más información se 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.

Cuestiones relacionadas