我读过kexec/kdump工具,我们知道崩溃/恐慌的内核是通过/proc/vmcore提供的。
我听说人们使用基于kexec的引导来绕过EFI/BIOS/FW初始化阶段,以加快他们在生产机器上的操作系统修补活动。这意味着这些机器在其剩余的处理/正常运行时间中继续使用捕获内核。
我找不到一个明确的提到捕获内核的能力,以回收旧的内存区域,已经保存下来作为一个kdump。捕获内核可以在保存转储之后丢弃那些保存下来的内存内容吗?
确实,由于捕获内核是“可重定位的”内核,所以它将从“非标准”内存位置运行,但它是否能够利用/释放所有其他内存,并继续用作生产用途的主要内核?
发布于 2018-12-06 08:05:43
标准的kexec内核和恐慌内核之间有很大的区别。
“正常”的kexec内核将从旧内核接收完整的物理内存映射(例如,E820映射在x86机器上,或IBM上的设备树),因此它初始化了整个RAM的所有内存管理结构。
另一方面,恐慌内核将得到一个修改后的映射,其中只包括在第一个内核中保留的带有crashkernel=参数的区域。原始内核的RAM映射分别在ELF核心标头(cf )中传递。elfcorehdr=内核参数),而恐慌内核只能通过/proc/vmcore特殊文件访问它。
理论上,剩余的RAM可能会在某个时候被热插拔,但这还没有实现,而且AFAIK甚至没有人致力于实现它。
https://unix.stackexchange.com/questions/427180
复制相似问题