Mac*_*tka 17
内核恐慌与 BSOD 相同,是不可挽救的 IIRC。然而,较小的失败是 OOPS,它表示内核中存在一些错误。
panic在 n 秒后重新启动内核的参数。在这种情况下,您可以指示 GRUB 切换到回退内核Linux 内核恐慌是当内核逻辑确定存在使正常逻辑无法继续执行或不负责任的情况时内核执行的子例程调用。
内核可以在以下情况下调用恐慌:
在 3.X 内核中,大约有 950 种不同的情况会调用恐慌。恐慌子例程首先将内核堆栈转储和 CPU 寄存器打印到控制台。然后,如果配置了崩溃的 kexec 内核,它会引导 kexec 内核。否则,恐慌例程会破坏所有自旋锁并执行紧急重启。
oops 是从 CPU 异常处理程序调用的子例程,用于在特权(即内核)模式下执行时发生的 CPU 异常。异常可能是由于内核代码中的错误、硬件故障或导致特定异常的外部条件而发生的。异常处理程序打印带有 CPU 寄存器和模块列表的内核日志。与恐慌调用不同,内核逻辑本身从不调用 CPU 异常处理程序上下文之外的 oops。
如果内核为 kexec 配置,那么 oops 将导致 kexec 内核被引导。否则,如果在执行中断处理程序时发生异常,那么 oops 将导致内核恐慌调用。否则,如果内核配置了“panic on oops”,那么oops 将导致panic 调用。否则内核退出异常处理程序并恢复执行。当内核退出异常处理程序并恢复执行时,内核的完整性受到怀疑。
CPU 异常处理程序是特定于体系结构的。它们通常在 arch/*/kernel/traps.c 中实现,并在设置中断表的特定于体系结构的内核入口代码中设置。参见例如arch/powerpc/kernel/traps.c和arch/powerpc/kernel/head_fsl_booke.S。
内核恐慌和 oops 条件都可以配置为调用一个kmsg_dump例程,您可以使用该例程将崩溃调试信息保存到 RAM 或闪存中,除非 oops 发生在中断上下文中,在这种情况下,“kmsg_dump”例程只能用于保存到 RAM,而不是 MTD。保存到 RAM 时,您有责任 a) 确保在 kexec 引导或紧急重启引导期间使用的 RAM 区域不被覆盖,以及 b) 从 kexec 内核或引导加载程序逻辑中获取内存区域。
小智 5
这是意外的程序流行为(在这种情况下,内核是一个程序)。如果发生恐慌程序停止工作。它等于Windows BsoD。KP 表示内核或模块有问题。如果它是稳定的内核 - 查看驱动程序。如果没有什么特别的并且所有驱动程序都是通用的,则可能是硬件问题。