Qué sucede después de cargar la image del kernel de Linux en la RAM

Solo quiero saber el flujo de actividades que suceden después de cargar la image del kernel de Linux en la memory RAM después del process de arranque.

A partir de Linux 2.6:

Núcleo

Después de cargarse en la RAM, el kernel ejecuta las siguientes funciones.

setup() :

  1. Construya una tabla en RAM que describa el layout de la memory física.
  2. Establece el retardo y la tasa de repetición del keyboard.
  3. Inicializa la tarjeta adaptadora de video.
  4. Inicialice el controller de disco con los parameters del disco duro.
  5. Verifique el bus de microcanal de IBM.
  6. Compruebe si hay dispositivos señaladores PS / 2 (mouse de bus).
  7. Verifique la compatibilidad con Advanced Power Management (APM).
  8. Si es compatible, cree una tabla en RAM que describa los discos duros disponibles.
  9. Si la image del kernel se cargó baja en RAM, muévala a alta.
  10. Establezca el pin A20 (un truco de compatibilidad para los antiguos microprocesadores 8088).
  11. Configure una Tabla de Descriptor de Interrupción provisional (IDT) y una Tabla de Descriptor Global (GDT) provisional.
  12. Restablezca la unidad de punto flotante (FPU).
  13. Reprograme los Controladores de Interrupción Progtwigbles (PIC).
  14. Cambiar del modo real al modo protegido.

startup_32() :

  1. Inicializa los loggings de segmentación y una stack provisional.
  2. Borre todos los bits en el logging eflags .
  3. Complete el área de datos sin inicializar con ceros.
  4. Invoca decompress_kernel() para descomprimir la image del kernel.

startup_32() (mismo nombre, otra function):

  1. Inicializa los loggings finales de segmentación.
  2. Rellene el segmento bss con ceros.
  3. Inicializar tablas de páginas provisionales del kernel.
  4. Habilita la pagination.
  5. Configurar la stack del modo Kernel para el process 0.
  6. Nuevamente, borre todos los bits en el logging eflags .
  7. Llene el IDT con controlleres de interrupción nula.
  8. Inicialice el primer cuadro de página con los parameters del sistema.
  9. Identifica el model del procesador.
  10. Inicializar loggings con las direcciones de GDT e IDT.

start_kernel() : casi todos los componentes del kernel son inicializados por esta function, estos son solo unos pocos.

  • Progtwigdor
  • Zonas de memory
  • Distribuidor del sistema Buddy
  • IDT
  • SoftIRQs
  • Fecha y hora
  • Asignador de losa
  • Crear process 1 ( /sbin/init )

La "list" completa está disponible en las fonts en linux / init / main.c

En eso

Init inicia todo el process de usuario necesario para llevar el sistema al estado deseado, esta rutina depende en gran medida de la distribución y el nivel de ejecución invocado.

Escriba runlevel en la console, esto le proporciona el nivel de ejecución actual de su sistema.

Eche un vistazo a /etc/rcX.d/ (o /etc/rc.d/rcX.d/ ), reemplazando la X con su nivel de ejecución.
Estos son enlaces simbólicos orderados por prioridad de ejecución. S01.... significa que este script se inicia muy temprano, mientras que S99.... ejecuta al final del process de arranque. Los KXX.... simbólicos KXX.... hacen lo mismo pero para la secuencia de apagado.

En general, estos scripts manejan discos, networkinges, loggings, control de dispositivos, controlleres especiales, entornos y muchas otras secuencias requeridas.

  • Kernel toma el control del sistema H / W tan pronto como vea "Descomprimir Linux …".
  • Kernel comtesting y establece los loggings de la BIOS de las tarjetas gráficas y el formatting de salida de la pantalla.
  • Kernel luego lee la configuration del BIOS e inicializa las interfaces básicas de hardware.
  • A continuación, los controlleres en el kernel inicializan el hardware.
  • Luego, el Kernel verifica las particiones
  • Luego monta el sistema de files raíz
  • Luego, el kernel inicia init, que inicia el sistema principal con todos sus progtwigs y configuraciones.

El gestor de arranque salta al punto de input de la image pasando la línea de command del kernel (si existe), y el kernel maneja el rest.