A partir de Linux 2.6:
Núcleo
Después de cargarlo en la RAM, el núcleo ejecuta las siguientes funciones.
setup()
:
- Construya una tabla en RAM que describa el diseño de la memoria física.
- Establezca el retraso y la velocidad de repetición del teclado.
- Inicialice la tarjeta adaptadora de video.
- Inicialice el controlador de disco con los parámetros del disco duro.
- Verifique el bus de IBM Micro Channel.
- Compruebe si hay dispositivos señaladores PS / 2 (mouse de bus).
- Verifique el soporte de Advanced Power Management (APM).
- Si es compatible, cree una tabla en RAM que describa los discos duros disponibles.
- Si la imagen del kernel se cargó bajo en RAM, muévalo a alto.
- Establezca el pin A20 (un truco de compatibilidad para los antiguos microprocesadores 8088).
- Configure una tabla de descriptor de interrupción provisional (IDT) y una tabla de descriptor global provisional (GDT).
- Restablezca la unidad de punto flotante (FPU).
- Reprograme los controladores de interrupción programables (PIC).
- Cambia del modo real al protegido.
startup_32()
:
- Inicializar registros de segmentación y una pila provisional.
- Borrar todos los bits en el
eflags
registro.
- Rellene el área de datos no inicializados con ceros.
- Se invoca
decompress_kernel()
para descomprimir la imagen del núcleo.
startup_32()
(mismo nombre, otra función):
- Inicializar registros de segmentación final.
- Rellenar
bss
segmento con ceros.
- Inicializar tablas de página de kernel provisionales.
- Habilitar paginación.
- Configure la pila del modo Kernel para el proceso 0.
- Nuevamente, borre todos los bits en el
eflags
registro.
- Rellene el IDT con controladores de interrupción nulos.
- Inicialice el primer marco de página con los parámetros del sistema.
- Identifica el modelo del procesador.
- 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 runlevel
en 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.