加载内核后syslinux是否切换到保护模式?

时间:2011-06-18 15:38:41

标签: kernel bootloader

加载内核后syslinux是否切换到保护模式? syslinux引导内核后的机器状态是什么。

1 个答案:

答案 0 :(得分:2)

我假设您正在讨论加载Linux内核的syslinux。

看看Documentation/x86/boot.txt

Linux内核有一个小的实模式设置代码(可在arch/x86/boot/找到),它在转换到保护模式之前做了一些必须完成的事情(大多数情况下查询实模式BIOS)信息)。引导加载程序将此部分加载到内存不足(低于640k)。

较旧的内核足够小以适应不到640k的连续低内存,因此引导加载程序将整个内核加载到低内存中,并且可以在实模式下完成所有操作。较新的内核更大(通常大约4M),因此它们必须加载到高内存(大约1M)。为此,引导加载程序必须更改为保护模式以将内核置于其中,更改回实模式以调用BIOS以从磁盘读取更多扇区,并在跳转之前更改回实模式到内核​​设置代码(最后一次再次转换到保护模式)。

所以,为了回答你的问题,它恰恰相反:它在加载内核后将保护模式切换到实模式。

处理器状态如我在上面链接的文档中所述:实模式CS指向实模式设置代码的开始加上0x20(使CS:IP指向第二个512字节实模式设置的开始)代码扇区),其余的段寄存器指向实模式设置代码(第一扇区)的开始,并且在实模式设置代码的前两个扇区中找到的头中填充了几个参数。通用寄存器的内容无关紧要。