GNU/Linux >> Tutoriales Linux >  >> Linux

¿Se carga todo el núcleo en la memoria al arrancar?

Todo el núcleo se carga en la memoria durante el arranque, normalmente junto con un initramfs hoy en día. (Todavía es posible configurar un sistema para que arranque sin un initramfs pero eso es inusual en computadoras de escritorio y servidores).

El initramfs La función de es proporcionar la funcionalidad necesaria para montar los sistemas de archivos "reales" y continuar arrancando el sistema. Eso implica módulos del kernel y también varios binarios:necesita al menos udev , tal vez algo de trabajo en red, y kmod que carga módulos.

Los módulos se pueden cargar en el núcleo después del arranque, por lo que no hay una preparación especial del núcleo por parte del initramfs . Se pueden almacenar en cualquier lugar:el initramfs , /lib/modules en el sistema de archivos real, en un árbol de desarrollo si está desarrollando un módulo... El initramfs solo necesita contener los módulos que son necesarios para montar el sistema de archivos raíz (que contiene el resto).


Todo el kernel (pero no sus módulos) se cargará en la memoria. Si hay módulos que el kernel necesitará antes de que cualquier sistema de archivos esté disponible (esto generalmente significa los controladores para los sistemas de archivos y sus dispositivos), entonces esos módulos estarán en initramfs (en la memoria), y el kernel los cargará desde allí. Otros módulos se pueden cargar más tarde desde el sistema de archivos.


El kernel en las configuraciones modernas de Linux se basa en gran medida en módulos, es decir, el kernel propiamente dicho (cargado en el arranque en la RAM) incluye solo la funcionalidad mínima, todo el resto se compila como módulos (cargables en tiempo de ejecución). Para hacer que esto funcione incluso cuando, p. los dispositivos o sistemas de archivos necesarios para el arranque son módulos, un initramfs se carga con el kernel (como su nombre lo indica, esta es un área de RAM con un sistema de archivos simple, montado en el arranque). Este sistema de archivos temporal está montado en / y contiene programas de inicio y los módulos necesarios. Una vez que el inicio en initramfs está hecho, Linux ejecuta un pivot_root(8) , montando el verdadero / y lanzando el initramfs contenidos.

El punto de esta complejidad es que, p. una distribución puede compilar uno kernel (kernel mínimo y conjunto completo de módulos), y al instalar el kernel, cree un initramfs adaptado al hardware y la configuración de la máquina de destino. Todo esto es necesario debido a la gran variedad de dispositivos y configuraciones de "Ordenadores personales".


Linux
  1. Linux:¿qué implica el diseño de la memoria del kernel virtual en Dmesg?

  2. Cómo cambiar el kernel predeterminado (arranque desde el kernel antiguo) en CentOS/RHEL 8

  3. Controlador de dispositivo del kernel de Linux a DMA desde un dispositivo a la memoria del espacio del usuario

  4. Cambiar el tamaño de la partición de arranque

  5. Omitir el módulo del kernel en el arranque

Listar la información del módulo del kernel cargado usando el comando Lsmod

CentOS / RHEL 6:cómo iniciar en modo de usuario único

¿Cómo limpiar el directorio /boot en LINUX Mint?

¿Cómo monitorear el uso de la memoria dedicada al kernel?

¿Cuál es la diferencia entre los controladores del kernel y los módulos del kernel?

¿Adónde va la memoria restante de vm.overcommit_ratio?