我正在尝试理解在x86和ARM架构上引导linux过程,并想知道在x86上引导linux和在ARM上引导linux之间的区别。
我在x86上浏览了linux引导协议,发现内核是分两步加载的。
https://www.kernel.org/doc/Documentation/x86/boot.txt
1)加载实模式内核代码,分配命令行参数。
2)加载保护模式(非实数)内核代码。
是不是因为x86架构中不寻常的地址空间?
我在ARM端没有看到这样的行为,在ARM端,linux Image作为一个整体被加载到CPU地址中,映射到连续位置的逻辑内核空间。
有没有人能告诉我这两种架构上的linux启动过程?
发布于 2014-03-27 23:29:19
在x86上执行两步操作的原因是因为您提到的实模式切换。为了保持与“实”x86软件的向后兼容性,所有的x86处理器最初都是在实模式下出现的,实际上在这种模式下一切都是相当有限的(可寻址内存、寄存器大小等)。)。因此,最初使用的是最小的负载,它只是切换到保护模式,绕过一些旧的黑客(http://www.win.tue.nl/~aeb/linux/kbd/A20.html),然后加载一个合适的操作系统。
arm不会受到这类事情的阻碍,因为他们比Intel作为32位机器起步晚,所以在Arm上要处理的遗留问题更少。
https://stackoverflow.com/questions/22690110
复制相似问题