引导程序可以将内核放在内存中的任意物理地址吗? linux内核是否认为它已被放置在特定地址?
例如,在Sparc中,内核_start符号位于虚拟地址= 0xf0004000,通常位于物理地址= 0x00004000。 引导加载程序是否可以将内核置于任意物理地址(例如0x10004000),前提是它在引导加载程序的页表中正确映射?如果不是,那么特定于内核体系结构的假定物理位置是什么?
答案 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)