我正在使用 Tianocore 来引导 Linux,我知道 Linux 可以利用 Tianocore 运行时服务(重启、update_capsule 等),这意味着部分 Tianocore 代码仍然没有被 linux 修改。Linux 永远不会触及那段内存。
我的问题是,它是 Tianocore 代码的一部分(与运行时服务相关)还是整个 Tianocore 即使在启动后仍然不受 Linux 内核的影响?
而且,Linux 内核如何知道包含 Tianocore 映像的内存区域?
UEFI 实现可以分配许多内存类型(使用 AllocatePool 或 AllocatePages BootServices),其中一些将保持不被 UEFI 感知操作系统所触及,其他将被释放。所有不应释放的内存区域也将添加到 e820 内存映射中,以防止旧版操作系统损坏它们。
通常,只有一小部分分配的内存在 ExitBS 事件之后没有被释放:运行时服务代码和数据、ACPI 表和 MMIO 区域。