2011-01-27 29 views
13

Me gustaría preguntar si es GRUB que cambie la CPU al modo protegido durante el arranque o es el kernel de Linux el que lo hace. Y también me gustaría preguntar: ¿el kernel mismo (vmlinuz) es un ELF o es un formato binario simple? Gracias.¿Cambia GRUB al modo protegido?

+0

¿Estás preguntando sobre grub legacy o grub2? –

+1

Estoy interesado en ambas versiones de grub. – mnc

+0

Creo que es seguro asumir que ambas versiones de Grub y LILO funcionarían exactamente igual en términos de sus preguntas (porque es el mismo kernel que están arrancando). –

Respuesta

13

GRUB hace te deja en modo protegido.

la larva Multiboot Specification (version 0.6.96) Section 3.2 le dice que esto

‘CR0’

bit 31 (PG) se debe borrar. Bit 0 (PE) debe estar configurado. Otros bits no están definidos.

Y CR0 Register mapping te dice que el sistema debe estar en modo protegido.


Linux no es un núcleo de arranque múltiple y no se basa en algún gestor de arranque para la conmutación de la PM, se deduce la Linux Boot Protocol. Pero Linux no cambiar el modo protegido en sí, y no se basa en el gestor de arranque

cheque: http://lxr.linux.no/#linux+v2.6.39/arch/x86/boot/main.c

Aquí se llama go_to_protected_mode(); cuando se llama a continuación protected_mode_jump() que luego se hace el CR0 cosas (establece el bit 0)

(La otra parte dice que la paginación está desactivada)

EDITAR

Lo que puedo averiguar es que GRUB can detect linux boot protocol (GRUB2, y legado también debería) y carga Linux en la memoria, pero no cambia a modo protegido. Eche un vistazo a este enlace: http://www.gnu.org/software/grub/manual/grub.html#GNU_002fLinux y la sección 16 de la página en este enlace.

+0

+1 para una respuesta correcta. Sin embargo, su pregunta está etiquetada como "linux", por lo que podría considerar reescribir su primera línea como "En otros sistemas operativos, GRUB _desde_ lo colocará en modo protegido, pero no en Linux" (o similar). – Nemo

+0

en realidad estoy investigando para defender la línea anterior, qué sucede exactamente, y hay algo de confusión. pero no hay confusión de que Linux hace el cambio cuando se inicia Linux. Y para otros kernels compatibles con arranque múltiple, grub hace el cambio. – phoxis

+0

Bastante justo. Estoy seguro de que Linux comienza en modo real porque una vez tuve que parchar ese código. De todos modos, cuando recibas una respuesta completa, creo que deberías abrir con la respuesta para Linux. – Nemo

Cuestiones relacionadas