【问题标题】:Does syslinux switch to protected mode after loading the kernel?加载内核后syslinux是否切换到保护模式?
【发布时间】:2011-06-18 15:38:40
【问题描述】:

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

【问题讨论】:

  • Syslinux 需要访问超过 640KB 的内存,因此它必须在从磁盘加载内核(和 initrd)时切换到保护模式。
  • 机器状态最终会是什么

标签: kernel bootloader


【解决方案1】:

我假设您说的是 syslinux 加载 Linux 内核。

看看Documentation/x86/boot.txt

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

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

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

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

【讨论】:

  • 对于linux内核,没关系,机器应该处于保护模式和linux引导协议所说的处理器状态。上下文适用于任何通用内核,例如自制原型,在这种情况下会是什么情况。与 GRUB 一样,它将遵循多重引导规范。
猜你喜欢
  • 2011-06-16
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 2016-12-26
  • 2011-07-09
  • 2018-07-15
相关资源
最近更新 更多