我想问一下在启动过程中是否将GRUB切换到了保护模式,还是Linux内核呢。 而且我想问一下 – 内核本身(vmlinuz)是一个ELF还是纯二进制格式? 谢谢。
GRUB 的确让你处于保护模式。
GRUB 多重引导规范(版本0.6.96)第3.2节告诉你这一点
'CR0'
位31(PG)必须清零。 位0(PE)必须设置。 其他位全部未定义。
而CR0寄存器映射告诉你系统应该处于保护模式。
Linux不是一个多引导内核,不依赖某个引导加载程序来切换PM,它遵循Linux引导协议 。 但是linux做保护模式切换本身,并不依赖于bootloader
检查: http : //lxr.linux.no/#linux+v2.6.39/arch/x86/boot/main.c
这里调用go_to_protected_mode(); 当然后调用protected_mode_jump () ,然后做CR0东西(设置位0)
(另一位说分页是禁用的)
编辑
我可以弄清楚的是, GRUB可以检测到Linux启动协议 (GRUB2,遗留的也应该),并加载Linux的内存,但不切换到保护模式。 看看这个链接: http : //www.gnu.org/software/grub/manual/grub.html#GNU_002fLinux和该链接页面的第16部分。
根据http://www.moses.uklinux.net/patches/lki-1.html Linux内核是一个ELF二进制文件。 我很确定,这是Linux切换到保护模式,而不是启动加载程序。 本页同意: http : //oss.sgi.com/LDP/HOWTO/coreel-HOWTO/linux_boot_process.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。