2009-06-19 23 views
6

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

"Fetching vars from bootloader... OK" 

Entonces, ¿qué se están pasando las variables ? ¿Cómo se transmiten las variables desde el gestor de arranque? ¿Es a través de la pila?

+0

¿No debería ser esto en serverfault? –

Respuesta

2

El kernel 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 a través de 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 luego no es desde cero. Necesita cierta inicialización, este es el trabajo del gestor de arranque.

2

Hay algunos parámetros que el kernel de Linux acepta del gestor de arranque, de los cuales lo que ahora puedo recordar 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 

Tenga una mirada en 10 boot time parameters you should know about the Linux kernel que explica algunos de los parámetros comunes.

0

Linux acepta variables del gestor 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 realicen correcciones si hay un problema con algo o para cambiar la contraseña. Así es como Ubuntu Live-CD arranca Linux si selecciona usar otra opción.

2

Para el kernel de Linux, hay varias cosas que el gestor de arranque debe decirle al kernel. Incluye cosas como la línea de comandos del kernel (como varias otras personas ya mencionadas), donde en la memoria se ha cargado initrd y su tamaño, si se está utilizando un initrd (el kernel no puede cargarlo solo, a menudo cuando se utiliza un initrd , los módulos necesarios para acceder a los dispositivos de almacenamiento se encuentran dentro del initrd, y también puede tener que realizar una configuración bastante compleja antes de poder acceder al almacenamiento), y varias probabilidades y extremos variados.

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

1

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

0

Normalmente los parámetros denominados parámetros de línea de comandos, que se pasan al módulo kernel desde el gestor de arranque. el uso del gestor de arranque de la BIOS muchos interrumpe para detectar,

memory 
HDD 
Processor 
Keyboard 
Screen 
Mouse 
ETC... 

y todas harwares detalles van a ser detectados en el arranque, que se encuentra en modo real, a continuación, pasar a estos parámetros del kernel.

Cuestiones relacionadas