【问题标题】:kernel - booting address. Why?内核 - 引导地址。为什么?
【发布时间】:2015-03-08 00:41:00
【问题描述】:

上下文:

阅读内核如何引导。

我在那个页面上: http://www.linuxjournal.com/article/2239

它说内核在 0x10000 处加载。

问题:

为什么是这个地址?

【问题讨论】:

  • 因为 BIOS 想要这样...
  • 请注意,这篇文章太旧了,基本上文章中提到的什么都没有不再存在。十多年来,即使是图像也太大而无法在该地址加载。
  • @AnttiHaapala:啊?那么,目前的规则是什么?

标签: linux-kernel kernel


【解决方案1】:

从 0x00007E00 到 0x0007FFFF 有一个 480.5 KiB 的区域,保证是可供操作系统使用的空闲 RAM。 重要的是要知道not all physical addresses are free, usable RAM。有些是为 BIOS 数据保留的,用作视频内存或其他原因。

看到廉价的 BIOS 和硬件无视标准或尝试进行智能黑客攻击但最终破坏事物的情况并不少见。这个内存区域不受所有恶作剧的影响,它是加载数据的好地方,而且看起来确实运行良好。

您可能知道,引导扇区通常位于从 0x00007C00 到 0x00007DFF,正如您的文章所提到的,Linux 将该扇区重新定位到 0x00090000,然后从 0x00010000 开始加载内核的其余部分。这是一个很好的位置,因为它是低内存中最大(几乎半 MiB)的 RAM 块,保证可以免费使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-19
    • 2018-07-06
    • 2011-11-08
    • 2014-01-17
    • 2011-03-23
    • 2014-11-13
    • 2011-05-31
    • 2019-07-03
    相关资源
    最近更新 更多