linux内核是否假设它位于特定的物理地址?

时间:2015-12-18 11:41:36

标签: linux-kernel sparc

引导程序可以将内核放在内存中的任意物理地址吗? linux内核是否认为它已被放置在特定地址?

例如,在Sparc中,内核_start符号位于虚拟地址= 0xf0004000,通常位于物理地址= 0x00004000。 引导加载程序是否可以将内核置于任意物理地址(例如0x10004000),前提是它在引导加载程序的页表中正确映射?如果不是,那么特定于内核体系结构的假定物理位置是什么?

2 个答案:

答案 0 :(得分:4)

内核确实希望在特定位置。该位置是特定于架构的。你可以reconfigure and recompile内核来调整它。

我最近正在研究x86 / x86_64,这是well documented。我希望在那里找到Sparc文档,虽然它不会跳出来。但是,可以找到一些信息here

相关位似乎是:

  

加载的引导扇区是你在/boot/first.b中找到的   你的Linux-Sparc系统,只有512字节。它被加载到   地址0x4000,其角色是从磁盘/boot/second.b和   把它放到地址0x280000(2.5兆);地址已被选中   因为Sparc规范规定至少有三兆字节   在引导时映射RAM。

答案 1 :(得分:0)

如今,即将推出的Linux内核版本正在进行一些更改,以便将其配置为将内核映像置于任何位置。

最新信息可以在内核邮件列表中找到。

类似的讨论是here