Pregunta

¿Hay algo que el núcleo necesita obtener del gestor de arranque? Por lo general, el núcleo es capaz de abrir un sistema desde cero, entonces, ¿por qué requiere algo del gestor de arranque? He visto mensajes de arranque del kernel como este.

"Fetching vars from bootloader... OK"

Entonces, ¿qué exactamente se pasan las variables? Además, ¿cómo se pasan las variables desde el cargador de arranque? ¿Es a través de la pila?

¿Fue útil?

Solución

El núcleo acepta las llamadas opciones de línea de comandos, que están basadas en texto. Esto es muy útil, porque puedes hacer muchas cosas sin tener que recompilar tu kernel. En cuanto al argumento que pasa, depende de la arquitectura. En ARM, se realiza mediante un puntero a una ubicación en la memoria, o una ubicación fija en la memoria.

Así es como se hace en ARM . Por lo general, un núcleo no es capaz de arrancar la máquina desde cero. Puede ser de la BIOS, pero entonces no es desde cero. Necesita un poco de inicialización, este es el trabajo del gestor de arranque.

Otros consejos

Hay algunos parámetros que el kernel de Linux acepta del gestor de arranque, de lo que puedo recordar ahora es el parámetro vga . Por ejemplo:

kernel /vmlinuz-2.6.30 root=/dev/disk/by-uuid/3999cb7d-8e1e-4daf-9cce-3f49a02b00f2 ro vga=0x318

Eche un vistazo a 10 parámetros de tiempo de arranque que debe conocer sobre el kernel de Linux que explica algunos de los parámetros comunes.

Para el núcleo de Linux, hay varias cosas que el gestor de arranque tiene que decirle al núcleo. Incluye cosas como la línea de comando del kernel (como ya mencionaron otras personas), donde en la memoria el initrd se ha cargado y su tamaño, si se usa un initrd (el núcleo no puede cargarlo por sí mismo; a menudo cuando se usa un initrd, los módulos necesarios para acceder a los dispositivos de almacenamiento están dentro del initrd, y también puede tener que hacerlo alguna configuración bastante compleja antes de poder acceder al almacenamiento), y varias posibilidades y finales variados.

Consulte Documentation / x86 / boot.txt (enlace a la versión 2.6.30) para obtener más detalles sobre la arquitectura tradicional x86 (tanto de 32 bits como de 64 bits), incluida la forma en que estas variables se pasan al código de configuración del núcleo.

El gestor de arranque no usa una pila para pasar argumentos al núcleo. Al menos en el caso de Linux, hay una estructura de memoria bastante compleja que llena el gestor de arranque y que el núcleo sabe cómo analizar. Así es como el gestor de arranque señala el núcleo a su línea de comando. Consulte Documentaion / x86 / boot.txt para más información.

Linux acepta variables del cargador de arranque para permitir el uso de ciertas opciones. Sé que una de las cosas que puede hacer es hacerlo para que no tenga que iniciar sesión (modo de recuperación) y hay varias otras opciones. Principalmente solo permite que se hagan correcciones si hay un problema con algo o por el cambio de contraseña. Así es como Ubuntu Live-CD arranca Linux si selecciona utilizar otra opción.

Normalmente, los parámetros denominados parámetros de línea de comando, que se pasan al módulo del núcleo desde el cargador de arranque. El gestor de arranque utiliza muchas de las interrupciones del BIOS para detectar,

memory
HDD
Processor
Keyboard
Screen
Mouse
ETC...

y todos los detalles del harwares se detectarán en el momento del arranque, es decir, en modo real, luego pase estos parámetros al Kernel.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top