linux 内核是否假定它位于特定的物理地址?
Does linux kernel assume that it is located at a particular physical address?
引导加载程序可以将内核放置在内存中的任意物理地址吗? linux 内核是否假设它已被放置在特定地址?
例如,在Sparc中,内核_start符号位于虚拟地址=0xf0004000,通常位于物理地址=0x00004000。
引导加载程序能否将内核放置在任意物理地址,比如 0x10004000,前提是它在引导加载程序的页表中正确映射?如果不是,内核架构的假定物理位置是否特定?
内核确实希望位于特定位置。该位置是特定于体系结构的。你可以reconfigure and recompile内核来调整这个。
不过,我最近正在研究这个 x86/x86_64,也就是 well documented. I would expect to find Sparc documentation there, though it doesn't jump out at me. Some information can be found here。
相关位似乎是:
The boot sector that gets loaded is what you find in /boot/first.b in
your Linux-Sparc system, and is a bare 512 bytes. It is loaded to
address 0x4000 and its role is retrieving from disk /boot/second.b and
putting it to address 0x280000 (2.5 megs); the address has been chosen
because the Sparc specifications state that at least three megabytes
of RAM are mapped at boot time.
现在即将推出的 Linux 内核版本正在进行一些更改,使其可配置为将内核映像放置在任何地方。
最新信息可以在内核邮件列表中找到。
类似的讨论是here。
引导加载程序可以将内核放置在内存中的任意物理地址吗? linux 内核是否假设它已被放置在特定地址?
例如,在Sparc中,内核_start符号位于虚拟地址=0xf0004000,通常位于物理地址=0x00004000。 引导加载程序能否将内核放置在任意物理地址,比如 0x10004000,前提是它在引导加载程序的页表中正确映射?如果不是,内核架构的假定物理位置是否特定?
内核确实希望位于特定位置。该位置是特定于体系结构的。你可以reconfigure and recompile内核来调整这个。
不过,我最近正在研究这个 x86/x86_64,也就是 well documented. I would expect to find Sparc documentation there, though it doesn't jump out at me. Some information can be found here。
相关位似乎是:
The boot sector that gets loaded is what you find in /boot/first.b in your Linux-Sparc system, and is a bare 512 bytes. It is loaded to address 0x4000 and its role is retrieving from disk /boot/second.b and putting it to address 0x280000 (2.5 megs); the address has been chosen because the Sparc specifications state that at least three megabytes of RAM are mapped at boot time.
现在即将推出的 Linux 内核版本正在进行一些更改,使其可配置为将内核映像放置在任何地方。
最新信息可以在内核邮件列表中找到。
类似的讨论是here。