我想问一下,启动时将CPU切换到保护模式是GRUB还是Linux内核。我还想问 - 内核本身(vmlinuz)是 ELF 还是纯二进制格式?谢谢。
GRUB does让你进入保护模式。
GRUB多重引导规范(版本 0.6.96)第 3.2 节 http://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Machine-state告诉你这个
‘CR0’
位 31 (PG) 必须清零。必须设置位 0 (PE)。其他位均未定义。
And CR0 寄存器映射 http://en.wikipedia.org/wiki/Control_register#CR0告诉你系统should处于保护模式。
Linux 不是一个多重引导内核,并且不依赖某些引导加载程序在 PM 中进行切换,它遵循Linux 启动协议 http://lxr.linux.no/#linux+v2.6.25.6/Documentation/i386/boot.txt。但是linux自己进行保护模式切换,并不依赖于bootloader
check : http://lxr.linux.no/#linux+v2.6.39/arch/x86/boot/main.c http://lxr.linux.no/#linux+v2.6.39/arch/x86/boot/main.c
这里调用的是go_to_protected_mode();
然后什么时候打电话protected_mode_jump ()
然后执行CR0
东西(设置位 0)
(另一位表示分页已禁用)
EDIT
我能弄清楚的是GRUB可以检测linux启动协议 http://www.gnu.org/software/grub/manual/grub.html#GNU_002fLinux(GRUB2 和旧版也应该)并将 linux 加载到内存上,但是does not切换到保护模式。看看这个链接:http://www.gnu.org/software/grub/manual/grub.html#GNU_002fLinux http://www.gnu.org/software/grub/manual/grub.html#GNU_002fLinux以及此链接中页面的第 16 部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)