¿Qué sucede después de cargar la imagen del kernel de Linux en la RAM?

9

Solo quiero saber el flujo de actividades que ocurren después de cargar la imagen del kernel de Linux en la RAM después del proceso de arranque.

Renjith G
fuente
2
No deberías querer saber eso. Lo que debes desear es aprenderlo .
alex

Respuestas:

15

A partir de Linux 2.6:

Núcleo

Después de cargarlo en la RAM, el núcleo ejecuta las siguientes funciones.

setup():

  1. Construya una tabla en RAM que describa el diseño de la memoria física.
  2. Establezca el retraso y la velocidad de repetición del teclado.
  3. Inicialice la tarjeta adaptadora de video.
  4. Inicialice el controlador de disco con los parámetros del disco duro.
  5. Verifique el bus de IBM Micro Channel.
  6. Compruebe si hay dispositivos señaladores PS / 2 (mouse de bus).
  7. Verifique el soporte de Advanced Power Management (APM).
  8. Si es compatible, cree una tabla en RAM que describa los discos duros disponibles.
  9. Si la imagen del kernel se cargó bajo en RAM, muévalo a alto.
  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 provisional (GDT).
  12. Restablezca la unidad de punto flotante (FPU).
  13. Reprograme los controladores de interrupción programables (PIC).
  14. Cambia del modo real al protegido.

startup_32():

  1. Inicializar registros de segmentación y una pila provisional.
  2. Borrar todos los bits en el eflagsregistro.
  3. Rellene el área de datos no inicializados con ceros.
  4. Se invoca decompress_kernel()para descomprimir la imagen del núcleo.

startup_32() (mismo nombre, otra función):

  1. Inicializar registros de segmentación final.
  2. Rellenar bsssegmento con ceros.
  3. Inicializar tablas de página de kernel provisionales.
  4. Habilitar paginación.
  5. Configure la pila del modo Kernel para el proceso 0.
  6. Nuevamente, borre todos los bits en el eflagsregistro.
  7. Rellene el IDT con controladores de interrupción nulos.
  8. Inicialice el primer marco de página con los parámetros del sistema.
  9. Identifica el modelo del procesador.
  10. Inicialice registros con las direcciones de GDT e IDT.

start_kernel(): Casi todos los componentes del núcleo se inicializan con esta función, estos son solo algunos.

  • Programador
  • Zonas de memoria
  • Distribuidor del sistema de amigos
  • IDT
  • SoftIRQs
  • Fecha y hora
  • Asignador de losa
  • Crear proceso 1 ( /sbin/init)

La "lista" completa está disponible en las fuentes en linux / init / main.c

En eso

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

Escriba runlevelen la consola, esto le proporciona el nivel de ejecución actual de su sistema.

Echa un vistazo a /etc/rcX.d/(o /etc/rc.d/rcX.d/), reemplazando la X con tu nivel de ejecución.
Estos son enlaces simbólicos ordenados por prioridad de ejecución. S01....significa que estos scripts comienzan muy temprano, mientras se S99....ejecutan al final del proceso de arranque. Los KXX....enlaces simbólicos hacen lo mismo pero para la secuencia de apagado.

En general, estos scripts manejan discos, redes, registros, control de dispositivos, controladores especiales, entorno y muchas otras secuencias requeridas.

meneo
fuente
LXR es una buena interfaz para leer la fuente del kernel de Linux. Buena lista, aunque tenga en cuenta que gran parte depende de la arquitectura (esta es la versión para PC).
Gilles 'SO- deja de ser malvado'
1
  • Kernel toma el control del sistema H / W tan pronto como vea "Descomprimiendo Linux ..".
  • Kernel comprueba y establece los registros del BIOS de las tarjetas gráficas y el formato de salida de la pantalla.
  • Kernel luego lee la configuración del BIOS e inicializa las interfaces básicas de hardware.
  • A continuación, los controladores en el kernel inicializan el hardware.
  • Luego, el Kernel verifica las particiones
  • Luego monta el sistema de archivos raíz
  • Luego, el núcleo inicia init, que inicia el sistema principal con todos sus programas y configuraciones.
Sen
fuente
0

El cargador de arranque salta al punto de entrada de la imagen pasando la línea de comando del kernel (si existe), y el kernel maneja el resto.

alex
fuente